用 Nodejs 开发桌面应用果然不可取吗?
用 Nodejs 开发桌面应用果然不可取吗?
如题,使用 electron 开发了一个小工具,打包后发现执行程序的体积高达 120M ,虽然明知道里面本来就包含 nodejs 与 webkit ,但是也太夸张了。
以前用 nw 只放了个网页打包也要 70M+
还是不搞了。。
确实,不过自己写个工具来提升效率还是可以的,就是不便于分享给其他人。
是把 devDependencies 也打包进去了吧
有什么办法解决吗?
(:з」∠) 120M 有点大吧…感觉 100M 以内的程序还是可以接受的。
有一些小技巧的,
比如,打包是移除掉运行时不需要的,例如 devDependencies ,通过npm i --production
可以只安装 dependencies 包;
还有发布时压缩成 zip 包,可以把大小减少到 40-60MB ,如果压缩成 7z 包,可以减少到 30MB 。
其实可以做到 30MB 的,可以参考我昨天发布的项目
超过 10M 都不能忍……
除非是 js 写大型应用都炉火纯青了,不然开发效率低,运行速度慢,体积大。
你需要 react native
可以尝试下 sciter
Linux:
Atom - 74.6M
Sublime Text 3 - 6.4M
怪不得 Atom 打开这么慢
楼主 我用 nw 打包只有 20m 。。。。你到底打包了什么鸟东西
Atom 把 Chrome 都搞进去了,怎么可能不大…
我的电脑上 NW.JS 蜜汁打不开……放弃了学习 。
除 node_modules 拷到一个新目录然后只安装非 dev 的 modules
或者 webpack 后只复制 C++ Modules
接着打个 zip / 7z
并不是不可取,并不是不可取,并不是不可取!
重要的是你的应用质量怎样!如果只是一部分小功能,比如就一个爬取 V2EX RSS ,那真是不可取,可以考虑 chrome 扩展。
楼主给你看个项目: https://github.com/antoor/antSword 也用的 Electron ,文件是有点大,但是只要功能好,还是会有使用者愿意下载使用的,就好像 atom 编辑器,不也一样很大,但是还是会有大量的使用者吗?
主要,还是看应用做得怎样。做得好的话提供个在线更新功能,这点大小根本不算什么 :)
现在用的 teambition ,也是 electron 。 用了几天还行。倒是没关注多大。反正 appstore 点击下载就行了。就算 200M ,也是一分钟不到的事
你看看 QQ iOS 版 size 多少
teambition 有网页版啊
starUML 也是 node 写的,应该是没处理好吧,
你说切 tap 快,方便,还是放 dock 更好。工具型的,经常用的我都是下的软件。
小工具~自己用~咱都是用 c/py/js 什么写的~要界面上 java 写~反正自己用又不用好看 XD
但是对外发布的,长相有要求,快速迭代的上 electron ,每次更新只有几百 kb~已经核心的东西用 c 写也有效率(还有我之前写的最后大伯包只有 30m 来着~你一定放了奇怪的东西
之前用 nw.js 做的办公系统 也就 20m 左右。。
我现在就是这样做的,压缩后的体积是 50M ,在可以接受的范围里了。
是这个道理,现在的电脑的存储空间都白菜价了,动辄几百 G ,如果质量好的话确实不在乎软件的体积大小。但是就是觉得尽量可以小一些,更方便的通过网络分发给别人。
我的心态也就是能用就好,界面什么的完全不是我要考虑的事情,反正自己也写不好。
我的项目 https://github.com/luin/medis 是用 Electron 写的,和 nw 差不多,空项目是 90 MB ,写完后是 100 MB ,其实代码本身没有占多少空间。用 zip 打包后就只有 30 MB 了,而且发布到 Mac App Store 后都是压缩过的,用户下载时只需要下载 30 MB 左右就可以了,影响其实并不大。其实主要的问题是启动速度太慢了, Atom 其实启动挺慢的,只不过开始时会显示一个黑色背景,感知不太出来。
NW.js 做应用体积太大了
如果哪天 Google 在 Chrome 内部集成(比 Chrome APP 权限更高)的库就好了~酱紫 Chrome 可以顺手安利,各种应用可以共用内核,多好~然后其他浏览器的份额瞬间没了~然而那是不可能的。。。
说的热火朝天,都无视 viscose,atom 等等了?
标题让我想起了 DeepinLinux 的桌面, HTML5 写的,卡成傻逼。。。
某下载管理器新版改用 Chromium Embedded Framework 做 UI ,瞬间好感全无。
Go 编写的 Ngrok 有显示页面才不到 1MB
我记得 Firefox Marketplace 上面一大堆
主要看需求
他山界面内嵌 Gecko 22.0 支持 js,c++互调,支持 flash,xul,html,css,js,支持 windows,linux,发行大小 13MB,开源收费框架
用的 Electron 1.7.9
关于使用 Node.js 开发桌面应用的可行性,其实这是一个有争议的话题。虽然 Node.js 主要是为服务器端应用设计的,但随着技术的发展,它已经逐渐扩展到桌面应用开发领域。以下是一些观点,结合简单的代码示例来说明这个问题。
首先,Node.js 有着丰富的生态系统,包括许多可以用于桌面应用开发的库和框架。例如,Electron 就是一个非常流行的选择,它允许你使用 HTML、CSS 和 JavaScript 来构建跨平台的桌面应用。
// 使用 Electron 创建一个简单的桌面应用
const { app, BrowserWindow } = require('electron');
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
});
win.loadFile('index.html');
}
app.whenReady().then(createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
这段代码展示了如何使用 Electron 创建一个简单的桌面应用窗口。此外,Node.js 的高性能和异步 I/O 能力也使得它在处理某些桌面应用任务时表现出色。
然而,Node.js 在桌面应用开发方面也存在一些限制,比如对原生 GUI 组件的支持不如原生开发语言丰富。因此,是否选择 Node.js 进行桌面应用开发,取决于你的具体需求和项目要求。