美文网首页
JavaScript (module)体系

JavaScript (module)体系

作者: 小唱同学 | 来源:发表于2019-08-16 19:00 被阅读0次
模块功能主要由两个命令构成:export和import。

export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
import命令具有提升效果,会提升到整个模块的头部,首先执行。

导入的名字必须和导出的名字相同,不一样会报错;导出的时候要有大括号,导入也要有大括号
  • export命令 常规导出
    一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。下面是一个 JS 文件,里面使用export命令输出变量。
    可以输出函数,变量,对象等
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;

export { firstName, lastName, year };
  • import命令 常规导入
    使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。
// main.js
import { firstName, lastName, year } from './profile.js';
function setName(element) {
  element.textContent = firstName + ' ' + lastName;
}

  • 模块的整体加载
export function area(radius) {
  return Math.PI * radius * radius;
}

export function circumference(radius) {
  return 2 * Math.PI * radius;
}

现在,加载这个模块。

import { area, circumference } from './circle';

console.log('圆面积:' + area(4));
console.log('圆周长:' + circumference(14));

export default 命令 默认export
// export-default.js
export default function () {
  console.log('foo');
}

上面代码是一个模块文件export-default.js,它的默认输出是一个函数。
其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。

import customName from './export-default';
customName(); // 'foo'

上面代码的import命令,可以用任意名称指向export-default.js输出的方法,这时就不需要知道原模块输出的函数名。需要注意的是,这时import命令后面,不使用大括号。

下面比较一下默认输出和正常输出。

// 第一组
export default function crc32() { // 输出
  // ...
}

import crc32 from 'crc32'; // 输入

// 第二组
export function crc32() { // 输出
  // ...
};

import {crc32} from 'crc32'; // 输入

上面代码的两组写法,第一组是使用export default时,对应的import语句不需要使用大括号;第二组是不使用export default时,对应的import语句需要使用大括号。

export default命令用于指定模块的默认输出。显然,一个模块只能有一个默认输出,因此export default命令只能使用一次。所以,import命令后面才不用加大括号,因为只可能唯一对应export default命令。

export 与 import 的复合写法

如果在一个模块之中,先输入后输出同一个模块,import语句可以与export语句写在一起。

export { foo, bar } from 'my_module';

// 可以简单理解为
import { foo, bar } from 'my_module';
export { foo, bar };

上面代码中,export和import语句可以结合在一起,写成一行。但需要注意的是,写成一行以后,foo和bar实际上并没有被导入当前模块,只是相当于对外转发了这两个接口,导致当前模块不能直接使用foo和bar。

相关文章

  • JavaScript (module)体系

    模块功能主要由两个命令构成:export和import。 export命令用于规定模块的对外接口,import命令...

  • Rollup 与 parcel

    一.Rollup ES 标准模块化规范-概述 历史上,JavaScript 一直没有模块(module)体系,无法...

  • 用require和import加载模块

    用require和import加载模块 历史上,JavaScript 一直没有模块(module)体系,无法将一个...

  • 模块化

    history JavaScript 一直没有模块(module)体系 在 ES6 之前,模块加载方案最主要有 C...

  • ES6模块化(module)简介

    前言 JavaScript在es6加入了模块(module)体系的语法,在此之前我们编写代码时必须依靠requir...

  • ES6模块化(module)简介

    前言JavaScript在es6加入了模块(module)体系的语法,在此之前我们编写代码时必须依靠require...

  • Module 的语法

    一、概述 JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单...

  • Es6-Module

    JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装...

  • 【JavaScript】Module 的语法

    概述 历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用...

  • 【ES6】Module的语法、加载实现

    概述 在ES6之前,JavaScript一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,...

网友评论

      本文标题:JavaScript (module)体系

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