nodejs 模块化
Posted houfee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 模块化相关的知识,希望对你有一定的参考价值。
参考: 为什么要进行模块化开发
(读完你要会知道命名空间是什么)
-
-
注意:模块化是一种开发思想;具体开发中需要定制符合实际需求的模块化规范!
-
减少不必要的沟通成本
// 1、module 就代表了当前这个模块 // console.log(module) // 2、每个模块中,都应该有 exports, 作用,是把 当前模块中的成员暴露出去,给别人使用; // console.log(exports) // 3、module.require 是用来导入其它模块的; // console.log(module.require) // 总结:在Node中,每一个JS文件,大家都可以把它认为是一个模块
-
全局作用域使用
global
来访问,类似于浏览器中的window
; -
global全局作用域:存在变量污染问题
06.js文件: let a = 10 let b = 20 function show() { console.log(‘ok‘) } // 在 node 模块中,可以使用 exports 向外暴露成员 exports.a = a exports.b = b exports.show = show console.log(exports) 07text.js文件: const m06 = require(‘./06.js‘) console.log(m06) 输出: D:ES6和node.js02>node 07.test.js { a: 10, b: 20, show: [Function: show]} { a: 10, b: 20, show: [Function: show]}
-
如果在某个模块内部,想为 全局的 global 作用域挂载一些属性,需要显示的调用
global.***
来挂载; -
注意:在开发中,一般情况下,不推荐使用
global
全局作用域来共享成员,会存在全局变量污染问题;
CommonJS规范--node.js基于这个规范
特点:同步的模块规范,不适合在浏览器端使用
模块作用域共享成员
-
module(模块标识)
module 属性是 Common JS 规范中定义的,它是一个对象,表示当前这个具体的 js 模块
-
require(引用模块)
-
exports(暴露模块成员)
每一个模块中,如果想要把自己的一些私有成员,暴露给别人使用,那么,必须实现一个 exports 对象,通过exports对象,可以方便的把模块内私有的成员,暴露给外界使用;
module.exports 和 exports 的关系
-
module.exports
和exports
默认引用了同一个空对象; -
module.exports
和exports
作用一致,都可以向外暴露成员; -
一个模块作用域中,向外暴露私有成员时,永远以
module.exports
为准;
module.exports.a = 10 module.exports.b = 20 exports.c = 30 // ------------ exports 和 module.exports 之间的关系 --------------------- console.log(module.exports) // { a: 10, b: 20, c: 30 } console.log(exports) // { a: 10, b: 20, c: 30 } console.log(module.exports === exports) //true // 既然每个模块,向外暴露成员的时候,永远都以 module.exports 为准,那么,推荐使用 module.exports
以上是关于nodejs 模块化的主要内容,如果未能解决你的问题,请参考以下文章
使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面