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 相关文章推荐
jquery submit ie6下失效的原因分析及解决方法
Nov 15 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
JavaScript中return false的用法
Mar 12 Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 Javascript
angular4中关于表单的校验示例
Oct 16 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
jquery实现动态创建form并提交的方法示例
May 27 jQuery
vue element upload实现图片本地预览
Aug 20 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
Sep 23 Javascript
ES6之Proxy的get方法详解
Oct 11 Javascript
javascript实现拼图游戏
Jan 29 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
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
Python代码实现KNN算法
2017/12/20 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
Python线程同步的实现代码
2018/10/03 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
python2 对excel表格操作完整示例
2020/02/23 Python
python 5个实用的技巧
2020/09/27 Python
Django框架请求生命周期实现原理
2020/11/13 Python
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
男方父母证婚词
2014/01/12 职场文书