用 Nodejs 开发桌面应用果然不可取吗?

用 Nodejs 开发桌面应用果然不可取吗?

如题,使用 electron 开发了一个小工具,打包后发现执行程序的体积高达 120M ,虽然明知道里面本来就包含 nodejs 与 webkit ,但是也太夸张了。

44 回复

以前用 nw 只放了个网页打包也要 70M+
还是不搞了。。


确实,不过自己写个工具来提升效率还是可以的,就是不便于分享给其他人。

是把 devDependencies 也打包进去了吧

有什么办法解决吗?

(:з」∠) 120M 有点大吧…感觉 100M 以内的程序还是可以接受的。

有一些小技巧的,
比如,打包是移除掉运行时不需要的,例如 devDependencies ,通过npm i --production可以只安装 dependencies 包;
还有发布时压缩成 zip 包,可以把大小减少到 40-60MB ,如果压缩成 7z 包,可以减少到 30MB 。

其实可以做到 30MB 的,可以参考我昨天发布的项目

超过 10M 都不能忍……

除非是 js 写大型应用都炉火纯青了,不然开发效率低,运行速度慢,体积大。

跨平台的东西体积都大用起来都麻烦,用 aardio 就没有这些问题了,打包个 webkit 内核就 3MB ,用 HTMLayout 就更小,不但可以 HTML+CSS 写界面,还可以用上类似 PHP 的模板语法,最重要的是界面流畅,速度快 《使用 webkit 内核开发桌面软件界面》 http://bbs.aardio.com/forum.php?mod=viewthread&tid=12574&from=portal

你需要 react native

可以尝试下 sciter

你要跟.net 和 c++作竞争么 微软可以让.net 和 vc 运行库成为标准 你还没发把 electron 给每个用户装一次吧

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,开源收费框架

2018 了,我也是碰到这个问题,Electron 打包出来 124M,压缩之后压缩包包是 40M。。
正在查怎么缩减大小,未压缩状态下 30-40M 可以接受。。压缩后 10M 可以接受。
做的是一个翻译字幕文件的简单工具: https://github.com/1c7/translate-subtitle-file

用的 Electron 1.7.9

有人用过 Microsoft/react-native-windows 吗?

关于使用 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 进行桌面应用开发,取决于你的具体需求和项目要求。

回到顶部