js的模块模式设计(如何理解JavaScript模块化)
js的模块模式设计
如何理解JavaScript模块化目录
- 1. 浏览器支持
- 2. export 导出模块
- 3. import 导入模块
- 4. 创建模块对象
- 5. export import 中转站
- 6. 动态加载模块
使用JavaScript 模块依赖于 import 和 export,import 和 export 的浏览器支持程度是最新的浏览器版本都是支持的,但 IE 和旧版本的浏览器不支持,因此若想兼容 IE 和旧版本的浏览器基本就不能使用了。
export 和 import 是成对出现,配合工作的
JS模块化是各种JS框架学习的前提基础
import 和 export 语句用于将一个模块里实现某些功能的变量或函数导入/导出,也可导入/导出类
2. export 导出模块默认导出
一个模块只能有一个默认导出,默认导出的变量只能有一个,且不能有大括号{}
语法为export default 变量名
model.js
function Test1(){ console.log("这是默认导出") } function Test2(){ console.log('这是命名导出') } export default Test1
批量导出
语法为export {变量名,变量名……}
function Test1(){ console.log("这是默认导出") } function Test2(){ console.log('这是命名导出') } export {Test1, Test2}
默认导入
main.js
import Test1 from "./model.js" Test1()
默认导入的重命名
main.js
import x from "./model.js"//x就是默认导出的Test1 x()
批量导入
main.js
import {Test1, Test2} from "./model.js" Test1(); Test2();
批量导入的重命名
as关键字跟一个新名字实现重命名
main.js
import {Test1 as x1, Test2 as x2} from "./model.js" x1(); x2();
也可在导出时用as关键字重命名
model.js
function Test1(){ console.log("这是默认导出") } function Test2(){ console.log('这是命名导出') } export {Test1 as x1, Test2 as x2}
应用模块
html
<script src="main.js"></script>
使用对象,在as关键字重命名的基础上进一步简单化
import * as Model from "./model.js" Model.x1(); Model.x2();
有时候可以将多个子模块组合到一个父模块中,再由父模块决定导出哪个,这个父模块文件就像是个组合各个模块的中转站
语法为export {变量名} from 模块路径
当前目录结构结构
src
index.html
main.js
redirection.js
models
model.js
model2.js
model.js
function Test1(){ console.log("这是子模块1") } export {Test1}
model2.js
function Test2(){ console.log('这是子模块2') } export {Test2}
redirection.js
export {Test1} from "./models/model.js" export {Test2} from "./models/model2.js"
main.js
import * as Model from "./redirection.js" Model.Test1() Model.Test2()
html
<script src="./main.js"></script>
动态加载模块用于在导入模块时不必预先加载所有模块,可以在需要时使用 import() 作为函数调用,将其参数传递给模块的路径,它返回一个 promise,使用 Promise 对象对模块加载结果操作。
语法为import(动态加载的模块路径)
dynamic.js
function TestDy(){ console.log("这是动态模块") } export default TestDy
main.js
document.querySelector('.load').onclick = function(){ import('./dynamic.js').then((Model)=>{ Model.default() }) }
以上就是如何理解JavaScript模块化的详细内容,更多关于JavaScript模块化的资料请关注开心学习网其它相关文章!
- js网站前端效果(JS如何让你的移动端交互体验更加优秀)
- videojs播放流媒体(video.js支持m3u8格式直播的实现示例)
- ASP.NET中使用CodeDomProvider调用js文件中的js方法
- Extjs menu菜单的简单用法
- angularjs过滤器
- js柯里函数的应用场景(深入详解JS函数的柯里化)
- node.js缓存区(如何利用node实现静态文件缓存详解)
- vuejs filter过滤器的使用(Vue过滤器filter实现及应用场景详解)
- js弹出新窗口被拦截的解决方法
- html和js代码结合(JS、CSS和HTML实现注册页面)
- js中arguments的用法
- js函数对象
- js判断变量是否为空
- nodejs怎么查看对象的全部属性(浅谈nodejs中创建cluster)
- html5长图拖动(html5 拖拽及用 js 实现拖拽功能的示例代码)
- js回调函数原理(关于JavaScript回调函数的深入理解)
- 蒜苔炒鱿鱼(蒜苔炒鱿鱼)
- 远离 五毛食品 洛阳80后妈妈发明的 飞行棋 成校园爆款 玩具(远离五毛食品)
- 失传的古代飞行棋游戏 六博(失传的古代飞行棋游戏)
- 感冒要吃什么药(猫咪感冒要吃什么药)
- 下雪会怎样(下雪怎样画)
- 白蓝色穿搭(白蓝色衣服配什么裤子)
热门推荐
- SQLServer日期函数总结案例详解(SQLServer日期函数总结案例详解)
- idea中tomcat快速部署(IDEA编辑器整合Apache Tomcat的详细教程)
- 阿里云服务器攻击了怎么办(云服务器被攻击了补救措施)
- 树莓派3B+安装64位ubuntu系统和docker工具的操作步骤详解(树莓派3B+安装64位ubuntu系统和docker工具的操作步骤详解)
- qgis 如何平滑折线(Sqlview动态发布地图图层的方法)
- python3配置教程(python3中property使用方法详解)
- css3实现凸起效果(CSS3轻松实现圆角效果)
- django后台运行命令(Django框架实现的普通登录案例使用POST方法)
- docker容器技术搭建个人博客(使用Portainer部署Docker容器的项目实践)
- python数据分析pandas教程(11个Python Pandas小技巧让你的工作更高效附代码实例)