require,import 和 export
作者:互联网
require ,import ,和 export
>module 模块概念
模块就是实现特定功能的一组方法。只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块
function m1(){}
function m2(){}
这样就是一个模块,使用的时候直接调用,缺点是污染了全局变量。
>为解决污染全局变量问题,把模块成员放到一个对象里面
var module1 = new Object({
count:0,
m1:function(){},
m2:function(){}
})
这样使用的时候 module.m1();缺点是暴露所有成员包括 module.count
>为避免暴露所有成员,立即执行函数写法
var module = function(function(){
var count = 0;
var m1 = functon(){}
var m2 = function(){}
return {
m1:m1,
m2,m3
}
})()
>es6之后,module成为标准,export导出,import导入
在一贯的node模块中,依然采用CommonJS规范,require引入,module.exports导出
>在CommonJs中,有一个全局性方法require()
var math = require('math)
>export 导出模块:声明用于导出函数,对象,指定文件或模块的原始值
注意:node中使用的是exports。
1,命名式导出,每个模块可以多个
export {name1,name2,name3...}
导出对象用名称区分,可以通过 * from + 模块名实现模块的继承
export * from 'article';
用 as重命名
export {fun as default,a,b,c};
2,默认导出,只能导出一个值,函数或类
expoort default function() {}
3,默认导出可以理解为另一种形式的命名导出
const D = 123;
export default D;
export { D as default }
两种方式等价
>import导入
必须放在文件最开始,和require不同。
import * as name from 'module-name'
import {foo} from 'my-module'
默认导入
import myDefault from 'my-module'
默认导入和命名空件和名称导入同时使用
import myDefault, * as myModule from "my-module";
import myDefault, {foo, bar} from "my-module";
>default 关键字
export default function(){}
等效于
function a(){}
export {a as default}
使用default的好处是,import的时候可以省略花括号
import $,{each,map} from 'jquery';
>CommonJS中 module.exports 与 exports的区别
Module.exports 对象是由模块系统创建的
Module.exports 是全局的,exports是局部的
注意,每个js文件都有: var exports = module.exports = {} ,使 exports和module.exports都指向一个空对象
标签:function,exports,require,module,export,模块,import 来源: https://www.cnblogs.com/jqynr/p/16688724.html