Node.js学习

参考链接:

  • Node.js中文文档; http://nodejs.cn/api/

1.1、模块化。 module
Node.js中是以模块化进行开发的,原生JavaScript中并没有模块系统,标准库也很少,类似NPM的包管理系统也很缺乏,这就会在造成各种空间污染、结构混乱,需要花费大量的时间去做容错。Node.js遵循CommonJS规范编写很好的解决了上述问题。
CommonJS定义的模块主要分为:模块引用(require) 模块定义(exports) 模块标识(module)三部分。

require根据外部模块ID,返回该模块输出的API;

每个模块中还有一个自由变量exports,它是一个对象,模块对外输出的API就绑定在这个对象上。而且exports是模块对外输出API的唯一途径;

每个模块中必须有一个自由变量module,它是对象。这个对象有一个id属性,表示该模块的id,同时应该是只读属性。module对象可以有一个uri属性,表示这个模块被加载的来源。

如果你的JS代码是根据CommonJS API编写的,那么,你就可以在与CommonJS兼容的系统上,用JavaScript做下面这些事情:

编写服务端应用;
编写命令行工具;
编写基于GUI的桌面应用;
混合应用程序;

1.2 Node.js中CommonJS规范的体现
模块引用: 统一通过require引入,并返回一个对象,这个对象上挂载着这个模块中的所有变量、函数...那么跨文件获取时,就不需要通过global对象,封闭了命名空间。

模块定义: 一个js文件就是一个模块 ,将文件中的变量和函数挂载到exports对象上,作为其属性即可定义导出运用。

模块标识: 命名统一采用驼峰命名,相对路径以.、..开头,也可以是绝对路径,引入的文件可以带.js后缀也可以不带。

1.3 Module中到底有哪些东西?
我们在终端运行下面一段代码看看:

var http = require('http');

http.createServer(function(req,res){

  res.writeHead(200,{'Content-Type':'text/plain'});

  res.end('Hello World,\n sssssss');

}).listen(8080,'127.0.0.1');

console.log('Server running at http://127.0.0.1:8080');

module.exports = function printMessage(){

    console.log('module是个什么东西!?')
}
console.log(module);

运行结果:


Node.js学习_第1张图片
QQ20170707-162838.png

通过上图,我们进一步了解到Module其实是Node.js内部的一个构造函数,所有的模块都是Module的实例;因此,在每个模块内部都有一个module对象,代表着当前的模块。其内部的属性主要包括以下几点:

module.id 模块文件名 (唯一性)
module.exports 模块对外输出的内容
module.parent 返回一个对象,表示调用该模块的模块
module.filename 绝对路径下的模块文件名
module.loaded 模块是否已经完成加载(true 或者 false)
module.children 返回一个数组,表示当前模块中用到的其他模块
module.paths 返回一个数组,表示该模块涉及的所有路径

2.1 NPM的常用命令
NPM是Node.js默认的模块管理器,是一个命令行下的软件,用来安装和管理node模块,是统一的模块登记和管理系统。NPM 是开源界最大的模块生态社区。

npm init     初始化一个package.json文件。
npm install 包名   安装一个包
npm install --save-dev 包名   安装包安装到本项目里面然后把包依赖添加到package.json文件中
npm uninstall 包名    卸载当前目录下某个包
npm uninstall 包名 --g  卸载全局安装路径下的某个包
npm update 包名    更新当前目录下的某个包
npm update 包名 -g   更新全局安装路径下的某个包
npm docs 包名     查看包的文档
npm root 包名 -g    查看全局包安装路径
npm list       查看当前目录下安装的所有包
npm config set prefix "路径"  修改全局包安装路径

以上内容参考:叶建华老师的微信公众号文章

以上内容参考:叶建华老师的微信公众号文章

博客推荐 http://blog.csdn.net/bomess/article/category/5742043

你可能感兴趣的:(Node.js学习)