小菜
小菜
in `electron v5.x`. You should add`nodeIntegration` in main process ```js mainWindow = new BrowserWindow({ height: 563, useContentSize: true, width: 1000, title: 'TBFE', webPreferences: { nodeIntegration: true // add this }...
在[此次pr: timers: refactor timer list processing](https://github.com/nodejs/node/commit/0f9efef05deb11dbbdf5adf96460839f5b332207#diff-0a5d4868b2b9b17cf9e2c11f1bd1311e) 之后,`listOnTimeout `流程转移到了`processTimers `中,并最终由 `timer_wrap.cc`中的`SetupTimers`注册,底层还是由`OnTimeout`调用运行
@sunstdot chromium中没有用这种形式的链表,chromium的setTimeout都是单个执行的,不是这种串行的。理论上来说node效率应该是高的,不知道chromium基于什么原因没有这么做,所以也不好品头论足了。 时间更新的机制和libuv有关,libuv在每次循环的时候都会通过`uv__update_time`不断更新时间为`loop->time`,提供给event-loop使用,而`uv_timer_start `相当于在本次循环的时间点注册了一个回调,在`loop->time+timeout`之后会调用回调。所以当`uv__update_time`时间更新到`loop->time+timeout`就会直接触发相应的回调(`OnTimeout `)了。

@liximomo 谢谢
@liximomo 第一个问题,文中有这样一句话: > timers每个阶段都会执行InternalCallback以及InternalCallback::Close,在这里为了简化,只画了timers的流程 所以在check阶段执行完之后还会执行相应的回调流程,即nextTick->Microtasks->继续event-loop。 可能这句话引起了你的误会,前面的timers指的是setTimeout和setImmediate而后面的timers特指timers的流程。之所以前面的timers没写成event-loop是因为在poll阶段调用的函数和timers API有细微区别。 第二个问题: 这篇文章只是介绍timers API和MicroTask nextTick之间的关系,fs本来是下一篇文章想写的,你既然问到了就简单介绍一下: > 会在 bootstrap 后 进入首先 event-loop 的 IO callback 首先你这句话就错了,fs所在的阶段是poll阶段,I/O callbacks阶段这个I/O主要是提供给libuv内部stream、IPC等用的。而fs中内部调用的是`AsyncWrap::MakeCallback`也可以实现对nextTick和MicroTasks的调用。所以你的第二个问题在poll之后,还是会调用nextTick和runMicroTasks,然后在继续执行check阶段
@liximomo 浏览器是基于[chromium](https://chromium.googlesource.com/chromium/src),你要是有兴趣可以研究一下。。源码也就10个G,简洁版的好像也有2个多G...我没研究过,囧
@cuiyongjian 这里有点类似以前ecma3时代的“模拟继承”`A.prototype = new B()`。你所指的继承应该是ecma6里的extends这种真正的差异化继承吧。但是即使是extends这种继承方式,super也会把constructor中的属性继承到子类上的。
遇坑1:vue 组件名尽量不要和路由重名,名字一样大小写不一样也不可(例如 组件叫`component`,而引用这个组建的路由叫`/Component`)。如果重名了,会出现路由找不到的情况
遇坑2: 一定要遵守标签的嵌套规则,尤其是``不要单独使用`tag="li"`属性,嵌套规则的不一致会造成client和server两端的dom树不一致,导致本地开发没问题而打包上线有问题