js模块化发展史与commonJs,ES6模块化规范介绍

本文详细介绍了JavaScript模块化的四个发展阶段,从早期的全局变量问题到CommonJS在Node.js中的应用,再到ES6的官方模块化标准。文章强调了模块化的必要性和不同阶段的关键事件,如V8引擎的发布、Node.js对CommonJS的实现以及ES6的模块化特性。此外,还对比了依赖延迟声明与依赖预声明的优缺点。
摘要由CSDN通过智能技术生成

JavaScript 模块化发展史

第一阶段

在 JavaScript 语言刚刚诞生,js只用于实现小的效果,js代码通常只有几百行,专业的前端工程师还没有出现,都是后端顺带完成前端工作
大事件

  • 1996年,NetScape将JavaScript语言提交给欧洲的一个标准制定阻止ECMA(欧洲计算机制造商协会)

  • 1998年,NetScape在与微软浏览器IE的竞争中失利,宣布破产

第二阶段

随着ajax的出现,改变了 JavaScript 在浏览器中扮演的角色,js可以与服务器进行交互,优化了用户体验。
js代码逐渐增加,前端逻辑逐渐复杂。
但是前端规模没有进一步扩大,主要由于以下几个原因

  • 浏览器解释执行JS的速度太慢
  • 用户端的电脑配置不足
  • 更多的代码带来了全局变量污染、依赖关系混乱等问题
    大事件
  • IE浏览器制霸市场后,几乎不再更新
  • ES4.0流产,导致JS语言10年间几乎毫无变化
  • 2008年ES5发布,仅解决了一些 JS API 不足的糟糕局面

第三阶段

到了2008年,谷歌的 V8 引擎发布,将JS的执行速度推上了一个新的台阶,甚至可以和后端语言媲美。
摩尔定律持续发酵,个人电脑的配置开始飞跃(摩尔定律指的是当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。)
同时,nodejs诞生,对模块化的需求进一步加深,

经过社区的激烈讨论,最终,形成了一个模块化方案,即鼎鼎大名的CommonJS,该方案,彻底解决了全局变量污染和依赖混乱的问题

该方案一出,立即被nodejs支持,于是,nodejs成为了第一个为JS语言实现模块化的平台,为前端接下来的迅猛发展奠定了实践基础
大事件

  • 2008年,V8发布
  • IE的市场逐步被 firefox 和 chrome 蚕食,现已无力回天
  • 2009年,nodejs发布,并附带commonjs模块化标准

第四阶段

随着后端模块化的诞生,前段模块化也相继出现AMD,CMD,终于在2015年,ES6发布,它提出了官方的模块化解决方案 —— ES6 模块化
前端模块化的出现使得一些框架相继诞生

既然JS也能编写大型应用,那么自然也需要像其他语言那样有解决复杂问题的开发框架

  • Angular、React、Vue等前端开发框架出现
  • Express、Koa等后端开发框架出现
  • 各种后端数据库驱动出现

要开发大型应用,自然少不了各种实用的第三方库的支持

  • npm包管理器出现,实用第三方库变得极其方便
  • webpack等构建工具出现,专门用于打包和部署

总结

由于ajax的出现,js代码量激增,同时也完成了更多的任务,但是由于代码量的增多,js暴露出来三个问题(1.js执行速度太慢2.用户电脑配置不高3.代码增多导致全局变量污染),v8引擎的出现与摩尔定律的发酵,解决了前两个问题,nodejs和commonJs的出现,也将前端模块化推上日程,于是出现了三种前端模块化解决方案(AMD,CMD,ES6),前端模块化的出现也给框架的诞生提供了基础

模块化规范介绍

由于nodejs刚刚发布的时候,前端没有统一的、官方的模块化规范,因此,它选择使用社区提供的CommonJS作为模块化规范

在学习CommonJS之前,首先认识两个重要的概念:模块的导出和模块的导入

何为导出

要理解模块的导出,首先要理解模块的含义

什么是模块?

模块就是一个JS文件,它实现了一部分功能,并隐藏自己的内部实现,同时提供了一些接口供其他模块使用

模块有两个核心要素:隐藏和暴露

     隐藏的,是自己内部的实现
     暴露的,是希望外部使用的接口

任何一个正常的模块化标准,都应该默认隐藏模块中的所有实现,而通过一些语法或api调用来暴露接口

何为导入

当需要使用一个模块时,使用的是该模块暴露的部分(导出的部分),隐藏的部分是永远无法使用的。

当通过某种语法或api去使用一个模块时,这个过程叫做模块的导入

nodejs对Com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值