Nodejs极简入门教程(1):模块机制
Javascript规范(ECMAscript)没有定义标准库,可以应用于大多数programs.commonjs完美集合提供了一系列的Javascript标准库节点实现CommonJS规范规格。模块库
在节点模块和文件one-to-one.we定义模块:
复制代码代码如下所示:
/ / circle.js
VaR PI = math.pi;
导出功能区
exports.area =函数(R){
返回pi;
}
输出函数周长
exports.circumference =函数(R){
返回2×pi;
};
在这里,衍生功能添加到出口对象。局部变量不能访问外部模块(例如,在上面的PI变为例),调用需要加载模块circle.js:
复制代码代码如下所示:
var循环=需要(;
console.log(一个半径为4的圆的面积)
+ circle.area (4));
附带的,在模块中,有一个模块对象表示模块本身,而导出是模块的属性。
模块加载
节点将缓冲加载的模块,以避免重新加载的开销:
复制代码代码如下所示:
/ / test.js
console.log(我);
多个加载模块test.js
复制代码代码如下所示:
只有一个输出
需要({测试});
需要({测试});
当加载文件不是后缀时,节点尝试添加后缀和加载:
1 .. Js(Javascript源文件)
2、Node(C / C++扩展模块)
3 .. JSON(JSON文件)
有几种类型的模块:
1。核心模块,核心模块已编译成节点,并在其源代码中找到核心目录中的核心模块,常用核心模块:网络、HTTP、FS模块等。
2。file module.The file module is loaded by a relative or absolute path, such as the circle.js we see above
三.自定义模块,自定义模块位于node_modules目录,我们把所有安装在node_modules NPM模块目录
核心模块总是先加载。如果有一个自定义模块的HTTP,它会加载内核模块的自定义模块的HTTP HTTP而不是当加载。加载自定义模块时,会在当前目录的node_modules目录先看看,然后寻找父目录下node_modules目录,等等,直到根目录。
需要加载的模块不是一个文件,但一个目录名包。有一个文件名为package.json(软件包描述文件)在包中,例如:
复制代码代码如下所示:
{名称:一些库
主要指出了需要加载的模块。如果在包装或package.json没有package.json不指定主模块,节点会尝试加载index.js,index.node和index.json。
加载Javascript模块时,加载的模块被封装在一个函数中:
复制代码代码如下所示:
功能(模块、出口,__filename,__dirname,…){
Javascript模块
}
模块,出口,__filename,__dirname,访问每个Javascript模块等实际上是通过函数参数。因为这个包,该模块的局部变量不能被外部访问。但有时候是很难理解的问题,如:
test1.js
复制代码代码如下所示:
导出= {
名称:'name5566,
}
test2.js
复制代码代码如下所示:
module.exports = { {
名称:'name5566,
}
加载这两个模块:
复制代码代码如下所示:
var test1 =需要('。 / test1 .js);
console.log(test1。名称); / /未定义
VaR TEST2 =需要('。 / test2。JS的);
console.log(test2。名称); / / name5566
导出作为参数传递给模块。我们可以通过导出来自然地向导出对象添加属性(或方法)。但是直接将值赋给导出(例如,导出= x)仅仅是改变一个参数的参数而不是实际参数的值。
1。在向出口添加属性时,使用导出
当2。被分配到出口,用module.exports
包裹
根据CommonJS规范,一个完整的方案应包括:
1.package.json包描述文件
2.bin二进制文件目录
3.lib Javascript代码目录
4.doc文件目录
5.test测试代码目录
NPM是节点的包管理工具。常见的用法:
查看命令文档:
复制代码代码如下所示:
NPM帮助安装
查看命令安装的文档。
安装包:
复制代码代码如下所示:
NPM安装使用
使用包安装。安装命令将安装包中的node_modules目录当前目录下。
删除软件包:
复制代码代码如下所示:
NPM删除redis
删除redis包。删除命令将从当前目录删除分组移位。