模块化开发

模块化开发

模块化开发规范

commonJS in node.js

commonJS规范:同步模式加载模块,导致效率低–node.js环境
一个文件就是一个模块
每个模块都有单独地作用域
通过module.exports导出成员
通过require函数载入模块

AMD(Asynchronous Module Definition)规范:
使用相对复杂
模块JS文件请求频繁

require.js定义,加载模块

//定义一个模块
define('module1【模块名】',['jquery【依赖1】','./module2【依赖2】'],function($,module2){//一一对应依赖导出名
   return {
     start:function(){
       $('body').animate({margin:'200px'})
       module2()
     }
   }
})

//加载模块
require(['./module1'],function(module1){
  module1.start()
})

sea.js+CMD规范【类似CommonJS规范】:

define(function(require,exports,module)){
  //require引入依赖
  var $ = require('jquery')
  //通过exports或module.exports对外暴露
  module.exports = function(){
     console.log(module2)
     $('body').append('<p>module2</p>')
  }
}

ES Modules in Browser

ESM特性

通过给script标签添加type = module属性,就可以用ES Module 标准执行其中JS代码
特性:
1.ESM自动采用严格模式。忽略use strict
2.每个ES Module模块都是运行在单独的私有作用域中
3.ESM是通过CROS方式请求外部JS模块
4.ESM的script标签会延迟执行脚本:等待渲染完成后执行脚本,首先显示页面元素
在这里插入图片描述

ESM导入导出

export{变量1,变量2}:导出变量值,无法在import文件中修改
import {变量1,变量2} from ‘模块1
在这里插入图片描述

ESM浏览器环境polyfill

IE浏览器不支持 ES Module 的script标签
script 标签引入es-module-loader模块,使IE兼容module特性
src= https://unpkg.com/browse/browser-es-module-loader@0.4.1/dist/babel-browser-build.js
src= https://unpkg.com/browse/browser-es-module-loader@0.4.1/dist/browser-es-module-loader.js
src = https://unpkg.com/promise-polyfill@8.2.0/dist/polyfill.min.js 兼容promise特性
在这里插入图片描述

ESM在node.js中使用

1.修改js文件后缀为.mjs,新版本ESM可通过在pakage.json文件中配置type = 'module’实现,不用修改后缀名为mjs
2.启动js文件:node --experimental-modules index.mjs【文件名】
注意:import导入不支持第三方模块,因为第三方模块导出默认成员default
允许通过import方式提取系统内置成员,因为内置模块兼容ESM提取成员方式
在这里插入图片描述

ESM在node环境中使用CommonJS

1.ESM支持导入CommonJS模块,但导入默认成员:import 模块1 = ‘模块url’
2.CommonJS不能通过require导入ESM模块
3.CommonJS始终导出默认成员
4.import不是结构导出成员
5.使用区别:
在这里插入图片描述
在这里插入图片描述

常用的模块化打包工具

基于模块化工具开发现代web应用

打包工具的优化技巧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值