随笔分类 -  node源码系列

摘要:终于可以填上坑了。 简单回顾一下之前JS篇内容,每一次setTimeout的调用,会在一个对象中添加一个键值对,键为延迟时间,值为一个链表,将所有该时间对应的事件串起来,图如下: 而每一个延迟键值对的触发,则是在链表头生成的时候就已经开始了,如下: 回顾完毕。 与JS篇一样,这一节也简单介绍libu 阅读全文
posted @ 2018-12-07 17:57 书生小龙 阅读(862) 评论(0) 推荐(0)
摘要:鸽了好久,最近沉迷游戏,继续写点什么吧,也不知道有没有人看。 其实这个node的源码也不知道该怎么写了,很多模块涉及的东西比较深,JS和C++两头看,中间被工作耽搁回来就一脸懵逼了,所以还是挑一些简单的吧! 这一篇选的是定时器模块,简单讲就是初学者都非常熟悉的setTimeout与setInterv 阅读全文
posted @ 2018-10-12 15:04 书生小龙 阅读(1694) 评论(4) 推荐(0)
摘要:这一节内容超级简单,纯JS,就当给自己放个假了,V8引擎和node的C++代码看得有点脑阔疼。 学过DOM的应该都知道一个API,叫addeventlistener,即事件绑定。这个东西贯穿了整个JS的学习过程,无论是刚开始的自己获取DOM手动绑,还是后期vue的直接@click,所有的交互都离不开 阅读全文
posted @ 2018-08-08 10:46 书生小龙 阅读(1303) 评论(0) 推荐(0)
摘要:node的源码分析还挺多的,不过像我这样愣头完全平铺源码做解析的貌似还没有,所以开个先例,从一个API来了解node的调用链。 首先上一张整体的图,网上翻到的,自己懒得画: 这里的层次结构十分的清晰,从上到下如果翻译成语言层面,依次是JS、C++、windows(UNIX)的系统API。 最高层也就 阅读全文
posted @ 2018-07-31 17:33 书生小龙 阅读(2573) 评论(2) 推荐(2)
摘要:我发现每次细看源码都能发现我之前写的一些东西是错误的,去改掉吧,又很不协调,不改吧,看着又脑阔疼…… 所以,这一节再探,是对之前一些说法的纠正,另外再缝缝补补一些新的内容。 错误在哪呢?在之前的初探中,有这么一块代码: 当时,我的理解是这样的: 辅助函数则是加载了internal/bootstrap 阅读全文
posted @ 2018-07-02 14:52 书生小龙 阅读(1242) 评论(0) 推荐(0)
摘要:原本打算是把node源码看得差不多了再去深入V8的,但是这两者基本上没办法分开讲。 与express是基于node的封装不同,node是基于V8的一个应用,源码内容已经渗透到V8层面,因此这章简述一下我目前理解的V8引擎吧。 首先需要理解的是V8是一个JS代码运行平台,可以将JS代码编译执行。 本节 阅读全文
posted @ 2018-06-27 12:42 书生小龙 阅读(5179) 评论(0) 推荐(0)
摘要:重新审视了一下上一篇的内容,配合源码发现有些地方说的不太对,或者不太严谨。 主要是关于内置模块引入的问题,当时我是这样描述的: 需要关注的只要那个RegisterBuiltinModules方法,从名字也可以看出来,就是加载内置模块。 然而并不是啊……从名字可以看出来,这只是一个注册方法。 Regi 阅读全文
posted @ 2018-06-14 14:33 书生小龙 阅读(4691) 评论(4) 推荐(4)
摘要:花了差不多两周时间过了下primer C++5th,完成了《C++从入门到精通》。(手动滑稽) 这两天看了下node源码的一些入口方法,其实还是比较懵逼的,语法倒不是难点,主要是大量的宏造成直接阅读上的不方便。 有些宏感觉真是一点鸟用都没有,比如说: 这玩意翻译成JS大概就是: JS中有些情况确实是 阅读全文
posted @ 2018-06-13 12:32 书生小龙 阅读(4187) 评论(0) 推荐(2)
摘要:整整弄了两天,踩了无数的坑,各种奇怪的error,最后终于编译成功了。 网上的教程基本上都过时了,或者是版本不对,都会报一些奇怪的错误,这里总结一下目前可行的流程。 node版本:v10.1.0。 首先需要一些准备工作: 1、Visual Studio 2017 传送门:https://www.vi 阅读全文
posted @ 2018-05-18 13:12 书生小龙 阅读(3972) 评论(3) 推荐(2)