zoukankan      html  css  js  c++  java
  • ES6知识点整理之----Module----加载实现

    浏览器加载

    传统方法

    <!-- 页面内嵌的脚本 -->
    <script type="application/javascript">
      // module code
    </script>
    
    <!-- 外部脚本 -->
    <script type="application/javascript" src="path/to/myModule.js">
    </script>
    
    //浏览器脚本的默认语言是 JavaScript,type="application/javascript"可以省略。

    <script>标签打开deferasync属性,脚本就会异步加载。

    • defer:渲染完再执行,有多个defer脚本时,按页面出现的顺序加载
    • async:下载完就执行,哪个加载完成了就执行哪个模块
    <script src="path/to/myModule.js" defer></script>
    <script src="path/to/myModule.js" async></script>

    ES6模块加载

    也使用<script>标签,但是要加入type="module"属性。

    <script type="module" src="./foo.js"></script>

    浏览器对于带有type="module"<script>,都是异步加载。等到整个页面渲染完,再执行模块脚本,等同于打开了<script>标签的defer属性。

    <script type="module" src="./foo.js"></script>
    <!-- 等同于 -->
    <script type="module" src="./foo.js" defer></script>

    ES6 模块也允许内嵌在网页中,语法行为与加载外部脚本完全一致。

    <script type="module">
      import utils from "./utils.js";
    
      // other code
    </script>

    ES6 模块与 CommonJS 模块的差异

    • CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
    • CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。

    CommonJS 模块输出的是值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。除非写成一个函数,才能得到内部变动后的值。

    ES6 模块遇到模块加载命令import,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。

    由于 ES6 输入的模块变量,只是一个“符号连接”,所以这个变量是只读的,对它进行重新赋值会报错。

    Node 加载(略)

  • 相关阅读:
    linux时间同步ntp服务的安装与配置
    linux系统的初化始配置
    透明手机
    linux桌面的安装
    Linux中FTP服务器的搭建教程
    Linux怎样创建FTP服务器--修改用户默认目录-完美解决
    linux下vsftpd的安装及配置
    vsftpd快速部署_2018_lcf
    史上最详细的vsftpd配置文件详解2
    史上最详细的vsftpd配置文件讲解
  • 原文地址:https://www.cnblogs.com/adhehe/p/9688029.html
Copyright © 2011-2022 走看看