node.js中的模块化
在项目开发过程中,随着功能的不断增强,代码量,文件数量也急剧增加,需要把一个大函数拆成若干个小函数,把一个大文件拆成若干个小文件,把一个大功能拆成若干个小功能。这里就涉及到模块化的想法:一个复杂的系统分成几个子系统,体现在几个小的文件在一起组成一个大的文件,集成强大的功能。
es5 不支持模块化
:
- es5不支持模块化:就是在一个js文件内不能引入其他js文件。
- 不能通过一个大文件去集成若干个小文件。
- 不支持模块化会带来多个问题:
- 文件的加载先后顺序
- 不同的文件内部定义的变量共享
- es5不支持模块化,为了让支持模块化,一般会借用第三方库来实现:
es6 原生语法支持模块化
- 一个js文件中可以引入其他的js文件,能使用引入的js文件的中的变量、数据,这种特性就称为模块化。
- 使用模块化开发可以很好的解决变量、函数名冲突问题,也能灵活的解决文件依赖问题。
node.js中的模块化
Node.js内部支持模块化,每个模块都是一个独立的文件。每个模块都可以完成特定的功能,需要时就去引入它们,并调用。不需要时也不需要去管它。
node.js模块的分类
:
- 核心模块
- node.js 自带的模块,在安装完node.js之后,就可以使用。
- 类似于js中使用的内置对象 (Array Math Date…)。
- 全部模块的源代码
- 自定义模块 (类似config.js user.js common.js)
- 开发者自己定义的模块。相当于js中自定义函数。
- 第三方模块(jQuery template-web.js )
- 其他开发者定义好的模块。node.js生态提供了一个专门的工具npm来管理第三方模块。
- 相当于其他开发者定义好的函数或者库。例如jQuery库,artTemplate等。
核心模块
- 核心模块就是 Node 内置的模块,需要通过唯一的标识名称来进行获取。
- 每一个核心模块基本上都是暴露了一个对象,里面包含一些方法供开发者使用。
- 一般在加载核心模块的时候,变量的命名最好就和核心模块的标识名同名即可。
- 例如:
const fs = require('fs')
- 例如:
示例:用fs模块读取文件
const fs = require('fs');
let htmlStr = fs.readFileSync('index.html')).toString();
console.log(htmlStr)
注意:require()中直接写模块的名字
- 不要加.js
- 不要加其它路径