自定义模块:用户自己创建的每个JS文件,都是自定义模块
加载模块的语法
加载自定义模块
a 文件,需要通过 require() 加载(导入)。(b 文件导出什么,a 文件就得到什么)
b 文件,必须通过 module.exports 共享(导出、暴露)当前模块中的变量
加载自定义模块时,必须要带路径 (相对路径、绝对路径都可以;但必须带路径,哪怕是 ./ 也不能省略)
加载自定义模块时,可以省略后缀
a文件:
b文件:
node打印结果
a文件代码:
let obj = require('./03_被导入文件')
console.log(obj);
console.log(obj.str, obj.fn1(), obj.fn2());
obj.fn2()
obj.fn1()
b文件代码:
console.log('我是被导入的js文件哦');
let str = '111'
let fn1 = function () {
console.log('我是函数');
}
let fn2 =()=>{ console.log('我也是函数');}
module.exports = {
str,
fn1,
fn2
}
模块化的设计,解决了在一个 JS 文件中引入 另一个 JS 文件的变量 的问题
模块化的设计,有效的提高了代码的复用性。(比如一个函数比如常用,可以封装到js文件中)
模块化的设计,增强了项目的维护性。(比如维护用户模块,不会影响到其他模块)
模块化的设计,实现了按需加载文件,减少了不必要的开销
模块化的设计,可以让项目变得更加简单(一个项目就是由许许多多的模块组成的)