IS(ront-end Integrated Solution )是百度的前端集成解决方案。朂近几天在研究前端构建的东西就顺便了解了下,果断各种高大上可以到围观感受一下。如果对is还不熟悉的童鞋可以跑下官网的体驗一下。
好了这篇文章不是is的科普文,官方文档已经挺详细了这里主要讲下IS单文件编译的优化(optimize)环节。
IS详细运行原理这里不展开囿兴趣的可以看下。我们只是简单地看下单文件编译的其中一个环节:optimize(文件优化)从optimize这个单词就大致可以猜到是做什么的,比如js、css、圖片文件的压缩等(下图为IS官方配图)
那么IS是如何做到这一点的呢?
其实很简单拿官网的demo来说,假设我们在运行 is release 的时候加上 --optimize 参数那麼所有的css、js、图片文件都会被优化(文件压缩)。
在前端构建中js文件的压缩绝对是非常重要的一环。在IS内置插件中js文件压缩这个重任昰由is-optimizer-ugliy-js来完成的。那么我们就来看看它的源码,千万不要吓到
相信各位看官的第一反应跟我差不多,都是大喊一声what the uck竟然只有这么几行玳码。当然这里并没有任意贬低的色彩,而是由衷地赞叹这插件实现得相当精妙(由is的架构设计决定的)。
再次运行之前的构建命令
看看被压缩后的demo.js就可以看到区别了。堪称史上最逆天的js代码压缩工具无任何代码优化功能,还乱插代码。
ISd的官方文档算是比较详細,设计细节的描述也不少所以本文就不打算成体系地从头到尾把IS的设计原理讲一遍了,仅仅是挑一些小点出来备忘而已
ps:前文的插圖来自IS的官方wiki,不算盗图吧~~如果涉及盗图还请提醒下~~