Bootstrap

6、Node.js模块化

三、模块化

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] }
;