zoukankan      html  css  js  c++  java
  • 前端web模块化开发之ESModules

    模块化标准规范

    前端模块化规范经过不断的迭代更新,目前算是统一成了NodeJS环境下的CommonJS和浏览器环境下的ES Modules
    
    ES Modules是ECMAScript 2015(ES6)才出现的标准,所有其中必然是存在各种各样的兼容性问题,那么我们就不建议使用ES Modules?不,当然不是,经过webpack等一系列打包工具的流行,ES Modules现在已经得到普及,可以说是最主流的前端模块化方案了,相比于AMD这社区提出来开发的规范,ES Modules是语言层面实现的模块化,更加完善,也得到绝大多数浏览器的支持
    

    ES Modules在浏览器环境下的使用

    浏览器环境下使用ES Modules,可以通过在script标签中加入`type="module"`的方式来使这个script标签中的内容成为一个模块,可以以ES Module的标准执行其中的代码
    
    ```html
    <script type="module">
        console.log("this is a es module")
    </script>
    ```
    

    ES Modules基础特性

    1. 自动采用严格模式,忽略'use strict'

    2. 每个ES Module 都是运行在单独的私有作用域中,在module1中定义的变量不能直接在module2中使用,需要通过导出和导入操作,这样做的好处是不用但心模块中的变量在全局作用域中的污染

    3. ESM是通过CORS的方式请求外部JS模块的,不支持CORS的路径是不能访问的,会报跨域错误

      <script type="module" src="https://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
      

      上面引入的外部文件是不支持CORS的,所有浏览器会报如下信息,提示产生跨域:

      支持CORS的路径是不会报出此错误的:

      <script type="module" src="https://unpkg.com/jquery@3.4.1/dist/jquery.min.js"></script>
      

      在浏览器控制台的Sources中是可以找到此引入的:

      因为CORS不支持文件的方式访问,所以要在http server环境下访问,这个内容就不再过多赘述了,因为在实际开发中肯定都是在http server环境下进行开发的

    4. ESM的Script标签会自动延迟执行脚本,等同于Scrip标签中deffer属性,这样会使模块在页面加载完成后才会执行

  • 相关阅读:
    两数相加(B站看视频总结)
    正则表达式基础1
    C语言程序的错误和警告
    C语言运算符优先级和结合性一览表
    逻辑运算符及其优先级,C语言逻辑运算符及其优先级详解
    C 语言实例
    电脑不显示桌面怎么办?
    135编辑器安卓客户端
    C语言实例-大小写字母间的转换
    C 语言实例
  • 原文地址:https://www.cnblogs.com/MissSage/p/14963162.html
Copyright © 2011-2022 走看看