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 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
IE下JS读取xml文件示例代码
Aug 05 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
js中reverse函数的用法详解
Dec 26 Javascript
javascript中clone对象详解
Dec 03 Javascript
jQuery中before()方法用法实例
Dec 25 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
Dec 17 Javascript
详解angularJs指令的3种绑定策略
Apr 13 Javascript
提升页面加载速度的插件InstantClick
Sep 12 Javascript
微信小程序实现左右列表联动
May 19 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
基于JavaScript实现控制下拉列表
May 08 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随机生成随机个数的字母组合示例
2014/01/14 PHP
php实现数据库的增删改查
2017/02/26 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
js实现楼层导航功能
2017/02/23 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
说一说Python logging
2016/04/15 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
详解python中list的使用
2019/03/15 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
财产分割协议书范本
2014/11/03 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
工商局个人工作总结
2015/03/03 职场文书
中学生运动会广播稿
2015/08/19 职场文书
基于Python实现股票收益率分析
2022/04/02 Python
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL