视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
前端知识JavaScript-modules模块的学习
2020-11-27 19:32:45 责编:小采
文档


modules,就是JS的模块,我的理解就是,当有大量同类型或者有关联的数据和函数,方法需要当作一个整体展示的时候,可以单独定义成一个module也就是模块。Module意义就使得代码模块化,使你的代码分成一个个逻辑上的子集,每个子集处理特定的功能,然后被单独调用。

modules,也就是模块,自动采用严格模式,不管有没有在模块头部加上“user strict”,agruments不会自动反映函数参数的变化,以及禁止this指向全局对象

modules有两个关键字,Imports和Exports

  • Imports:用于输入其他模块提供的功能

  • Exports:用于规定对外的接口

  • 一个模块就是一个的文件,该文件内部所有的变量,外部无法获取,如果希望外部读取模块内部的某个变量,就必须使用export关键字输出变量,export,除了输出变量,还可以输出函数,class

    let a='a';
    let b='b';
    let c='c';
    export {a,b,c}

    如果为输出的变量重新取一个名字,import命令要使用as关键字,将name改成a,例如:

    import {name as a} from '.../xxx.js'

    另外,import具有提升效果,不管在哪里引用,都会被提升到整个模块的顶部,首先执行

    除了指定加载某个值,还可以将整体加载,即用星号(*)指定一个对象,所有输出值都加载在这个对象上。例如

    import * as a from '.../xxx.js'
    console.log(a.area(4));
    console.log(a.cire(4));

    export default,设置模块文件的默认输出,每个module只允许有一个默认输出,默认输出不需要知道模块的变量名,另外,export default不需要加大括号,因为,本质上,export default就是输出了一个叫做default的变量或者方法,然后系统允许你为它取任意名字

    var name="李四";
    export { name }
    //import { name } from "/.a.js" 
    可以写成:
    var name="李四";
    export default name
    //import name from "/.a.js" 这里name不需要大括号
    // modules.js
    function add(x, y) {
     return x * y;
    }
    export {add as default};
    // 等同于
    // export default add;
    
    // app.js
    import { default as xxx } from 'modules';
    // 等同于
    // import xxx from 'modules';

    如果加载多次,等同于合并之后加载,例如

    import {b} from '.../xxx.js'
    import {c} from '.../xxx.js'
    //等同于
    import {b,c} from '.../xxx.js'

    浏览器加载 ES6 模块,也使用<script>标签,但是要加入type="module"属性。

    <script type="module">
    </script>

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

    模块之中,顶层的this关键字返回undefined,而不是指向window。也就是说,在模块顶层使用this关键字,是无意义的,同时利用顶层的this等于undefined这个语法点,可以侦测当前代码是否在 ES6 模块之中。

    相关文章:

    学习web前端常用知识点的详细介绍

    JavaScript 入门基础知识 想学习js的朋友可以参考下

    下载本文
    显示全文
    专题