现在TideSDK已经死了,我一直在寻找替代的'包装器'来运行HTML/CSS/JS应用程序作为独立的桌面应用程序.到目前为止,我遇到的三个可行选项是NW.js(以前称为node-webkit),括号-hell和Electron(以前称为atom-shell).
问题在于,在功能集,兼容性等方面似乎没有足够完整的三者之间的比较.我希望将其转化为关于(客观)差异的或多或少的规范线程.三,特别是关于:
node-inspector等.在作为应用程序开发人员进行选择时,哪些客观的技术差异很重要?
什么底层技术/库是基于Microsoft的新(免费)跨平台编辑器Visual Studio Code (推出5/29/2015) ?有传闻称这只是Github的Atom编辑重新命名.
我尝试将node-vlc与nw.js(v0.12.0-alpha2)一起使用.当我启动我的应用程序没有nw.js它工作,但当我用nw.js启动它时,我收到一个错误:
未捕获的错误:模块没有自行注册.",来源:/home/alexis/Bureau/dev/jukebox/node_modules/vlc/node_modules/ffi/node_modules/bindings/bindings.js(84)
我用nw-gyp尝试了一些命令,但它无法帮助我.我在Ubuntu 14,64位.
我们计划构建跨平台桌面应用程序.我们发现Node-Webkit是我们的完美选择.但GitHub开发了自己的框架,称为Electron,而不是使用Node-Webkit.
他们之间有什么区别?
我目前正在使用Node-webkit开发桌面应用程序.在此过程中,我需要从本地MySQL数据库中获取一些数据.
查询工作正常,但我无法弄清楚如何访问结果.我将所有这些存储在一个数组中,然后传递给一个函数.在控制台中,它们看起来像这样:
RowDataPacket {user_id: 101, ActionsPerformed: 20}
RowDataPacket {user_id: 102, ActionsPerformed: 110}
RowDataPacket {user_id: 104, ActionsPerformed: 3}
Run Code Online (Sandbox Code Playgroud)
这是查询结构:
var ret = [];
conn.query(SQLquery, function(err, rows, fields) {
if (err)
alert("...");
else {
for (var i of rows)
ret.push(i);
}
doStuffwithTheResult(ret);
}
Run Code Online (Sandbox Code Playgroud)
如何在doStuffwithTheResult函数中检索它?价值观更重要,但如果我能得到钥匙也会很棒.
虽然node-webkit很好,但对于hello world应用程序,mac和linux上的二进制文件超过70MB.不能接受的.
是否有可用的跨平台库只使用系统默认浏览器?我真的不在乎这是IE,或webkit,还是......?我认为二进制文件会小得多.
或者是否有任何可以轻松集成(系统)浏览器视图的跨平台语言?
谢谢.
我有一个带有的node-webkit项目main.js.在最顶端,我有
var updater = require("./updater.js");
Run Code Online (Sandbox Code Playgroud)
我有一个文件名updater.js在同一目录中main.js.当我运行应用程序时,我收到错误
Uncaught Error: Cannot find module './updater.js'
Run Code Online (Sandbox Code Playgroud)
updater.js 有一行:
module.exports = "Hello!";
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它不能要求文件.我见过另一个项目做同样的事情.我可以通过相同的require常规npm模块main.js.
我想在Electron(atom-shell)中清除缓存数据.我没有在Electron中找到任何类似gui.App.clearCache()(node-webkit api来清除缓存数据)的api.如果您发现任何api或任何其他方式,请告诉我.评论表示赞赏.
我想知道是否有最佳实践/正确方法为React组件设置右键菜单.
我目前有这个......
// nw is nw.gui from Node-Webkit
componentWillMount: function() {
var menu = new nw.Menu();
menu .append(new nw.MenuItem({
label: 'doSomething',
click: function() {
// doSomething
}
}));
// I'd like to know if this bit can be done in a cleaner/more succinct way...
// BEGIN
var that = this;
addEventListener('contextmenu', function(e){
e.preventDefault();
// Use the attributes property to uniquely identify this react component
// (so different elements can have different right click menus)
if (e.target.attributes[0].nodeValue == that.getDOMNode().attributes[0].nodeValue) {
menu.popup(e.x, …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一款JavaScript(pure js)基于游戏的游戏.游戏包含5个大型精灵表(例如2861×768和4096×4864).游戏开始时,所有5个精灵表都预先加载到画布元素.这5个精灵中的三个一起表示一个动画,其中每个精灵包含75个帧.当一个精灵以其动画结束时,我隐藏它并显示下一个精灵.当第二个精灵完成动画时,我隐藏它并显示第三个/最后一个.
当即将显示第二个或第三个精灵时,会发生0.5秒-1秒的小延迟.图像正在被解码.
这不是第一次发生的事情,它总是发生的事情.并且该动画每5分钟重复一次,并且总是发生小延迟.
我之所以使用canvas元素进行预加载,是因为我认为WebKit会丢弃解码图像一段时间未使用,而canvas元素会阻止WebKit将其从内存中删除.但这不起作用.
我已经尝试了几乎所有我所知道的优化.我甚至通过删除后代选择器等重构了我的所有CSS.
我用来绘制这些动画的渲染器是由我自己构建的,它工作得很完美,所以这不是问题,因为它在Firefox中工作得非常好.
编辑[2016/03/04]: 我用帆布制作了一个模式,结果更糟.它落后很多.而延迟仍然是一样的.仅在NW中,Chrome中的问题并不存在.
Codepen:我的渲染器http://codepen.io/anon/pen/JXPWXX
注意:如果我隐藏那些其他元素opacity:0.2而不是opacity:0,则问题不会发生.但是,我无法隐藏它们,因为它们仍然可见.它们不应该是可见的.如果我添加opacity:0.01它是不可见的,并且问题不会发生在Chrome中,但仍然存在于NW中.
在NW中,当我从不透明度开始:0.2到不透明度:1时,正在处理图像解码.在Chrome浏览器中也不会发生同样的事情.

我使用以下版本:
nw.js v0.12.3
io.js v1.2.0
Chromium 41.0.2272.76
commit hash: 591068b-b48a69e-27b6800-459755a-2bdc251-1764a45
Run Code Online (Sandbox Code Playgroud)
三个图像精灵分别为14.4MB,14.9MB和15.5MB.每个精灵包含75帧.
为什么会发生这种情况,我该如何预防呢?
node-webkit ×10
node.js ×5
electron ×4
javascript ×4
atom-editor ×1
html ×1
html5 ×1
html5-canvas ×1
large-files ×1
mysql ×1
node-ffi ×1
performance ×1
reactjs ×1
webkit ×1