zoukankan      html  css  js  c++  java
  • 前端模块化

    一 模块分类:

    • 外部的模块: 指代引入前端工程的某个外部的包(package),可能由多个JS文件组成,但会通过入口暴露给我们项目调用
    • 内部的模块: 指代我们自己的工程项目中编码的最小单元: 即单个的JS文件。

    1 外部模块管理:Node包管理器:npm管理

    2 内部模块组织:

    二 内部模块组织方式:

    1通过<script>标签引入组织(模块化第一阶段:原生JS组织阶段)。

    2在线处理组织(模块化第二阶段:在线处理阶段):AMD和CMD只是一种设计规范,而不是一种实现。

    AMD(Asynchronous Module Definition):即“异步模块定义”。它是一种组织前端模块的方式.AMD的理念可以用如下两个API概括: define和require。AMD的实现主要有两个: requireJS和curl.js, 其中requireJS在2010年推出,是AMD的主流框架。

    CMD(Common Module Definition):即“通用模块定义”。和AMD不同的是,CMD没有提供前置的依赖数组,而是接收一个factory函数,这个factory函数包括3个参数

    三 CommonJS和ES6:

    CommonJS是Node.js使用的模块化方式,而import/export则是ES6提出的模块化规范。它们的语法规则如下。

    // ES6
    import { foo } from './foo'; // 输入
    export const bar = 1;        // 输出
    
    // CommonJS
    const foo = require('./foo'); // 输入
    module.exports = { 。         // 输出
        bar:1
    }

    babel是一个JavaScript 编译器,通过babel的编译转化成对浏览器兼容良好的JavaScript。它让我们意识到 :1在开发的时候,我们追求的是编程的便捷性和可阅读性。2而在生产中,我们追求的是代码对各种浏览器的兼容性。

    babel则将开发和生产这两个流程分开了,同时让我们可以用ES6中的import/export进行模块化开发。至此,AMD/CMD的时代宣告结束,

     四 Babel工作原理:

    Babel的工作流程可概括为三个阶段

    • Parse(解析): 通过词法分析和语法分析,将源代码解析成抽象语法树(AST)
    • Transform(转换):对解析出来的抽象语法树做中间转换处理
    • Generate(生成):用经过转换后的抽象语法树生成新的代码

    五 模块化第三阶段:预处理阶段:broswerify &webpack;

    六 模块化的第四阶段:自动化构建阶段:gulp, grunt和webpack

    七 自动化构建新趋势:bundleless。bundleless就是把开发中拖慢速度的打包工作给去掉,从而获得更快的开发速度。代表性工具是vite和snowpack

    推荐阅读:

    前端模块化的十年征程: zhuanlan.zhihu.com/p/265632724

    聊聊ESM,Bundle,Bundleless,Vite,Snowpack: https://segmentfault.com/a/1190000025137845?_ea=67042700#item-2-1

  • 相关阅读:
    jQuery 插件为什么要return this.each()
    Android中TextView setText int 报错
    局部打印插件 jquery.PrintArea.js
    Jdbc Url 设置allowMultiQueries为true和false时底层处理机制研究
    mysql-unsha1:在未知密码情况下,登录任意MYSQL数据库
    Wireshark实战之抓包MySQL Java客户端
    linux 文件句柄数查看命令
    Java1.8 JDK源码中,对两个类进行 按位与 操作是什么意思
    linux下面覆盖文件,如何实现直接覆盖,不提示
    比特币算法——SHA256算法介绍
  • 原文地址:https://www.cnblogs.com/terrymin/p/15205634.html
Copyright © 2011-2022 走看看