node.Js 中的模块

一个 node.js由大量模块组成,每个JS文件都是一个模块

作者 度 日期 2016-08-25
node.Js 中的模块

node中的模块

javaScript 从一个仅仅在浏览器上面的一个玩具语言,一转眼演变成无所不能神一般的存在。但是,由于天生存在着一点戏剧性,模块系统作为一门语言最基本的属性却是javaScript所缺的。

1. JS的不足

  1. js没有模块系统,不支持封闭作用域或依赖管理
  2. 没有标准库,没有文件系统API
  3. 没有包管理系统,不能自动加载和安装依赖

2.commonjs规范

  1. 一个 node.js由大量模块组成,每个JS文件都是一个模块
  2. 实现了require方法,npm基于commonjs实现了自动加载和安装依赖

3.模块化优点

  1. 增加内聚性,有助分工协作
  2. 方便重构
  3. 提高代码质量

4.模块使用

  1. 定义模块
  2. 导出模块 module.exports和exports
  3. 使用模块 require(‘filename’);
  4. 实现原理
    (function(exports,require,module,__filename,__dirname){
    return module.exports;
    })();

5.require的应用

加载模块后会缓存,多次加载后得到同一对象

require('./test.js')

查看模块缓存

console.log(require.cache);

查询模块绝对路径

require.resolve('./test.js');

查看单个的模块缓存

require.cache[require.resolve('./test.js')]

删除模块缓存

delete require.cache[require.resolve('./test.js')];

6.包和npm

多个模块可以封装成一个包
npm是node.js默认的模块管理器,用来安装和管理node模块 网址为 http://npmjs.org
可以用包的方式通过npm安装、卸载、发布包

组织和管理自己的模块

放置多个模块的文件夹称为包,可以通过包来对一组具有相互依赖的有关系模块进行管理。

1.我们要在当前项目 一键初始化package.json

npm init -y

然后会自动生成一个package.json文件

{
"name":"包的名称",
"description""包的简要说明。",
"version":"版本号",
"keywords""关键字",
"licenses":"许可证",
"repositories""仓库地址 ",
"dependencies":"包的依赖,一个关联数组,由包名称和版本组成。"
}

2.安装引用第三方包

全局安装 直接下载到Node的安装目录中,各个项目都可以调用,适合工具模块,比如webpack

npm install -g webpack //全局安装

本地安装 将一个模块下载到当前目录的node_modules子目录,然后只有在当前目录和它的子目录之中,才能调用这个模块

npm install webpack //本地安装

查看全局安装路径

npm root -g

2-1.开发时候的依赖(在开发的时候才用到上线的时候用不到)

npm install --save-dev 文件名 //devDependencies开发依赖 会自动引入到package.json

2-2. 写代码时候的依赖(代码依赖)

npm install --save 文件名 //dependencies上线依赖 会自动引入到package.json

3.卸载第三方包

3-1.卸载全局

npm uninstall -g [package name]

3-2.卸载本地

npm uninstall [package name] --save-dev
npm uninstall [package name] --save

4.发布全局项目

4-1.登陆用户

npm adduser

4-2.发布包

npm publish

源管理工具

1.安装此工具

npm install -g nrm

2.显示所有的源

nrm ls

3.切换到中国源

nrm use cnpm