Node.js学习

参考链接:

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);

运行结果:


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript 模块化编程 网站越来越复杂,js代码、js文件也越来越多,会遇到什么问题? 命名冲突; 文件...
    magic_pill阅读 1,477评论 0 1
  • 1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...
    zlx_2017阅读 1,293评论 0 1
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,642评论 2 41
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 2,090评论 1 50
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,103评论 2 58