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 相关文章推荐
再谈querySelector和querySelectorAll的区别与联系
Apr 20 Javascript
jQuery对象与DOM对象之间的相互转换
Mar 03 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
thinkjs之页面跳转同步异步操作
Feb 05 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
Feb 10 Javascript
vue-resource拦截器设置头信息的实例
Oct 27 Javascript
react-native fetch的具体使用方法
Nov 01 Javascript
jQuery表单校验插件validator使用方法详解
Feb 18 jQuery
OpenLayers3实现地图显示功能
Sep 25 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 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
PHP chr()函数讲解
2019/02/11 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
js类中的公有变量和私有变量
2008/07/24 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
python 堆和优先队列的使用详解
2019/03/05 Python
使用python实现kNN分类算法
2019/10/16 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
五十岁生日宴会答谢词
2014/01/15 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
大学老师推荐信
2014/02/25 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
2014年度考核工作总结
2014/12/24 职场文书
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript