zoukankan      html  css  js  c++  java
  • JavaScript模块化

    一、现况

    ①JavaScript天生不支持模块化,PHP中可以可以直接require和include引入文件,nodejs里采用require、exports

    在浏览器里也可以和nodejs中的模块一样来编程,script标签可以用来加载,但是必须考虑加载的顺序问题,可以使用一些第三方库,比如require.js(AMD)和sea.js(CMD)

    ③无论是CommonJS、AMD、CMD、UMD、EcmaScript6 Modules 官方规范,都是为了解决JavaScript的模块化问题,CommonJS、AMD、CMD都是第三方开发出来的

    ④EcmaScript6 Modules是EcmaScript在2015年发布的EcmaScript 2016官方标准里对JavaScript模块化的支持,也就是说天生就支持了,虽然标准已经发布,但是很多JavaScript运行还不支持

    ⑤webpack也是为了解决JavaScript的模块化问题,webpack对于CommonJS、AMD、CMD、EcmaScript6 Modules都支持,也是发展相对较快的原因

    二、ES6的模块规范

    ①导出 import(require),导出export(module.exports)

    ②导出默认成员

    // 默认成员只能导出一个,否则报错
    export default 成员

    ③加载默认成员

    // 如果没有default 成员,则加载到的就是undefined
    import xxx from '模块标识'

    ④导出多个成员

    // export 必须引用到内部的一个成员
    export const a = 123
    export const b = 456
    export function fn ( ) {
          console.log( ' fn ' )        
    }

    ⑤如果觉得上面的方式比较麻烦,可以使用以下的方式来导出多个成员

    const a = 123
    const b = 456
    function fn ( ) {
          console.log( ' fn ' )        
    }
    // 注意:这不是对象的简写方式,这是导出的特殊语法,
    // 这种方式也不是覆盖,后面还可以持续导出
    export{
        a,
        b,
        fn
    }
    
    //可以继续增加导出的成员
    export function add(x,y) {
        return x + y
    }
    // 最终导出的实际上是 a,b,fn,add

    ⑥按需加载指定的多个成员

    import {a,b,fn} from '模块标识'

    ⑦一次性加载所有的导出成员

    import * as xxx from '模块标识'
  • 相关阅读:
    jquery分析之文件
    利用avalon+原生js来制作日历空间(一)
    页面中,如果因为ajax导致页面有一段时间的空白期,应该如何处理。
    无限轮播图的制作
    Kalendae——一款功能强大的日历插件
    web页面制作-环游记(二)
    web页面制作-环游记(一)
    javascript数据类型(二)
    VMware安装&在VMware中安装CentOS7
    Jenkins集成Allure报告详解-亲历噢
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9404791.html
Copyright © 2011-2022 走看看