- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在a blog post作者提到 Electron 将 Node 和 Chromium 组合成一个“单一上下文”,这意味着我们不必使用 Browserify 来转换代码。
我理解 Electron 的一个含义是您可以使用网络技术构建跨平台的桌面应用程序。我也理解我们能够写入文件系统的原因是因为 Electron 内置了 Node。另外,我们能够使用 HTML/CSS/JS/DevTools 的原因是因为 Chromium 内置了。但是,我不要以为这就是作者所说的。
最佳答案
Chromium 是一款基于 Webkit 的网络浏览器,具有 V8 javascript 引擎。它支持所有常用的浏览器和 DOM API,因此有利于制作网页而不擅长与底层系统交互。
Node.js 是通过剥离 V8 引擎、制作 headless 命令行应用程序并添加大量 API 来访问文件系统而构建的,require()
其他文件,运行其他 shell 程序等(您对真正的脚本语言的期望。
Electron 以一种简化的方式尝试用新的更通用的 Node.js 引擎替换 Chromium 中使用的 V8 引擎。它向 node.js 公开了一些额外的 API,以允许打开 Chromium 窗口,但也允许使用 <script>
的每个 Chromium 窗口。标签将用 node.js 引擎解释它。
为什么选择 Electron? Chromium 本身不能做到这一点的原因是因为它最初被设计成一个网络浏览器,而在网络浏览器中,文件系统 API 是闻所未闻的,因为通常文件是托管在远程服务器上并访问用户计算机上的文件会存在安全风险(因为为什么任何一个网页都可以访问您的所有文件?)。
require
语句现在开箱即用,因为 node.js 具有文件系统支持,允许它们从磁盘同步读取,而不需要将它们捆绑到同一个 javascript 文件中或从服务器请求它们。
关于javascript - Electron 结合 Node.js 和 Chromium 上下文意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166617/
我在 OS X 中构建菜单栏项时找到了一些示例代码。它使用了单个 |我不确定它的实际含义。 (我想做的是在菜单项左键单击时调用一个函数,但在右键单击时显示菜单) 这是我的代码 //Get refere
为什么它在第 23 行抛出编译错误。'a' 是 Apple 类的对象,col 是包含 Apple 对象的列表,但它仍然是抛出下面提到的编译错误: 类型 Collection 中的方法 add(capt
我有一个类A,它扩展了抽象类B。 让B有一个 protected 字段值 我想在 A 中使用这个字段。如果 A 没有 value,我可以编写 this.value 从 B 获取它。 与super.va
DBLint 用于检查数据库状态。有46条规则。在 www.dblint.org 上对每条规则都有一些简单的解释,但对规则 31 的描述如下: 定义的主键不是最小键:主键是最小的 super 键。如果
var aa: (()?) = (john.residence?.address = someAddress) var bb: ()? = john.residence?.printNumberOfR
我对 jquery 的可重用插件有点陌生。我已经多次遇到这段代码,但无法弄清楚究竟发生了什么。 (function( $ ){ ... })( jQuery ); 谁能帮我解答一下吗? 最佳答案
这个问题已经有答案了: int foo (int argc, ...) vs int foo() vs int foo(void) in C (4 个回答) 已关闭 9 年前。 所以我最近在 Hack
typedef struct Element { struct Element *next; void *data; } Element; 在 pop 函数中,(!(elem = *s
数据加载两次...意味着 AsyncTask onPostExecute 加载相同的数据两次?我的 AsyncTask onPostExecute 运行两次它加载相同的数据...我正在运行异步任务以从
运行“yomeanjs”时,我无限期地挂起“这可能需要几分钟”。当我尝试运行 grunt 时,它失败了,与 npm start 相同。 我使用的是 Win 8.1,并安装了最新的 Node 和 Mon
我正在看 big nerd ranch 的“Android Programming”中的这个页面,我对下面的句子感到困惑。它声明“当 Activity 被隐藏时, Activity 对象不存在”。这让
是否 const vector意味着它的元素是const也一样? 在下面的代码中, v[0].set (1234);在 void g ( const vector & v )产生编译器错误 const
我是 xml 相关事物的新手 我无法理解: SelectNodes(@"//Form/*[. = 'on']"); 注:SelectNodes是 XmlNode 的函数.(与 XmlDocument
我想方便地控制命令行参数。因此我想使用 ShellLib。 我的代码是这样的: ... #include ... EFI_STATUS EFIAPI UefiMain ( EFI_HANDL
着眼于更正 Debian 上/etc/init.d/hostapd 中的一个问题。但是,我不知道这行代码是做什么的,也不知道它是如何工作的 [ -n "$DAEMON_CONF" ] || exit
有没有人遇到过类似我下图所示的情况? 我有一个变量 landingBools.didSlowPast40Knots(正如您从调试打印输出中看到的那样)为假,但出于某种原因,if 语句评估为真。 知道为
我设法使用 flexbox 和一些非常基本的 JavaScript 为自己构建了三个下拉菜单。 因为我不太了解,所以我使用了一个简单的函数三次,而不是使用参数、变量和其他东西。我将其称为丑陋的“蛮力”
这周刚开始学习 javascript。我有一个非常菜鸟的问题。 exports.displayName = (undefined: ?string); 在 React Native 中意味着什么? 这
我正在阅读有关 NaN here 的内容它说: A comparison with a NaN always returns an unordered result even when compari
编码格式:引入*表示“从头开始重复”。例子。输入-{a,b,a,b,c,a,b,a,b,c,d}可以写成{a,b,*,c,*,d}。输出:5;例如2:ABCABCE,输出- 5。 这里*表示从头开始重
我是一名优秀的程序员,十分优秀!