美文网首页
NodeJS 学习笔记

NodeJS 学习笔记

作者: 止风者 | 来源:发表于2016-05-26 22:06 被阅读0次

    NodeJS
    使用 CommonJS 模块系统。
    整个项目都是由一个个模块组成的,模块的存在形式是文件,他们一一对应。
    模块中,通过exports来输出函数、变量和对象,供调用者使用。
    通过require() 来加载各模块。

    require

    语法 解释 举例
    require('http') 内置模块,核心模块,原生模块,核心模块在 Node 源代码的 lib/ 文件夹中定义
    require('/home/marco/foo.js') 绝对路径,如果没有找到确切的文件(比如没有后缀的文件),Node 将尝试给所需的文件名​​添加 .js 后缀再加载,然后再尝试 .node。.js 文件被视为 JavaScript 文本文件,而 .node 文件被视为已编译的插件模块,用 dlopen 加载。
    require('./server') “./”表示当前路径,后面跟的是相对路径。对目录的加载,细节请看下面专门介绍
    require("../lib/server") ../表示上一级目录,后面跟的也是相对路径

    文件模块

    Node 有一个简单的模块加载系统。在 Node 中,文件和模块一一对应。
    如果没有找到确切的文件,Node 将尝试给所需的文件名​​添加 .js 后缀再加载,然后再尝试 .node。
    .js 文件被视为 JavaScript 文本文件,而 .node 文件被视为已编译的插件模块,用 dlopen 加载。
    模块以 '/' 开头表示使用文件的绝对路径。
    模块以 './' 开头表示调用 require() 时使用相对路径。
    如果不以 '/' 或'./' 开头,该模块可以是一个“核心模块”,也可是一个从 node_modules 文件夹中加载的模块。
    如果传递给 require() 有模块标识符是不是原生模块,而且不以 '/'、'../' 或'./' 开头,那么 Node 从当前模块的父目录+/node_modules 这个位置尝试加载。
    如果还是没有找到,那么它跳到上层目录并依此类推,直到找到模块,或者达到根目录为止。

    以文件夹作为模块

    Node 允许用户在独立的目录中方便地组织程序,然后提供单一入口指向该库。有三种方式可以将文件夹作为 require() 的参数。
    第一种方式是在该文件夹中创建 package.json 文件,指定一个 main 模块。一个典型的 package.json 文件可能看起来像这样:
    { "name" : "some-library",
    "main" : "./lib/some-library.js" }
    如果此文件位于 ./some-library 文件夹,则 require('./some-library') 会尝试加载 ./some-library/lib/some-library.js。
    这是 Node 能找到 package.json 文件的情况。
    如果在该目录中没有 package.json 文件,那么 Node 将尝试加载该目录中的 index.js 或 index.node 文件。例如,如果上面的例子找不到 package.json,那么 require('./some-library') 将试图加载:
    ./some-library/index.js
    ./some-library/index.node

    require.resolve()

    在Node.js中,可以使用require.resolve函数来查询某个模块文件的带有完整绝对路径的文件名,代码如下所示。
    require.resolve('./testModule.js');
    在这行代码中,我们使用require.resolve函数来查询当前目录下testModule.js模块文件的带有完整绝对路径的模块文件名。
    注意:使用require.resolve函数查询模块文件名时并不会加载该模块。

    建议

    一个可以工作的建议的目录结构:
    比方说,我们希望 /usr/lib/node/<some-package>/<some-version> 文件夹中包含某个包的特定版本的内容。然后在 node_modules 文件夹用上文描述的方式查找依赖。

    ng-repeat数组有重复值的处理方法

    <li ng-repeat="item in items track by $index">{{ item }}</li>

    相关文章

      网友评论

          本文标题:NodeJS 学习笔记

          本文链接:https://www.haomeiwen.com/subject/cuhxdttx.html