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 相关文章推荐
bgsound 背景音乐 的一些常用方法及特殊用法小结
May 11 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
js两种拼接字符串的简单方法(必看)
Sep 02 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
JS实现的数组去除重复数据算法小结
Nov 17 Javascript
浅谈React前后端同构防止重复渲染
Jan 05 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
Oct 14 Javascript
Angular8 实现table表格表头固定效果
Jan 03 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/10/28 PHP
php中chdir()函数用法实例
2014/11/13 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
Bootstrap基础学习
2015/06/16 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
老生常谈ES6中的类
2017/07/31 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
下载糗事百科的内容_python版
2008/12/07 Python
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
让世界充满爱演讲稿
2014/05/24 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
白银帝国观后感
2015/06/17 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
python 如何用terminal输入参数
2021/05/25 Python
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
使用Django框架创建项目
2022/06/10 Python