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 学习笔记(四)
Dec 31 Javascript
JS实现随机化快速排序的实例代码
Aug 01 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
Apr 11 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
微信小程序  wx.request合法域名配置详解
Nov 23 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
AngularJS入门教程一:路由用法初探
May 27 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
详解vue中v-model和v-bind绑定数据的异同
Aug 10 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
学习Vue组件实例
2018/04/28 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
pycharm永久激活超详细教程
2020/10/29 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
综艺节目策划方案
2014/06/13 职场文书
行政管理专业求职信
2014/07/06 职场文书
长江七号观后感
2015/06/11 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
超级详细实用的pycharm常用快捷键
2021/05/12 Python
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL