ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

require,import 和 export

2022-09-13 12:34:34  阅读:213  来源: 互联网

标签:function exports require module export 模块 import


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有