require,import 和 export
参考:https://www.cnblogs.com/libin-1/p/7127481.html
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都指向一个空对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构