• 前端模块化-commonjs,amd,cmd , es6


    模块化历史:

            在es6还未正式发布前,前端模块化,往往都是通过函数式编程实现的,那时候只能这样

    function moduleA(){   // code here...

    }

    function moduleB(){   // code here...

    }

            因为没有块级作用域的概念,

       因为没有块级作用域的概念,前端模拟块状作用域,需要用函数作用域实现,但是为此会产生很多全局变量,污染了命名空间,命名冲突的问题也随之产生,用命名空间实现模块化是一种较好的方案。
            但是实现方式也是千差万别,于是有人提出了的前端模块化规范的概念,

    CommonJS

       又有一些模块的概念涌现出来,比如源自服务器端js模块化的commonjs(一开始叫serverjs);

         CommonJS定义的模块分为:  模块引用(require)    模块输出(exports)       模块标识(module)

         由于commonjs采用同步加载机制,拉取模块依赖的时候会停止页面渲染,于是AMD规范这样的异步加载规范又被提出来,require.js,node.js是其最火的两个实现,nodejs遵循了commonjs规范,但并没有完全的遵循。但是又有国人觉得AMD这种异步加载的方式不太完美,于是司徒正美提出了CMD概念并祭出了其实现sea.js。

            直到2015年ES6正式发布,ECMAScript实现了原生的js模块化,import,export,块状作用域,是其十分常用的模块化的API,但并不是所有浏览器都实现了ES6的支持,由于业界毒瘤IE,尤其是ie8,ie9还占据着大部分市场份额,所以为了兼容ES6的新语法,还得引入第三方打包编译工具,比如babel,broswerify,html5-shim等向下兼容的方案。

           基于nodejs的Grunt,gulp这样的自动化模块和打包工具应运而生,require.js这样的冷兵器,黯然隐退。

           Webpack对上诉两个自动化模块和打包工具都不太满意,果断另起炉灶,获得了好评。

  • 相关阅读:
    Thinkphp各种方法知识图谱
    Yii2.0学习笔记:创建登录表单
    Yii2.0学习笔记:第一个页面Saying Hello
    4.1
    4
    flask(3.0)
    flask(2.0)
    flask(1.1)装饰器装饰多个视图函数出现的问题
    flask(1.0)
    Flask之上下文管理机制
  • 原文地址:https://www.cnblogs.com/Aladingding/p/6945735.html
Copyright © 2020-2023  润新知