太爽了!用 JavaScript 在 Windows 上开发原生桌面应用?

家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

1. 什么是 WelsonJS

WelsonJS 可以让开发者在 Windows 内置 ECMAScript 引擎上使用 JavaScript、TypeScript、CoffeeScript、ReScript 和 HTML/CSS 构建 Windows 桌面应用。

WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.

WelsonJS 是一个先进的 JavaScript 框架,旨在应对传统解决方案可能失效的极端环境。与传统的 JavaScript 框架不同,WelsonJS 专注于在受限环境中执行脚本,即使在系统资源极少的情况下也能确保可靠的性能。

WelsonJS 的核心特点包括:

  • 轻量高效:WelsonJS 针对计算能力有限的环境进行了优化,可提供高效的脚本执行,且不会产生不必要的开销。
  • Windows ECMAScript 兼容性 :WelsonJS 旨在在基于 Windows 的系统上无缝运行,遵循 ECMAScript 标准,同时保持轻量级执行
  • 独立执行:与需要外部依赖的常见 JavaScript 运行时不同,WelsonJS 应用程序可以作为独立的应用程序运行,使其适用于嵌入式系统和隔离环境
  • 安全导向:以安全性为核心,确保脚本的受控执行,而不会损害系统完整性。
  • 极简设计:WelsonJS 去除了不必要的复杂性,专注于核心功能,从而最大限度地提高性能和可靠性。

WelsonJS 在以下场景中有一定的实际意义:

  • 遗留系统集成:WelsonJS 为在现代框架不适用的旧版 Windows 环境中运行 JavaScript 提供了实用的解决方案
  • 自动化和脚本编写:非常适合在受限环境中执行脚本,实现自动化工作流程和系统级脚本编写
  • 嵌入式应用:适用于资源受限的设备和系统,例如: 工业控制器和嵌入式平台
  • 安全至上环境:适用于对外部网络连接依赖有限的安全敏感型应用程序
  • 办公自动化:适用于使用 Microsoft Office 和各种基于 LLM 的人工智能(例如: ChatGPT)执行办公自动化任务

值得一提的是,WelsonJS 对操作系统依然有一定的要求:

  • 目前支持 Windows XP SP3 或更高版本,目前为 Windows 11 24H2
  • 对于运行 Windows 2000 或更早版本(例如: 95、98、Me)的系统需要特殊支持

2. 如何快速使用 WelsonJS

首先编写文件 lib/sayhello.js:

// lib/sayhello.js 文件
function say() {
    console.log("hello");
}
// 设置导出值
exports.say = say;
exports.VERSIONINFO = "SayHello (sayhello.js) version 0.1";
exports.AUTHOR = "gnh1201@catswords.re.kr";
exports.global = global;
exports.require = global.require;

接着创建 sayhello.js:

// sayhello.js 文件
var SayHello = require("lib/sayhello");
// 直接 require 模块
function main() {
    console.log("calling say()");
    SayHello.say();
    console.log("ended say()");
}
exports.main = main;

接着可以在控制台上执行脚本:

C:\Users\JohnDoe\Documents\GitHub\welsonjs> cscript app.js sayhello
calling say()
hello
ended say()

3. 如何快速发布 WelsonJS 应用

WelsonJS 框架建议以下应用发布方法:

  • 压缩成 Zip 文件,并使用启动器:将运行项目所需的文件和目录压缩成 Zip 文件,并与 WelsonJS 启动器一起发布。
  • 构建安装文件:使用 Inno Setup,安装配置文件(setup.iss 文件)已包含在内
  • 复制所有目录和文件:是最简单、最直接的方法

参考资料

https://github.com/gnh1201/welsonjs

https://www.catswords.social/@catswords_oss

https://gnh1201.link/