c++ -> Libuv -> V8 -> JS
nodejs 模块类型,有几种,他们之间有什么不同?
核心模块,在内建模块上层封装的js层接口。
内建模块,node内部原生的c++模块实现,这些模块调用了 Libuv 接口。
文件模块, 纯JS模块。
核心模块在启动进程时, 会被引入到内存中,以提高之后的调用效率。
为什么require可以不用声明而直接引用?
在Node中,每个模块都会被一个立即执行函数(IIFE)包裹着,在Node引入执行它们时,会传入一些参数
(function(exports, require, module, filename, dirname) { ...
Read more
Thu Feb 04 2021
1 min read
Beijing;
苹果为了购买因特尔芯片的成本和统一全平台架构的目的(Iphone, ipad, mac),自研的ARM芯开始集成到Mac中使用,
从原来的 Intel 64 到 ARM64导致需要系统层软件向上兼容老应用程序的运行,也就是把 Intel64 转换成 符合 ARM-64 架构的指令集。
这个软件由一个 Transitive Corporation 公司为苹果提供动态转换技术,也就是最近发布的 苹果11系统中 Rosetta2 组件的实现。
动态转换技术全称为: “Dynamic birnary translation”, 旨在原体系的芯片架构上翻译成可以在目标架构上运行的代码。所以更新了 Big Sur 系统,
就相当于兼容了ARM架构,也就是自带了这个组件。(如果本身就是intel架构的老机器,默认是不会开启这个组件的)。
对跨平台软件的影响
由于新系统big sur 相较于 ...
Read more
Mon Nov 30 2020
1 min read
Beijing;
此篇文章中所述的内容,未经过源码级的考核,像webpack一样,没有绝对的教材,对频繁改版的chromium也是如此,以下仅凭个人的一些思考,实践,参阅(Chromium官方文档),推导出来的,
所以,内容有可能并不完全正确。
此篇内容主要参考Webkit架构,早期的开源世界中,它被Apple创造出来,之后Google投入大量人力开发人员融入Webkit项目,熟悉webkit代码,
几年后,Google开发者们在这个项目中的提交量占据了一大半,成为了核心维护者。之后他们把Webkit fork 下来,为自己的多进程架构重构, 并更名为Blink(同webkit为浏览器内核),
为什么要fork下来,而不在原有的webkit上做多进程架构欧呢?主要有两个原因,
webkit应用场景和google要发展的方向不匹配,webkit作为一个开源的浏览器内核,提供嵌入式接口(高达几百 ...
Read more
Tue Jun 30 2020
4 min read
Beijing;
首先npm管理依赖的算法规则是,对于两个不同包的依赖的包的版本,采用这个这个包中增加 node_modules 然后作为独有的依赖引入。
所以这种情况下其实是引入了两套不同版本的包,但有一些情况其实这两个包是可以合在一起的,不必用两个增加编译工作的负担。
比如,如下一个例子说明
第一步,我们创建一个测试项目
md conflict-test
cd conflict-test
npm init -y
第二步我们在package.json的依赖中,添加两个包,分别是todd-a,todd-b.
{
"dependencies": {
"todd-a": "^1.0.0",
"todd-b": "^1.0.0"
}
}
那么todd-a 和 todd-b 这俩的依赖是不一样的,他们的依赖分别是
tod ...
Read more
Wed Jun 03 2020
2 min read
Beijing;
Nwjs has no lots of interfaces which could help us to use in our application, such as window-handler,
network-proxy, relaunch, and so on...
These functions would be important in some situations, and I exactly met the problem that cannot to relaunch my application
in nwjs after consulted the document of nwjs many times. In the end when I want to give up it, I found a new method to approach i ...
Read more
Mon May 25 2020
4 min read
Beijing;