1.模块化的好处

小的、组织良好的代码远比庞大的代码更容易理解和维护。优化程序结构和组织方式的一种方式是将代码拆分成小的、松散的片段或模块。

2.ES6之前的实现

2.1 模块模式

在E6之前,没有内置的模块,开发者们不得不创造性地发挥JS现有的特性,最流行的方式之一是通过立即执行函数的闭包实现模块。

  • 使用立即执行函数创建定义模块变量的闭包,从外部作用域无法访问这些变量。
  • 使用闭包可以使模块变量保持活跃。
  • 最流行的是模块模式,通常采用立即执行函数,并返回一个新对象作为模块的公共接口。

2.2 AMD

  • 提供define函数定义模块,可定义依赖和工厂函数(初始化)
    • 在浏览器端使用
  • 可以自动解决依赖,无需考虑引用顺序
  • 异步加载、避免阻塞
  • 同一个文件定义多个模块

2.3 commonJS

  • 语法简单,模块只需定义module.export属性,引用也只需require函数
  • 是Node.js的默认模块模式,在服务端流行
  • 可以同步加载
  • 一个文件为一个模块

3.ES6实现

ES6结合了AMD和commonJS的特点,语法如commonJS简单,并提供AMD类似的异步加载机制。

  • ES6模块基于文件,一个文件为一个模块
  • 通过关键字export导出标识符
  • 在其他模块通过import引入标识符
  • 模块可以使用默认导出,使用export default导出整个模块
  • export与import都可以通过关键字as使用别名

Js忍者秘籍-代码模块化相关推荐

  1. js忍者秘籍读书笔记(前四章)

    js忍者秘籍读书记录(第2版) 以下文章都是从书中所得,自己记录了一些本人认为比较重要的东西,方便日后查找 记录原因 之前大概花了一个月时间看完了这本书,但是中间因为一些原因,大概中断了10天左右,后 ...

  2. JS忍者秘籍读书笔记(已完结)

    1.函数也可以添加属性 利用计算素数的例子来说明:可以通过函数的属性来缓存结果,提升性能. 这里是函数的属性,用this的话会绑定到window上,函数创建默认this为window function ...

  3. javascript忍者秘籍(第二版)翻译学习 第一章 JavaScript无处不在

    前言废话(立flag) <javascript忍者秘籍第二版>这本书据说是JQUERY之父写的,emmm,肯定值得我这种菜狗来学习膜拜,所以打算花时间来把这本书通读记录一便,因为是看的英文 ...

  4. 《JavaScript忍者秘籍》——1.3 跨浏览器注意事项

    本节书摘来自异步社区<JavaScript忍者秘籍>一书中的第1章,第1.3节,作者:[美]John Resig(莱西格) , Bear Bibeault(贝比奥特) 译者: 徐涛 更多章 ...

  5. 基于Vue.js的企业级前端代码架构设计设想

    在前端架构设计这块也已经工作了一段时间,也翻遍了很多书籍,但是就目前来说笔者还是没有看过真正把前端架构讲好的书,加上现在前端技术的发展诞生了许多新的框架,如:vue.react.angular,这也越 ...

  6. 修改js文件需要重启服务器,关于Node.js中频繁修改代码重启服务器的问题

    我们可以使用一个第三方命名行工具,nodemon 来帮我们解决频繁修改代码重启服务器问题. nodemon 是一个基于 Node.jsNode.js 开发的第三方命令行工具,我们使用的时候需要独立安装 ...

  7. js php滚动图代码,JavaScript_JS实现的N多简单无缝滚动代码(包含图文效果),本文实例讲述了JS实现的N多简 - phpStudy...

    JS实现的N多简单无缝滚动代码(包含图文效果) 本文实例讲述了JS实现的N多简单无缝滚动代码.分享给大家供大家参考,具体如下: 实现原理很简单,注册事件之后,立即将元素的innerHTML累加一次. ...

  8. Js弹性漂浮广告代码

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  9. seo黑帽劫持用的php,黑帽seo 论坛:黑帽seo防止网站被k的js劫持跳转代码

    由于目前百度搜索百度搜索引擎对于js代码还没有办法完全辨别,因此也就出现了运用js代码跳转的黑帽优化提升手法.现如今在网络上有关js跳转代码不计其数,但是作为黑帽优化提升的seo手法之一,如何确保有效 ...

最新文章

  1. SpringCloud_Zuul
  2. rust货轮什么时候出现_与 Rust 在一起的四年
  3. java线程暂停_Java之线程停止
  4. java 实体类 临时注解_JPA:Java持久层API--配置流程
  5. 写博客是一种乐趣,一种需要培养的乐趣,Java程序员最大的悲哀是什么
  6. Mathematical operation
  7. 拓端tecdat|python对网络图networkx进行社区检测和彩色绘图
  8. idea 内存溢出问题
  9. 自定义自己的笔记本做WiFi热点
  10. java语言运行机制
  11. python第二十四天
  12. 将字符串中的数字字符转换为对应的数字,并且求和输出
  13. Conway’s Game of Life介绍及实现
  14. JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题的解决方法
  15. 【剑指Offer】个人学习笔记_61_扑克牌中的顺子
  16. Android 10.0获取本地视频及其预览图
  17. BZOJ 4808(马-二分图最大独立集)
  18. python读取文件夹下的文件名写入excel(高效办公)
  19. php仿银行电子口令卡
  20. c 语言程序设计 英文,c程序设计语言 英文版

热门文章

  1. JavaScript ——〖猜数字游戏〗10次机会
  2. 《UE4游戏开发》之 《动画与特效、声音配合的方式》
  3. jdk版本越高越好吗_jdk是不是版本越新越好
  4. Redis存储对象条件查询(OLTP)
  5. Java 实现判断链表是否有环
  6. Spire.PDF for.NET 去水印方法 及用法示例
  7. Python中常用的配置文件
  8. 图的对抗性攻击与防御
  9. Mark Text - 简单优雅、免费开源的跨平台 MarkDown 编辑器
  10. ORA-12520:TNS监听程序无法为请求的服务器类型找到可用的处理程序解决