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实现的listview效果
Apr 28 Javascript
IE和Firefox下javascript的兼容写法小结
Dec 10 Javascript
解决jquery中美元符号命名冲突问题
Jan 08 Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 Javascript
Javascript 按位与运算符 (&)使用介绍
Feb 04 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
js 动态修改css文件用到了cssRule
Aug 20 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
Apr 22 Javascript
iview table render集成switch开关的实例
Mar 14 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 PDOStatement::setFetchMode讲解
2019/02/03 PHP
javascript闭包入门示例
2014/04/30 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
python多线程分块读取文件
2019/08/29 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
python调用win32接口进行截图的示例
2020/11/11 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
理货员的岗位职责
2013/11/23 职场文书
家长会主持词
2014/03/26 职场文书
保险专业求职信
2014/07/07 职场文书
个人自查自纠材料
2014/10/14 职场文书
名人传读书笔记
2015/06/26 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python