美文网首页
2020-03-24 模块化

2020-03-24 模块化

作者: BricksTaaToo | 来源:发表于2020-04-15 23:06 被阅读0次


一:模块化的由来

1.1:背景

项目的日渐庞大,对于抽离业务功能和基础功能需求越来越大,方便快速引入某个功能模块,对模块进行封装抽离

javascript早期设计中,没有类,模块,包的概念

封装模块的目的:

(1):提高代码的复用率

(2):方便查阅依赖关系,代码可读性

(3):变量冲突,方便维护

1.2:模块的特点:
(1):拥有独立的作用域--函数拥有独立作用域

(2):避免全局污染--对象(把实现的功能封装到对象中,文件名来定义模块名,保证清晰的看到模块的定义

(3):暴漏的接口,不能修改--立即执行函数(Immediately Invoked Function Expression)

            如果最终模块抛出的对象,那么obj.xxx=yyy 是可以修改模块定义的接口功能

            (function(){ 

                    return {

                                name:'xxx',

                                age:"yyy"

                    }

            })()

1.3:模块开发遇到的问题:
(1):加载js的顺序

(2):有效处理依赖关系的维护

二、模块化的实现

https://github.com/seajs/seajs/issues/277 对比

commonJS  

AMD

CMD

UMD

原生模块化

commonJS 与node之间关系  https://www.cnblogs.com/xiaohuochai/p/6847939.html

每一个文件就是一个模块,拥有自己独立的作用域、变量、以及方法等,对其他的模块都不可见CommonJS规范规定,每个模块内部,module 变量代表当前模块。这个变量是一个对象,它的 exports 属性(module.exports)是对外的接口。加载某个模块,其实是加载该模块的 module.exports 属性。require 方法用于加载模块。

module :exports ,require

exports={}

module.exports={}

exports.a=xxx

require("../xxx")

相关文章

网友评论

      本文标题:2020-03-24 模块化

      本文链接:https://www.haomeiwen.com/subject/hrrzyhtx.html