[Node.js]模块导出与引入

为什么有模块化开发?

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

前端标准的模块化规范:
1、AMD - requirejs (国外的)
2、CMD - seajs (阿里巴巴的)

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

服务器端模块化

  1. 服务器端模块化规范CommonJS与实现 :Node.js
  2. 模块导出与引入
  3. 模块导出机制分析
  4. 模块加载规则
    模块文件的后缀3种情况:.js .json .node
    上述三种模块的加载优先级(不加文件后缀时的优先级):.js -> .json -> .node
  5. 模块分类
  • 自定义模块
  • 系统核心模块
    • fs 文件操作
    • http 网络操作
    • path 路径操作
    • querystring 查询参数解析
    • url url解析

1模块化相关的规则

1、如何定义模块:一个js文件就是一个模块,各模块之间的成员(声明的变量或函数)都是相互独立
2、模块成员的导出和引入

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

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

2模块导出与引入

exports

这是一个对于 module.exports 的更简短的引用形式。查看关于exports shortcut的章节,详细了解什么时候使用exports、什么时候使用module.exports。

module

对当前模块的引用, 查看关于 module object 的章节
module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容。

require()

用于引入模块、 JSON、或本地文件。 可以从 node_modules 引入模块。 可以使用相对路径(例如 ./、 ./foo、 ./bar/baz、 …/foo)引入本地模块或 JSON 文件,路径会根据 __dirname 定义的目录名或当前工作目录进行处理。

  1. 使用exports
var sum = function(a,b){
    return parseInt(a) + parseInt(b);
}

// 导出模块成员----exports
exports.sum = sum;
//引入当前路径下的03.js
var module = require('./03.js'); 

 var ret = module.sum(12,13);
console.log(ret);
  1. 使用module
    module.exports
var sum = function(a,b){
    return parseInt(a) + parseInt(b);
}

//导出成员
module.exports = sum;  //导出的是单独的方法

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

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

json对象:

{
    "username":"张三",
    "age":"12"
}


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