其实我们现在这个webpack还有很多功能没实现,我们现在只支持了commonjs,没有支持amd/cmd,esmodule等转换,也没有提供umd的出口格式。但是想必,有了ast这样的利器,通过节点遍历与代码生成,好像没什么转换是我们实现不了的。
其他的还有webpack的loader是怎么运行的呢?plugin是怎么写的呢?如何调用loader和plugin呢?loader我们可以想象下,其实就是按照顺序和文件的后缀名,按照顺序(pitch,normal)去处理source,webpack自己有一个loaderRunner机制专门来做调度,但是自己实现也并不复杂。plugin更像是一个订阅者,去监听事件,做一些事,再去触发一些事(Tapable)。
这些内容,因为时间有限,我们会留在后期再来做讲解。但是在这个过程里,大家是可以去自我发挥一下,按照自己的思路去想一想,看看能做到哪步。
这些伟大的开源程序,未必有精妙易读的代码细节处理,但绝对是有常人所不能及的设计思路。代码书写只能体现你的经验,拓展自己的思路与设计,才是程序员们真正的王霸之路啊~~
