ES6知识点整理之模块化的应用详解


Posted in Javascript onApril 15, 2019

本文实例讲述了ES6知识点整理之模块化的应用。分享给大家供大家参考,具体如下:

目前浏览器还不能完全支持模块化,需要引入很多编译环境,下面在nodejs中来模拟ES6中的模块化

nodejs中针对模块化演示的配置

  • 环境的安装:$ npm install --save babel-cli babel-preset-node6
  • 运行:$ ./node_modules/.bin/babel-node.js --presets node6 ./your_script.js
  • 添加.babelrc文件, 编辑如下
{
 "presets": [
    "node6"
 ]
}

添加了这个文件,无需在运行时添加?presets参数

  • 参考链接:https://stackoverflow.com/questions/33604470/unexpected-token-import-in-nodejs5-and-babel

导出变量的三种模式

test1模块:

// 写法1
export var a = "I am a";
// 写法2
var b = "I am b";
export {b};
// 写法3
var c = "I am c";
export {c as d} // 将c重名为d, 外部也同样需要 import d

index 模块:

import {a, b, d} from './test1';
console.log(a); // I am a
console.log(b); // I am b
console.log(d); // I am c

异步导出模块的测试

test2模块 :

// 异步写法
var m = "I am m";
export {m};
setTimeout(()=>{
 m = "I am mm";
},1000);

index模块

import {m} from './test2';
console.log(m); // I am m
setTimeout(()=>{
 console.log(m); // I am mm
},1500);

多模块分别导出

test3 模块

var A = 1111,
 B = 2222,
 C = 3333;
var M = 'M';
export default M;
export {A as A1, B as B1, C as C1};

index 模块 :

import M, {A1, B1, C1} from './multi';
console.log(A1); // 1111
console.log(B1); // 2222
console.log(C1); // 3333
console.log(M); // M

对象的导出

User 模块 :

export class User{
 constructor(name){
  this.name = name;
 }
 get uname() {
  return this.name;
 }
 set uname(name) {
  this.name = name;
 }
}

index 模块 :

import {User} from './User';
var user = new User('Joh');
console.log(user.uname); // Joh
user.uname = 'Lily';
console.log(user.uname); // Lily

导出函数模块

func 模块

export function Log(str) {
 console.log(str);
}

index 模块

Log("I am log"); // I am log

重命名默认模块

rename 模块:

export default "rename";

index 模块:

import {default as nr} from './rename';
console.log(nr); // rename

默认模块和其他模块一起导出的方式

combine 模块:

export var a = 1;
export default 111;

方式1:

index 模块:

import {default as com, a as comA} from './com';
console.log(com); // 111
console.log(comA); // 1

方式2:

index 模块:

import t, { a as comA} from './com';
console.log(t); // 111 备注这里t可以以任何名称命名
console.log(comA); // 1

其他注意事项

  • 定义export时必须在顶层定义,其他地方是不能定义的,如函数内部
  • default后面不能带var导出,如:export default var name = ‘Joh'; 这样是不对的
  • 不要import * 导出全部模块,这样非常不好,不利于优化
  • {} 导入的不是默认模块,默认模块不需要带{}
  • 通过default导出的不会再次被修改,如果default导出的是一个数字变量,即使在其他地方修改了,它也不会被修改,保持原值不变
  • http://es6.ruanyifeng.com/#docs/module 这里有其他一些注意事项的总结

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
表格单元格交错着色实现思路及代码
Apr 01 Javascript
网站404页面3秒后跳到首页的实例代码
Aug 16 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
May 10 Javascript
1秒50万字!js实现关键词匹配
Aug 01 Javascript
JS简单实现浮动窗口效果示例
Sep 07 Javascript
js中开关变量使用实例
Feb 24 Javascript
通过js动态创建标签,并设置属性方法
Feb 24 Javascript
JS实现关键词高亮显示正则匹配
Jun 22 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
Vue 实现从文件中获取文本信息的方法详解
Oct 16 Javascript
微信小程序文章列表功能完整实例
Jun 03 Javascript
详解如何运行vue项目
Apr 15 #Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 #Javascript
vue--vuex详解
Apr 15 #Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 #Javascript
小程序数据通信方法大全(推荐)
Apr 15 #Javascript
前端面试知识点目录一览
Apr 15 #Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
Apr 15 #Javascript
You might like
桌面中心(一)创建数据库
2006/10/09 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
javascript之学会吝啬 精简代码
2010/04/25 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
大学生入党思想汇报
2014/01/01 职场文书
怒海潜将观后感
2015/06/11 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python