ES6使用export和import实现模块化的方法


Posted in Javascript onSeptember 10, 2018

在ES6前, 前端就使用RequireJS或者seaJS实现模块化, requireJS是基于AMD规范的模块化库,  而像seaJS是基于CMD规范的模块化库,  两者都是为了为了推广前端模块化的工具, 更多有关AMD和CMD的区别, 后面参考给了几个链接;

现在ES6自带了模块化, 也是JS第一次支持module, 在很久以后 ,我们可以直接作用import和export在浏览器中导入和导出各个模块了, 一个js文件代表一个js模块;

现代浏览器对模块(module)支持程度不同, 目前都是使用babelJS, 或者Traceur把ES6代码转化为兼容ES5版本的js代码;

前端模块化

1. 模块化的好处

前后端分离以来,经常提到前端工程化,前端工程化是一个高层次的思想,前端工程化主要包括四个方面:模块化、组件化、规范化、自动化。而模块化和组件化是为工程化思想下相对较具体的开发方式,因此可以简单的认为模块化和组件化是工程化的表现形式。

模块化带来的好处:

   1 避免变量污染,命名冲突
   2 提高代码复用率
   3 提高维护性
   4 依赖关系的管理

2. 什么是模块化?

那具体什么是模块化呢,还是举简单的例子,我们要写一个实现A功能的JS代码,这个功能在项目其他位置也需要用到,那么我们就可以把这个功能看成一个模块采用一定的方式进行模块化编写,既能实现复用还可以分而治之,同理在写样式的时候,如果我们需要某种特殊的样式,会在很多地方应用,那么我们也可以采用一定的方式进行CSS的模块化,具体说来,JS模块化方案很多有AMD/CommonJS/UMD/ES6 Module等,CSS模块化开发大多是在less、sass、stylus等预处理器的import/mixin特性支持下实现的,具体技术大家自行学习。

3. 没有ES6模块化之前是怎么表达模块化的?

在ES6前, 前端就使用RequireJS或者seaJS实现模块化, requireJS是基于AMD规范的模块化库, 而像seaJS是基于CMD规范的模块化库, 两者都是为了为了推广前端模块化的工具

4. ES6的模块化

现在ES6自带了模块化, 也是JS第一次支持module,我们可以直接作用import和export在浏览器中导入和导出各个模块了, 一个js文件代表一个js模块;

ES6的模块化的基本规则或特点:

1:每一个模块只加载一次,每一个JS只执行一次,如果下次再去加载同目录下同文件,直接从内存中读取。

2:每一个模块内声明的变量都是局部变量, 不会污染全局作用域;

3:模块内部的变量或者函数可以通过export导出;

4:一个模块可以导入别的模块

5:ES6的模块自动采用严格模式

6:模块顶级作用域的this值为undefined

7:需要外部使用的部分,必须导出才可以

5.实际应用

// 普通的使用
  export var a = '1'
  export function sum(num1,num2){
    return num1+num2
  }
  
  import a from './a.js'
  import {sum} from './sum.js'
// 重命名导出与导入
  function sum(num1,num2){
    return num1+num2
  }
  export {sum as add}
  
  import {add as sum} from './sum.js'
  
// 模块的默认值

  export default function(num1,num2) {
    return num1 + num2
  }
  
// 在script标签中使用模块

  <script type="module" src="module.js"></script>
  <script type="module">
  import a from '../b.js'
  </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript动态绑定事件的简单实现代码
Dec 25 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
JS时间特效最常用的三款
Aug 19 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
Jan 17 Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
vue使用iframe嵌入网页的示例代码
Jun 09 Javascript
原生JS封装_new函数实现new关键字的功能
Aug 12 Javascript
vue slots 组件的组合/分发实例
Sep 06 Javascript
jsonp跨域获取百度联想词的方法分析
May 13 Javascript
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
Sep 10 #Javascript
浅谈微信小程序flex布局基础
Sep 10 #Javascript
微信小程序文章详情页面实现代码
Sep 10 #Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 #Javascript
JavaScript读写二进制数据的方法详解
Sep 09 #Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
Sep 08 #Javascript
在vue项目中集成graphql(vue-ApolloClient)
Sep 08 #Javascript
You might like
PHP与SQL注入攻击[一]
2007/04/17 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
javascript 实现map集合
2015/04/03 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python实现学生管理系统
2018/01/11 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
十岁生日同学答谢词
2014/01/19 职场文书
护士辞职信模板
2014/01/20 职场文书
合作经营协议书范本
2014/04/17 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
肖申克救赎观后感
2015/06/02 职场文书
django 认证类配置实现
2021/11/11 Python