预告:JavaScript模块全览

以前写的文章急速Js全栈教程获得了不错的阅读量,霸屏掘金头条3天,点赞过千,阅读近万,甚至还有人在评论区打广告,可见也是一个小小的生态了;)。看来和JS全栈有关的内容,仍是有人很有兴趣的。今天看到的霸屏的,也是讲全栈的,见参考文章7前端

接下来要写的是模块。JavaScript Module 真是很讨厌,可是不得不了解的话题。奇葩在于:node

  1. 它一个很是老的语言,而且使用很是普遍
  2. 但是它不少年来也不支持模块。这得厂家当前是多大的心呢
  3. 再一个但是,它能够直接用现有的语言机制,实现本身的模块,这个就厉害了,由于它释放了社区的力量。事实证实,社区果真不可小看,这个年代,蚂蚁雄兵赛过大象的
  4. 再再一个可是,它的模块还能够有不少型的,这说的是分裂
  5. 这么多型的模块,还搞了各自独立的标准出来,这说的是整合

最近的ES2017,终于在前端也有了媲美后端的模块,可是你们并不许备把它用起来,不少人表示须要继续Webpack玩转ES6模块git

把ES6模块真用的起来,能够不在意Webpack等打包工具带来的加载优化,各类小文件没必要打包这点来讲,我看还得加上HTTP/2的配合就好不少了。这也是文章将要介绍的一个主旨吧。ES6模块的引入,确实有可能对当前主流的打包模式有些影响,参考文章6内有所论述es6

文章天然也很多,可是写做此文的理由仍是存在:github

  1. 我尚未看到一个完整的全览,而且结合HTTP/2的更加没有看到。
  2. 并且,在我看来,即便有了ES6模块,也得了解和学习以前拼出来的各类模块,由于社区内的代码还大量的使用这样的模块,其中的一些设计模式,好比IIFE,也是值得一看的。
  3. 看到JS社区的热情和推进力,相信JS发展的将来是美好的

参考文章很多,其中模块历史和选型以下:web

  1. 前端模块化开发那点历史
  2. 梳理的仍是比较清晰
  3. 有点黑客精神的小伙伴,玩的很广谱
  4. 介绍Bower
  5. npm for Beginners: A Guide for Front-end Developers
  6. Es6module 出来了,是否应该从新考虑打包的方案?
  7. 先后端分离 Vue + NodeJS(Koa) + MongoDB,从产品到开发,全栈实践没有看过的,不妨去看看。

提到模块,也不得不提到各类模块依赖管理工具,也还有前端工程化的内容。一个前端组件,却经常提到可使用npm安装此组件,但是npm是后端的nodejs领域的东西啊,因此,这样的提法是有些使人困惑的。好比为何NPM做为后端模块的管理工具,前端也在使用它,有什么优势和缺点,能够在这里了解显示状况:npm、bower、jamjs 等包管理器,哪一个比较好用?,还有这里npm and the front end,NPM官方也对npm在前端的使用,提出了本身的见解,捎带着,也有前端自动化,搜索词是 why a front end component install by npm,对于喜欢Google发现的人来讲,这类词颇有用 。npm

将来的文章的内容纲要:segmentfault

  1. 最古老的模块加载<script>标签
  2. 此方法的若干问题
  • 全局变量。全局命名污染和命名冲突
  • 依赖管理。都须要HTML管理,而不是分层管理依赖,多文件加载次序很是关键
  • 效率。太多HTTP请求,和并行加载效率低下
  1. 有问题引起的解决方法
  • 命令空间,匿名闭包、依赖引入
  1. 当前主流的模块技术
  • YUI方法,YUI Combo方法
  • Nodejs的作法,Commonjs方案
  • Nodejs借鉴,能够借鉴的(接口),不能够借鉴的(同步和异步)
  • Require.js实践,AMD和CMD,依赖就近原则
  • 从手写模块,到自动编译,Browerify,Webpack,Rollup
  1. 刚刚落地的模块技术
  • ES6模块,官方发力,对现有技术的影响
  • 弥补ES6问题,HTTP/2
  1. 最佳实践

写这篇文章,估计耗时2周左右。写预告的缘由,是但愿获得反馈,若是有些人支持的话,我就会写,若是你们兴趣缺缺,我也就不麻烦本身了。毕竟,本身搞懂是没必要写做的,写了的话,就是但愿能够讨论,能够获得反馈的。后端

能够经过点赞,来代表你的态度。设计模式

相关文章
相关标签/搜索