写在开头
今天在阅读深入浅处node.js的时候读到了这段描述:
2.7 前后端共用模块
谈论了许多后端模块的具体实现之后,现在我们围绕CommonJS规范再次回到前端模块上。JavaScript在Node出现之后,比别的编程语言多了一项优势,那就是一些模块可以在前后端实现共用,这是因为很多API在各个宿主环境下都提供。但是在实际情况下,前后端的环境是略有差别的。
2.7.1模块的侧重点
前后端JavaScript分别搁置在HTTP的两端,他们扮演的角色并不同。浏览器的JavaScript需要经历从同一个服务器分发到多个客户端执行,而服务器端JavaScript则是相同的代码需要多次执行。前者的瓶颈在于带宽,后者的瓶颈在于CPU和内存等资源。前者需要通过网络加载代码,后者从磁盘中加载,两者的加载速度不在一个数量级上。
纵观Node的模块引入过程。几乎全都是同步的。尽管与Node强调异步的行为有些相反,但它是合理的。但是如果前端模块也采用同步的方式来引入,那将会在用户体验上造成很大的问题。UI在初始化过程中需要花费很多时间来等待脚本加载完成。
接下来,作者分析了CommonJS还列举了AMD,CMD的异步加载模式,但是由于书的出版时间是2013年了,作者并未介绍时下流行的ES6 Import语法。
那么我就产生了如下的问题
- require与import之间有何关系呢?
- require是否支持异步加载资源来满足浏览器端开发的需求呢?
- 服务器端与浏览器端是否可以使用统一的模块加载机制呢?
由于本