序二
“奇舞团”办公地点在“南瓜屋”7层,导航前端在“南瓜屋”8层。2017年某一天,我去8层的时候路过导航前端工位,梁超看到我,高兴地说:“李老师,博文正在写书呢。”我脱口而出:“谁是博文,给哪个出版社写?”由此我便认识了博文,也知道了他是王军花(本书策划编辑)发掘的作者。当时听到这个消息我也很兴奋,知道是在给图灵写书,而我又在图灵待过几年,熟悉图灵的“套路”,就忍不住当场给博文分享了一些选题和写作思路。听着我滔滔不绝地讲“写书经”,博文频频点头,好像很受启发的样子。
2018年年初,360 W3C工作组成立,博文加入了Web性能工作组。于是几乎每周的例会上,我都会问问博文新书写作和出版的进度。时值年末,这本书终于要出版了。而这时候,我因为支持智能音箱项目临时搬到了11层,开发、联调非常繁忙。11月16日下午,博文突然在微信上问我能不能帮他写个序。我说:“你能不能先给我看看书稿?”然后博文把我加到了他GitHub的私有仓库。
两周来,我利用空暇时间大致浏览了一遍书稿。无奈时间紧迫,大部分章节来不及细读。一是因为公司项目开发进度必须保证,二是自己还有一个字体服务的项目在并行迭代。虽然大部分内容未曾细读,但仅就仔细读过的几章而言,着实让我受益匪浅。我想,等到手头的项目开发告一段落之后,一定要抽时间重新研读两遍。没错,这本书至少要读两遍以上。
浏览书稿的时候,我也在回忆第一次跟博文分享“写书经”的情景。当时我说,要想让技术书畅销,一是读者定位必须是新手,因为新手人数众多;二是要注重实用,书中的例子最好能立即照搬到项目上。然而,这本书的读者定位显然不是新手,而且书中的源码分析似乎也不能直接套用到项目上。其实这也是没办法的事,因为博文写这本书的初衷就是把自己研究Vue.js源码的心得分享出来。就Vue.js源码分析而言,这本书确确实实是非常棒的。反正我是爱不释手。
这本书取名“深入浅出”是名副其实的。因为它确实有相当的深度,而且语言真的浅显易懂。最重要的是,与其他源代码分析类的技术书连篇累牍地堆砌、照搬项目源代码的做法截然不同,这本书里很少看到超过一页的代码片段。所有代码片段明显都被作者精心筛选、编排过,而且层层递进,加上了“新增”“修改”之类的注释。再辅以明白浅显的文字和配图,原本隐晦、抽象、艰深的代码逻辑,瞬间变得明白易懂,让人不时有“原来如此”之叹,继而“拍手称快”!
毋庸置疑,Vue.js是一个优秀的前端框架。一个优秀的前端框架如果没有一本优秀的解读著作,确实是一大缺憾。应该说,本书正是一本优秀的Vue.js源码解读专著。全书从一个新颖的“入口点”——“变化侦测”切入,逐步过渡到“虚拟DOM”和“模板编译”,最后展开分析Vue.js的整体架构。如果想读懂这本书,读者不仅要有一些Vue.js的实际使用经验,而且还要有一些编译原理(比如AST)相关的知识储备,这样才能更轻松地理解模板解析、优化与代码生成的原理。本书最后几章对Vue.js的实例方法和全局API,以及生命周期、指令和过滤器的解读,虽然借鉴了Vue.js官方文档,但作者更注重实现原理的分析,弥补了文档的不足。
虽然本书不是写给新手看的,但鉴于Vue.js在国内的用户基数巨大,我对它的销量还是很乐观的。这些年来,前端行业一直在飞速发展。行业的进步,导致对从业人员的要求也不断攀升。放眼未来,虽然仅仅会用某些框架还可以找到工作,但仅仅满足于会用一定无法走得更远。随着越来越多“聪明又勤奋”的人加入前端行列,能否洞悉前沿框架的设计和实现将会成为高级人才与普通人才的“分水岭”。
“欲穷千里目,更上一层楼。”我衷心希望博文这本用心之作,能够帮助千千万万的Vue.js用户从“知其然”跃进到“知其所以然”的境界。最后想说一句,有心购买本书的读者大可不必纠结于Vue.js的版本问题。因为优秀源代码背后的思想是永恒的、普适的,跟版本没有任何关系。早一天读到,早一天受益,仅此而已。
李松峰
360奇舞团高级前端开发工程师
前端TC委员、W3C AC代表
《JavaScript高级程序设计》译者
2018年12月2日