vue开发技术h5前端开发

commonjs

2019-10-07  本文已影响0人  手指乐

2.使用module.exports (exports) 暴露对外的接口.
module变量代表当前模块,module是一个对象,使用这个对象属性exports 暴露对外的接口;

3.使用require 同步加载依赖模块
4.模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。

5.模块加载的顺序,按照其在代码中出现的顺序

6.每个模块内部,都有一个module对象,代表当前模块。它有以下属性。

7.module.exports属性
module.exports属性表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。

8.exports变量
为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令:
var exports = module.exports;(commonJS隐式做了这个赋值)
这样做的好处是,在对外输出模块接口时,可以向exports对象添加方法暴露出去。

module.exports = function say() {
    console.log('hello world');
    console.log(module.id) //模块的识别符,通常是带有绝对路径的模块文件名。
    console.log(module.loaded) //返回一个布尔值,表示模块是否已经完成加载。
    console.log(module.children) //返回一个数组,表示该模块要用到的其他模块。
    console.log(module.exports) //表示模块对外输出的值。
}

main.js

var say = require("./util");
say();

也可以这样写:
util.js

function say(){
    console.log('hello world');
    console.log(module.id) //模块的识别符,通常是带有绝对路径的模块文件名。
    console.log(module.loaded) //返回一个布尔值,表示模块是否已经完成加载。
    console.log(module.children) //返回一个数组,表示该模块要用到的其他模块。
    console.log(module.exports) //表示模块对外输出的值。
}


module.exports ={
    sayfunc:say,
}

main.js

var util = require("./util");
util.sayfunc();

前者一个模块只输出一个function,后者输出一个对象,里面可以扩展多个方法、属性等
比如:

function say(){
    console.log('hello world');
    console.log(module.id) //模块的识别符,通常是带有绝对路径的模块文件名。
    console.log(module.loaded) //返回一个布尔值,表示模块是否已经完成加载。
    console.log(module.children) //返回一个数组,表示该模块要用到的其他模块。
    console.log(module.exports) //表示模块对外输出的值。
}

function test(){
    console.log('test');
}


module.exports ={
    sayfunc:say,
    testfunc:test
}

也可以使用exports:

exports.sayfunc = function say(){
    console.log('hello world');
    console.log(module.id) //模块的识别符,通常是带有绝对路径的模块文件名。
    console.log(module.loaded) //返回一个布尔值,表示模块是否已经完成加载。
    console.log(module.children) //返回一个数组,表示该模块要用到的其他模块。
    console.log(module.exports) //表示模块对外输出的值。
}

exports.testfunc = function test(){
    console.log('test');
}
上一篇 下一篇

猜你喜欢

热点阅读