美文网首页
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