You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
define(['dep1','dep2'],function(dep1,dep2){//Define the module value by returning a value.returnfunction(){};});// ordefine(function(require){vardep1=require('dep1'),dep2=require('dep2');returnfunction(){};});
引入模块是异步的
在前端执行
UMD: Universal Module Definition
(function(root,factory){if(typeofdefine==="function"&&define.amd){define(["jquery","underscore"],factory);}elseif(typeofexports==="object"){module.exports=factory(require("jquery"),require("underscore"));}else{root.Requester=factory(root.$,root._);}}(this,function($,_){// this is where I defined my module implementationvarRequester={// ... };returnRequester;}));
1. 为什么需要模块化
如何管理变量,变量拆分成单独的模块,let有静态作用域,但又让变量无法在另一个function 中引用,一般来说都是在外层声明变量,那此时你就需要注意script的顺序了,不能提前引用
并且脚本之间的相互依赖变得模糊,你不知道哪段脚本使用了哪个变量
第二个就是因为变量暴露,导致代码不稳定性变高
引入模块化后代码的引用依赖变得清晰,能够将代码分解为独立的模块
2. 目前的模块化方案
CJS, AMD, UMD, ESM,语法,目的,模块行为
CJS
: CommonJSnode
就是使用CJS引入模块是同步的,引入的是副本
不能在browser执行,需要编译打包, node端
AMD
: Asynchronous Module Definition 异步模块定义引入模块是异步的
在前端执行
UMD
: Universal Module Definition如名,可以处理前后端模块
被打包工具用来作为ESM使用不了时兼容处理不同的环境
ESM
: ECMAScript Module�JS模块化提议
在现代浏览器中支持
同步和异步语法都支持
支持摇树
能直接在HTML中使用
The text was updated successfully, but these errors were encountered: