zoukankan      html  css  js  c++  java
  • Javascript在使用import 与export 区别及使用

    一、import与export的用法

    1、import的几种用法

    import defautName from 'modules.js';
    import { export } from 'modules.js';
    import { export as ex1 } from 'modules.js';
    import { export1, export2 } from 'modules.js';
    import { export1 as ex1, export2 as ex2 } from 'modules.js';
    import defautName,{export} from 'modules.js';
    import * as moduleName from 'modules.js';
    import defautName, * as moduleName from 'modules.js';
    import 'modules';
    

     解释说明:

    import 后面的from指定模块文件的位置,可以是相对路径,也可以是绝对路径,.js后缀可以省略。

    如果只是模块名,不带有路径,那么必须有配置文件,告诉Javascript引擎模块的位置。

    上面的as关键字,相当于import进来的值的别名。

    import * from 'xx' 将导入整个模块的内容,而import defaultName 和 import { export1,export2 } 将导入export的某个值或对象。

    最后一张方式import ‘module’ 将运行模块中的全局代码,而不导入任何值。

    2、export的几种用法

    export { name1, name2,..., nameN };
    export { variable1 as name1, variable2 as name2,..., nameN };
    export let name1, name2,..., nameN;
    export let let name1 =..., name2 =...,..., nameN;
    export function FunctionName() { };
    export class ClassName { }
    export default expression;
    export default function () { };
    export default function name() { };
    export { name1 as default };
    export * from ...;
    export { name1, name2 } from ...;
    

      解释说明

    module.js

    const ex1 = 'xxx';
    const fun = function () { };
    export { ex1, fun as demofun };
    export let ex2 = 'demo';
    export function multi(x, y) {
        return x * y;
    }
    

      

    对应的import 写法:import { ex1, demoFun, ex2, multiply } from 'module.js';

    默认导出,export 命名导出需要export 名字和import名字严格一致。而export default命令,为模块指定默认输出,在import 的时候可以随意命名名字。一个模块只能有一个默认输出,也就是说 export default 一个模块只能用一次。 用法:

    export default function add(x, y) { return x + y };
    import anyName from 'a.js';
    let name = 'b.js';
    export default name;
    import anyName from 'b.js';
    export default class { }
    import anyClass from 'c.js';
    export default 1;
    import value from 'd.js';
    

      

    二、区别:

    import 和js的发展历史息息相关,历史上 js没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。 在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。也就是我们常见的 require 方法。 比如 `let { stat, exists, readFile } = require('fs');ES6 在语言标准的层面上,实现了模块功能。ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。

    转发链接

  • 相关阅读:
    P1121 环状最大两段子段和
    无题
    cdoj 1485 柱爷搞子串 sam treap
    自然数幂和
    Gym 100341C AVL Trees NTT
    线性筛分解质因子
    codeforces 366 Ant Man dp
    UVALive 6914 Maze Mayhem 轮廓线dp
    hdu 5790 Prefix 字典树 主席树
    莫比乌斯反演个人小结
  • 原文地址:https://www.cnblogs.com/joexin/p/9691255.html
Copyright © 2011-2022 走看看