深入V8引擎-写在前面

310 阅读4分钟
  这一篇不打算讲技术,聊点别的吧,写这个的原因主要是看到了我博客园的签名,开始这个最终源码系列前想说点什么。
转行前端(达成)

入行1年vue源码(达成)、webpack源码(半达成)

入行2年争取读通node源码 (学习中)

入行3年进大厂(提前达成)或者入门V8引擎

目前转前端第二年,抓紧时间啦

  我是一个转行的前端,之前做的游戏运营。
  上面的每一句话都是一个非常艰辛的过程,作为一个211硕士,毕业之后一事无成,荒废了大概1年时间才决定转行做技术,为了弥补浪费的1年,付出了太多。
  对源码的兴趣在学前端的时候就有了,当时看的jQuery3.1,仅仅会点语法就去研究,想想实在是有点天真,差点被Sizzle引擎劝退。
  找到了第一份工作时还是比较开心的,虽然薪资非常低,但是事也不多,能建立信心和有时间研究自己的东西,好的开头是成功的一半嘛。当时就花了整整半年跑vue源码,我看源码的方法比较特殊,及其不建议。第一遍就是抄,一行行跟着写,然后对工具方法做注释。第二遍就直接在new Vue那里打了一个断点,从头看到尾看整个代码流程。最后跌跌撞撞也算是写完了,但是质量毫不客气的说,就是垃圾,可能除了我自己也没人看得懂。但是管他呢,写下来就是进步。
  webpack源码算是比较失败的一个选择。这是一个很伟大的工具,当时实在是太崇拜,所以对实现原理产生了浓厚的兴趣。但是当我深入研究时,发现其代码的可阅读性极差,充斥着大量不知所谓的方法,向下兼容、操作系统兼容,有时候写了一篇,全部都是贴代码,完全不知道该说什么。最后算是弃坑解脱了吧,市面上没人研究果然还是有道理的。
  就这样,第一年就过去了,中间也陆陆续续看了JRE的数据结构、express源码等等。
  第二年,我又定下了新的目标,看node源码。不太记得当时下这个决心的导火索了,可能是因为偶然间在VS编译成功了node,看到那个REPL的瞬间,也可能是为了看V8做垫脚石。总之,就这么开始了。然而很可惜,node源码本身真的没有营养,它就像一个502,把V8和libuv粘在了一起,node源码最终变成了libuv的源码。这个系列写的不多,相当于只把事件轮询走了一遍,中间沉迷过游戏,沉迷过赌博,甚至不小心进了头条,为了适应工作鸽了相当长一段时间。最后总算在前段时间闲了下来,补完了坑。
  今天是19年5月22日,第一份工作开始的时间是17年3月27日,一转眼已经两年多了。
  V8引擎在学JavaScript的时候就想着总有一天我要干掉它,现在终于来到了这个时候。但是说实话,这是个太过于难的目标,远超之前看过的任何源码。国内并没有多少人研究这个东西,参考资料寥寥无几。并且看V8引擎老实说,对面试除了装逼基本上毫无用处,前端大部分情况下不可能会接触到C++。业务方面,由于普遍没什么复杂逻辑,知道V8底层原理也懒得为了那一点点优化去特意搞事情。也就是说,做这件事只能纯粹靠兴趣来推动自己了,希望不要像红黑树那篇一样,耻辱下播了(那篇狗文章阅读量怎么那么高,哈哈哈哈)。
  这个系列我也不知道会写多少,不知道会怎么写,不知道写不写的下去。但是作为我做前端的最终目标,希望还是能有所输出的。
  如果V8引擎是一片大海,那我便是一叶孤舟,只身探索神秘之地,寻觅心目中的宝藏。
  先这样吧,最后许愿V8引擎,希望我能有个好对象,保佑我哟。