有了模块化后,前端就可以开发大型应用了。模块化解决了js中的全局变量污染等问题。与浏览器环境中不一样,nodejs中js文件不是通过html页面来进行调用,而是通过commonjs来进行相互的调用。
下载nodejs
官网地址:https://nodejs.org/zh-cn/
判断是否安装
- 在终端输入node,显示版本就说明安装好了
nodejs怎么实现commonjs
- 为了保证高效的执行,nodejs只有执行到require函数是才会加载并执行模块
- 为了隐藏模块的代码,nodejs执行时会将模块中的代码放到一个相当于立即执行函数中,保证不会污染全局变量,然后返回一个对象。
(function(module){
module.exports = {};
var exports = module.exports;
//我们自己写的代码
return module.exports;
})()
- 为了避免反复加载模块,nodejs默认开启了模块缓存,如果加载的模块之前已经加载就会使用之前导出的结果
CommonJs怎么实现模块的导出和导入
- 导出
- 理解上面nodejs实现Commonjs原理,导出只需要将我们要导出的东西加入到其返回的对象中即可。
//第一种方式
module.exports = {
//要导出的东西
}
//第二种方式
module.exports.xxx = xxx;
//第三种方式
exports.xxx = xxx;
- 导入
- 将要导入的东西的文件的相对路径作为require函数的参数,require函数返回值就是我们导出的对象(或者导出的函数什么的),通过调用对象中的属性就可以使用了。
//用一个变量来接受require函数的返回值
const xxx = require("./xxx.js");
ES6模块化
// 导出
export function app(){}
// 导入
import { app } from '文件路径'
// 默认导出
export default function app(){}
// 导入
import app from '文件路径'