目录

  • 1 module 模块化
    • 1.1 export
    • 1.2 import
    • 1.3 export default
    • 1.4 export 与 import 在同一模块使用
    • 1.5 import()

1 module 模块化

js module

  • ES6 的模块化分为导出(export)与导入(import)两个模块。
  • 模块导入导出各种类型的变量,如字符串,数值,函数,类。
  • export、import 都处于模块顶层

1.1 export

  • export 输出变量、函数、类

    • export 语句输出的接口,与其对应的值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。
    • 对应的 import 语句需要使用大括号。
// 1.
export var xxx = 123;
export var yyy = 'aaa';
export function multiply(x, y) {return x * y;
};export const multiply = (x, y) { }// 2.
var xxx = 123;
var yyy = 'aaa';
function multiply(x, y) {return x * y;
}export { xxx, yyy, multiply };// 3. 别名
export { multiply as ccc };// 4. 错误
export 1;var m = 1;
export m;  // 应该写成 export {m};

1.2 import

  • import 输入其他模块提供的功能

    • import 命令具有提升效果,会提升到整个模块的头部,首先执行
    • 只读属性:import 命令输入的变量都是只读的,可以改写 import 变量类型为对象的属性值,不能改写 import 变量类型为基本类型的值。
    • 单例模式:多次重复执行同一句 import 语句,那么只会执行一次,而不会执行多次。import 同一模块,声明不同接口引用,会声明对应变量,但只执行一次 import
    • 静态执行特性:import 是静态执行,编译阶段执行的,所以不能使用表达式和变量
// 1.
import { xxx, yyy, multiply } from "./profile.js";// 2. 别名
import { xxx as surname } from "./profile.js";// 3. 整体加载 *
import * as circle from "./circle";
//可以改写 import 变量类型为对象的属性值,不能改写 import 变量类型为基本类型的值。
import { a } from "./xxx.js";
a = {}; // errorimport { a } from "./xxx.js";
a.foo = "hello"; // a = { foo : 'hello' }

1.3 export default

  • export default 命令,为模块指定默认输出。

    • 对应的 import 语句不需要使用大括号;
    • 正是因为 export default 命令其实只是输出一个叫做 default 的变量,所以它后面不能跟变量声明语句。
    • 因为 export default 命令的本质是将后面的值,赋给 default 变量,所以可以直接将一个值写在 export default 之后。
    • 在一个文件或模块中,export、import 可以有多个,export default 仅有一个。
    • export default 中的 default 是对应的导出接口变量,本质上,export default 就是输出一个叫做 default 的变量或方法,然后系统允许你为它取任意名字。
    • export default 向外暴露的成员,可以使用任意变量来接收。
// 1.
export default function () {console.log('foo');
}// 2.
function foo() {console.log('foo');
}export default foo;// 3. 不能跟变量声明语句
export default var a = 1; // 错误
export var a = 1;  // 正确// 4. 直接将一个值写在后面
export default 42; // 正确
export 42; // 报错

1.4 export 与 import 在同一模块使用

  • exportimport 可以在同一模块使用,使用特点:

    • 可以将导出接口改名,包括 default。
    • 复合使用 export 与 import ,也可以导出全部,当前模块导出的接口会覆盖继承导出的。
// 1. 输入默认方法
import customName from "./export-default";// 2. 同时输入默认方法和其他接口
//
export default function (obj) {}export function each(obj, iterator, context) {}export { each as forEach };//
import _, { each, forEach } from "lodash";
// modules.js
function add(x, y) {return x * y;
}
export { add as default };
// 等同于
// export default add;// app.js
import { default as foo } from "modules";
// 等同于
// import foo from 'modules';
// export 与 import 的复合写法
// 如果在一个模块之中,先输入后输出同一个模块,import语句可以与export语句写在一起。
// 写成一行以后,foo和bar实际上并没有被导入当前模块,只是相当于对外转发了这两个接口,导致当前模块不能直接使用foo和bar。
export { foo, bar } from "my_module";// 可以简单理解为
import { foo, bar } from "my_module";
export { foo, bar };// 整体输出
export * from "my_module";

1.5 import()

  • import(./xxx.js)

    • 参数 specifier,指定所要加载的模块的位置
    • import 命令能够接受什么参数,import()函数就能接受什么参数,两者区别主要是后者为动态加载。
    • import()返回一个 Promise 对象
    • 它是运行时执行,什么时候运行到这一句,就会加载指定的模块。
    • import()函数与所加载的模块没有静态连接关系,这点也是与 import 语句不相同。
    • import()类似于 Node.js 的 require()方法,区别主要是前者是异步加载,后者是同步加载。

