es6中容易忽视的细节(三)

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了es6中容易忽视的细节(三)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Proxy代理的坑

  • VAR obj = {index:'index'}
        var newObj = new PRoxy(obj,{
            get:(target,key)=>{
                @H_126_29@console.log(target)  // {index: "index"}
                return target[key]+123;
                // return target.key  如果这块这样返回的话访问newObj.index就会报undefined
            }
        })
        newObj.index    // index123
        实践中遇到这样的问题,但是具体什么原因还还弄清楚,有谁希望大家在底部留言告知,不胜感激

es6中模块与commonJs的区别

ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。

  • CommonJS 模块就是对象,输入时必须查找对象属性;ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。

    
    ```
    // CommonJS模块:这种引入方式只有在运行时加载,并且把整个fs对象引入,不能够静态加载
    let { stat, exists, reaDFile } = require('fs');
    // ES6模块:es6的模块中的每一个组件都是独立的,这样引入只把对应组件引入,能够静态加载(这就导致无法动态的加载需要模块,实现模块的按需加载)
    import { stat, exists, readFile } From 'fs';
    ```
  • import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同。

    var a={name:'zhangsan',sex:'man'};
    export {PErson as a};
    
    import {personX as person} form './person.js';
  • import命令有自动提升的功能,会自动提升到文件的顶部,所以在文件中只要我们引入即可使用,不需要考虑引入的位置,与let相反

    console.log(personX);    // {name:'zhangsan',sex:'man'};这样不会报错
    import {personX as person} form './person.js';
  • import是静态执行,所有在引入组件过程中能不能掺杂任何表达式

    // 报错
    if (x === 1) {
      import { foo } from 'module1';
    } else {
      import { foo } from 'module2';
    }
    import 'lodash'    // 这样会直接执行模块
  • import命令与require命令同时存在时会先执行import命令,因为import在静态解析阶段执行,所以它是一个模块之中最早执行的。
  • import与export结合使用

    export { es6 as default } from './someModule';
    
    // 等同于
    import { es6 } from './someModule';
    export default es6;
    这样暴露在另一个文件中引入的时候就可以 import anyName from 'es6';
  • import()类似于commonJs的require()区别是前者是异步执行,后者是同步执行

扩展

  • module.exports==export.default,这样暴露引入的时候就可以任意指定模块名称,exports暴露引入时只能用{}把内部组件包裹起来

脚本宝典总结

以上是脚本宝典为你收集整理的es6中容易忽视的细节(三)全部内容,希望文章能够帮你解决es6中容易忽视的细节(三)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。