美文网首页
22Module语法

22Module语法

作者: 我_巨可爱 | 来源:发表于2017-11-09 13:44 被阅读0次

    概述

    1. CommonJS 是服务器模块加载规范,AMD 是浏览器模块加载规范
    • 前者,nodejs中requiremodule.exports
    • 后者,requireJS中requiredefined
    1. ES6 可以成为服务器和浏览器通用的模块加载方案
    • import {...} from ...export

    严格模式

    模块自动应用严格模式

    • 变量必须先声明后使用
    • 不能使用fn.callerfn.callee
    • 不能对evalarguments重新赋值
    • 不能使用delete删除变量,只能用来删除对象属性
    • 不能使用前缀0表示八进制
    • 禁止this指向全局对象
    • 添加保留字staticprotectedinterface

    export

    动态绑定

    1. 可以输出变量声明语句,函数定义等,不能直接输出值
    2. export 是和变量动态绑定,CommonJS 输出值的缓存
    3. as可以重命名,那么一个变量就可以输出多次
    // 正确方法
    export var a =1
    export function fn() {}
    // 错误方式
    var a = 1
    export a
    function fn() {}
    export fn
    // 错误方式改变后
    var a = 1
    export {a}
    function fn() {}
    export {fn}
    

    export default 默认输出

    其实相当于输入一个default的变量,之后跟的值赋值给变量。在导出的时候,允许import使用任何变量承接

    1. 导出变量的时候,exportexport default情况刚好相反
    2. 导出函数的时候,export default可以导出匿名函数和函数定义
    3. 在导入的时候,也稍有不同,不在使用{}
    // export 会报错的,export default 不会报错
    var a = 1
    export default a
    // export default 报错
    export default var a = 1
    

    import 命令

    静态执行

    1. import命令是在编译阶段执行的,因此先使用后引入是可以的。但是不能使用表达式和变量。
    2. import引入中的方法名必须和export导出的方法名一致
    3. 可以使用as重命名

    整体加载

    import * as all from ''

    1. 关键字*as
    2. 不允许运行时改变
    • wrong, all.foo = 'bar'

    import 和 export 复合写法

    作为了解,不深入

    1. 有些形式是不可以复合写的
    export {foo,bar} from ""
    

    模块的继承

    • 形式export * from ''
    • 其实相当于复合写法,先从文件中导入所有变量和方法,再全部导出
    • 这种形式会自动忽略文件中的export default

    跨模块常量

    • 常量使用const
    • 其他形式和普通的模块相同,在需要使用的模块中引入即可

    相关文章

      网友评论

          本文标题:22Module语法

          本文链接:https://www.haomeiwen.com/subject/ybhpmxtx.html