Node.js 之模块化

服务器端模块化
  - 服务器端模块化规范CommonJS与实现Node.js
  - 模块导出与引入
  - 模块导出机制分析
  - 模块加载规则
    + 模块查找 不加扩展名的时候会按照如下后缀顺序进行查找 .js .json .node
  - 模块分类
    + 自定义模块
    + 系统核心模块
      * fs 文件操作
      * http 网络操作
      * path 路径操作
      * querystring 查询参数解析
      * url url解析
      * ......

模块化开发

传统非模块化开发有如下的缺点:
1、命名冲突
2、文件依赖

前端标准的模块化规范:
1、AMD - requirejs
2、CMD - seajs

服务器端的模块化规范:
1、CommonJS - Node.js

模块化相关的规则:
1、如何定义模块:一个js文件就是一个模块,模块内部的成员都是相互独立
2、模块成员的导出和引入

模块成员的导出最终以module.exports为准

如果要导出单个的成员或者比较少的成员,一般我们使用exports导出;
如果要导出的成员比较多,一般我们使用module.exports的方式
这两种方式不能同时使用

exports与module的关系:

module.exports = exports = {};
/*03.js*/
var
sum = function(a,b){ return parseInt(a) + parseInt(b); } // 导出模块成员 exports.sum = sum; // 导出成员的另一种方式 module.exports = function(){ console.log('hello'); };
/*
    引入模块
*/

var module = require('./03.js');

// var ret = module.sum(12,13);
// console.log(ret);

// var ret = module(12,15);
// console.log(ret);   

// console.log(typeof module);
module();
/*
  05.js
 四则运算-成员导出方式分析
*/ var sum = function(a,b){ return parseInt(a) + parseInt(b); } var subtract = function(a,b){ return parseInt(a) - parseInt(b); } var multiply = function(a,b){ return parseInt(a) * parseInt(b); } var divide = function(a,b){ return parseInt(a) / parseInt(b); } // 导出成员 // exports.sum = sum; // exports.subtract = subtract; // module.exports = { // sum : sum, // subtract : subtract, // multiply : multiply, // divide : divide // } // module.exports = [1,2,3];
/*
    测试导出
*/

var m = require('./05.js');
console.log(m);
// var ret = m.sum(1,2);
// var ret1 = m.subtract(1,2);
// console.log(ret,ret1);

 

 

/*
    模块文件的后缀3种情况:.js .json .node
    上述三种模块的加载优先级(不加文件后缀时的优先级):.js -> .json -> .node
*/
// require('./07');
// console.log(global.flag);

// var m = require('./data.json');
// console.log(m.username);

// var m = require('./addon.node');
// // console.log(typeof m);
// var ret = m.hello();
// console.log(ret);

var m = require('./data');
// console.log(m);
var ret = m.hello();
console.log(ret);

 

posted @ 2019-11-18 17:07  福尔摩斯_周  阅读(150)  评论(0)    收藏  举报