初步探究ES6之module模块化
来源:互联网 发布:淘宝秒杀脚本 编辑:程序博客网 时间:2024/05/16 04:56
多人开发javascript时伴随着命名冲突等问题,先后有了模拟块级作用域、命名空间、模块化开发等方法。
之前,模块化开发一直是由第三方库来模拟的,比较知名的有AMD规范和CMD规范。
两个规范分别对应requirejs和seajs。
而现在,ES6提出了自己的模块化统一标准。
一个ES6的模块是一个包含了js代码的文件。ES6里没有所谓的module关键字,一个模块就是一个普通的脚本文件,除了以下两个区别:
- ES6中的模块自动开启严格模式。
- 模块中可以使用import和export。
导入和导出
我们可以通过import和export关键字将函数或对象导入和导出模块。
先来说说export,在模块中声明的任何东西都是默认私有的,如果想对其他模块public,必须将那部分代码export。最简单的方法就是添加一个export关键字:
// kittydar.jsexport function detectCats(canvas, options) {var kittydar = new Kittydar(options);return kittydar.detectCats(canvas);}export class Kittydar {... several methods doing image processing ...}// This helper function isn't exported.function resizeCanvas() {...}...
不再有跨文件或跨模块的全局变量,export声明的那部分就是这个模块的public API。而在另外一个文件中,我们可以导入这个模块并且使用detectCat方法:
// demo.js - Kittydar demo programimport {detectCats} from "kittydar.js";function go() {var canvas = document.getElementById("catpix");var cats = detectCats(canvas);drawRectangles(canvas, cats);}
如果需要导入多个模块中的接口,如下:
import {detectCats, Kittydar} from "kittydar.js";
我们也可以通过一行代码将本模块所有需要public的方法公开:
export {detectCats, Kittydar};
这样就不用一个个地添加export关键字了。
命名冲突
上面介绍了模块中的导入和导出,那么如果导入的变量名和模块中的变量名冲突了应该如何是好呢?放心,ES6允许我们为导入的内容重命名:
import {flip as flipOmelet} from "eggs.js";import {flip as flipHouse} from "real-estate.js";
这样就将从eggs模块来的flip改为了flipOmelet,从real-estate模块来的flip改为了flipHouse,从而避免了冲突。
同样的,我们也可以在模块导出变量名时进行重命名:
function v1() { ... }function v2() { ... }export {v1 as streamV1,v2 as streamV2,v2 as streamLatestVersion};
1 0
- 初步探究ES6之module模块化
- 初步探究ES6之生成器
- 初步探究ES6之解构
- 初步探究ES6之箭头函数
- 初步探究ES6之Symbol类型
- 初步探究ES6之Proxy代理
- 初步探究ES6之class类
- 初步探究ES6之序章
- 初步探究ES6之箭头函数
- 初步探究ES6之箭头函数
- 初步探究ES6之箭头函数
- 初步探究ES6之Proxy代理
- ES6 Class Module模块化 案例
- 初步探究ES6之for循环和Map,Set
- 初步探究ES6之for循环和Map,Set
- ES6之代码模块化
- ES6 模块化(Module)export和import详解
- 学习笔记:ES6之模块化
- 将三原色转化为十六进制
- android中xml tools属性详解
- 程序员常用网站汇总
- View与ViewGroup及其布局介绍
- 学习iSCSI
- 初步探究ES6之module模块化
- Codeforces Round #146 (Div. 2) C. LCM Challenge
- KeyValuePair 和 Dictionary 的关系
- iptables防火墙原理详解
- DWR无刷新文件上传简单实例
- win7 安装 python zbar
- 查看文章 mysql:表注释和字段注释
- 第13周、项目—验证算法 (3)
- Eclipse下安装Scala插件