【JavaScript】 模块 module相关推荐

  1. javascript模块 (Module) 简介

    随着ES6的出现,js模块已经成为正式的标准了.曾经为了解决js模块问题而发展起来的民间秘籍,requireJs(AMD).SeaJs(CMD).Node(CommonJs),已经或者不久的将来会成为 ...

  2. javascript模块_JavaScript模块第2部分:模块捆绑

    javascript模块 by Preethi Kasireddy 通过Preethi Kasireddy JavaScript模块第2部分:模块捆绑 (JavaScript Modules Part ...

  3. Javascript模块规范(CommonJS规范AMD规范)

    Javascript模块化编程(AMD&CommonJS) 前端模块化开发的价值:https://github.com/seajs/seajs/issues/547 模块的写法 查看 AMD规 ...

  4. javascript 模块模式

    2019独角兽企业重金招聘Python工程师标准>>> 模块模式是JavaScript一种常用的编码模式.这是一般的理解,但也有一些高级应用没有得到很多关注.在本文中,我将回顾基础知 ...

  5. javascript模块_JavaScript中的模块

    javascript模块 JavaScript模块 (JavaScript Modules) One of the key features of programming fundamentals i ...

  6. 导出库的版本_了解 JavaScript 模块系统基础知识,搭建自己的库

    我想很多"前端工程师"都听过说过 "JavaScript 模块",那你们都知道如何处理它,以及它在日常工作中如何发挥作用吗? JS 模块系统到底是什么呢 随着 ...

  7. 田永强:优秀的JavaScript模块是怎样炼成的

    转自:http://blog.jobbole.com/26101/ 引言:如今的JavaScript已经是Web上最流行的语言,没有之一.从GitHub上的语言排行榜https://github.co ...

  8. javascript 的module 模块化

    The Module Pattern,模块模式,也译为模组模式,是一种通用的对代码进行模块化组织与定义的方式.这里所说的模块(Modules),是指实现某特定功能的一组方法和代码.许多现代语言都定义了 ...

  9. JavaScript模块机制

    commonJS规范 模块引用 你可以通过require来引入你所需要的模块,这个方法接收模块标识,以此引入一个模块的API到当前上下文中. const fs = require('fs'); 模块定 ...

  10. 优秀的JavaScript模块是怎样炼成的

    引言:如今的JavaScript已经是Web上最流行的语言,没有之一.从Github上的语言排行榜https://github.com/languages上即可看出,也是如今最为活跃的开源社区.随着N ...

最新文章

  1. 子视图屏蔽父视图手势
  2. 无法定位软件包 docker-ce_初三一模考试结束后,如何准确给孩子定位,平衡自招和裸考的关系...
  3. html中如何消除左边界,元素的局中对齐问题,CSS盒属性使用技巧,前端开发必备...
  4. 计算机基础课程教学创新,计算机基础课程教学学生创新能力的培养-计算机基础论文-计算机论文(12页)-原创力文档...
  5. 【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
  6. 转向AIOps之前,你应该做好哪些准备?
  7. 音视频技术开发周刊 | 147
  8. C++vector容器-数据存取
  9. TOMCAT启动完成但是ECLIPSE仍然显示starting....
  10. git线上服务器_pm2实现git仓库代码一键配置部署到线上服务器
  11. mongodb模糊查询_我叫Mongo,收了「查询基础篇」,值得你拥有
  12. C++使用简单的函数指针
  13. vmplayer虚拟机文件夹共享不生效解决方法
  14. 匀速运动小车卡尔曼_平衡小车卡尔曼滤波算法使用心得
  15. python公历转农历_Python 农历公历相互转换
  16. 热噪声 Thermal noise
  17. Android仿学习强国填空题考试界面
  18. 常用计算机防火墙软件,12款个人防火墙软件横向评测
  19. Spring-IoC-03
  20. 工具型产品如何建立自己的商业化模式?

热门文章

  1. 质量管理中的“二八法则”
  2. 1990 Count the Number of Experiments
  3. Stimulsoft Dashboards.WEB 23.1.8 完美Patch
  4. 大数据技术原理与应用 第一篇 大数据基础
  5. 计量经济学学习笔记:多重共线性、异方差、自相关
  6. JavaScript代码具体是怎么引入到HTML中的?
  7. CIKM2020 | 最新9篇推荐系统相关论文
  8. 手机录音如何转换成文字?学会这个简单方法,让你事半功倍!
  9. android 关于屏幕截屏的几种办法
  10. 【Python第一课】课程介绍