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 相关文章推荐
javascript:以前写的xmlhttp池,代码
May 18 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
JavaScript面向对象编程入门教程
Apr 16 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
May 26 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
Feb 17 Javascript
JS获取元素多层嵌套思路详解
May 16 Javascript
Bootstrap学习笔记之css样式设计(2)
Jun 07 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
Jun 09 jQuery
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
JavaScript装饰者模式原理与用法实例详解
Mar 09 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
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
深入PHP FTP类的详解
2013/06/13 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
javascript offsetX与layerX区别
2010/03/12 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
javascript中length属性的探索
2011/07/31 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
python日志模块logbook使用方法
2019/09/19 Python
提升python处理速度原理及方法实例
2019/12/25 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
考博自荐信
2013/10/25 职场文书
《中华少年》教学反思
2014/02/15 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2014年教务处工作总结
2014/12/03 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
廉洁自律个人总结
2015/02/14 职场文书