三、模块化
3.1模块化初体验
//mymodule.js(自定义的模块)
//定义一个函数
function hello(){
console.log('Hello world!')
}
//暴露数据
module.exports = hello;
//index.js(调用自定义的模块)
//导入模块
const hello = require('./mymodule.js');
//调用自定义模块中的函数
hello()
输出:
Hello world!
3.2暴露数据
//方法1
//mymodule.js
function hello1(){
console.log('I am Hello1')
}
function hello2(){
console.log('I am Hello2')
}
//暴露数据
module.exports={
hello1,
hello2
}
//方法2
//mymodule.js
function hello1(){
console.log('I am Hello1')
}
function hello2(){
console.log('I am Hello2')
}
//暴露数据
exports.hello1 = hello1;
exports.hello2 = hello2
//导入自定义模块
const mymodule = require('./mymodule.js'); //js文件和json的扩展名是可以省略的
//调用模块中的函数
mymodule.hello1()
mymodule.hello2()
输出:
I am Hello1
I am Hello2
3.3导入目录
如果导入的路径是个目录,则会首先检测该目录下的package.json文件中main属性对应的文件,如果存在,则导入,如果不存在则报错;
如果main属性不存在或package.json文件不存在,则尝试导入目录内的index.js和index.json,如果还是没有找到,则报错。
目录结构:
|–index.js
|–module
--mymodule.js
--package.json
//package.json
{
//通过main属性指定了模块文件
"main":"mymodule.js"
}
//mymodule.js
function hello1(){
console.log('I am Hello1')
}
function hello2(){
console.log('I am Hello2')
}
//暴露数据
module.exports={
hello1,
hello2
}
//index.js
//导入目录
const mymodule = require('./module');
console.log(mymodule)
输出:
{ hello1: [Function: hello1], hello2: [Function: hello2] }