方式
<script src=“jquery.js”></script><script src=“main.js”></script><script src=“dep1.js”></script>
讯享网
* 面试中的追问
讯享网<script src=“jquery.js” async></script>
总结
作用域的把控
let count = 0;const increase = () => ++count;const reset = () => { count = 0;}
讯享网(() => { let count = 0; …})//最基础的部分
实现一个最简单的模块
const iifeModule = (() => { let count = 0; const increase = () => ++count; const reset = () => { count = 0; } console.log(count); increase();})();
讯享网const iifeModule = ((dependencyModule1,dependencyModule2) => { let count = 0; const increase = () => ++count; const reset = () => { count = 0; } console.log(count); increase(); .https://maimai.cn//可以处理依赖中的方法})(dependencyModule1,dependencyModule2)
面试1:了解jquery或者其他很多开源框架的模块加载方案
const iifeModule = ((dependencyModule1,dependencyModule2) => { let count = 0; const increase = () => ++count; const reset = () => { count = 0; } console.log(count); increase(); .https://maimai.cn//可以处理依赖中的方法 return increase,reset }})(dependencyModule1,dependencyModule2)iifeModule.increase()
CJS (Commonjs)
讯享网const dependencyModule1 = require(’https://maimai.cn/article/dependencyModule1’)const dependencyModule2 = require(‘https://maimai.cn/article/dependencyModule2’)let count = 0;const increase = () => ++count;const reset = () => { count = 0;}console.log(count);increase();exports.increase = increase;exports.reset = reset;module.exports = { increase, reset}
const {increase, reset} = require(https://maimai.cn/article/main.js)
讯享网(function(this.value,exports,require,module){ const dependencyModule1 = require(’https://maimai.cn/article/dependencyModule1’) const dependencyModule2 = require(’https://maimai.cn/article/dependencyModule2’)}).call(this.value,exports,require,module)
追问:一些开源项目为何要把全局、指针以及框架本身作为参数
(function(window,\(,undefined){ const _show = function(){ \)(“#app”).val(“hi zhuawa”) } window.webShow = _show;})(window,jQuery)
优缺点
讯享网//define来定义模块define(id, [depends], callback)//require来进行加载reuqire([module],callback)
define(‘amdModule’,[dependencyModule1,dependencyModule2],(dependencyModule1,dependencyModule2) => { //业务逻辑 let count = 0; const increase = () => ++count; module.exports = { increase }})

讯享网require([‘amdModule’],amdModule => { amdModule.increase()})
define(‘amdModule’,[],require => { const dependencyModule1 = require(’https://maimai.cn/article/dependencyModule1’) const dependencyModule2 = require(’https://maimai.cn/article/dependencyModule2’) //业务逻辑 let count = 0; const increase = () => ++count; module.exports = { increase }})
讯享网//判断的关键: 1. object还是function 2. exports ? 3. define(define(‘AMDModule’),[],(require,export,module) => { const dependencyModule1 = require(’https://maimai.cn/article/dependencyModule1’) const dependencyModule2 = require(’https://maimai.cn/article/dependencyModule2’) let count = 0; const increase = () => ++count; const reset = () => { count = 0; } console.log(count); export.increase = increase();})( //目标:一次性区分CJS还是AMD typeof module === ’object’ && module.exports && typeof define !== function ? //CJS factory => module.exports = factory(require,exports,module) : //AMD define)
优缺点
define(‘module’,(require,exports,module) => { let $ = require(‘jquery’) let dependencyModule1 = require(’https://maimai.cn/article/dependencyModule1’)})
优缺点
讯享网// ES11原生解决方案import(’https://maimai.cn/article/esMModule.js’).then(dynamicModule => { dynamicModule.increase();})
<script src=“main.js”></script><script> // 给构建工具一个标识位 require.config(FRAME_CONFIG);</script><script> require([‘a’, ’e’], () => { // 业务逻辑 })</script>define(‘a’, () => { let b = require(‘b’) let c = require(‘c’)})




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/176514.html