libui-node是基于libui库的node封装.libui库是一个简便的将本地原生的GUI封装的C语言库,并支持各平台(Mac,Linux,windows)。官网提供了第三方封装文档,开发者能够方便的实现本身语言的封装。目前市面上有基于swift,kotlin,python,php,node,lua.... 各类第三方语言的封装库,这里只介绍node封装库的使用方法。php
与electron比较起来,github上的数据比较起来得可怜的很。 社区也基本没啥活跃。 我的也比较喜欢electron彻底web化的任性开发。node
就目前看起来libui的主打卖点以下:python
stars 🌟 | forks 🍽 | issues ⚠️ | updated | created 🐣 | |
---|---|---|---|---|---|
libui-node | 1391 | 61 | 24 | Jun 19, 2018 | May 21, 2016 |
electron | 61773 | 8086 | 1195 | Jun 27, 2018 | Apr 12, 2013 |
Windowslinux
本人windows环境测试的时候老是报错缺乏c++配置文件(C:/microsoft.Cpp.Default.props),拒查说是由于libui和libui-node的编译库版本不一致致使,官方在解决。我没有安装vs2015或者vs2017,全新虚拟机按照如下方式完成。c++
- 安装microsoft .net framework4.5.1
- 安装Visual C++ Redistributable Package per Visual Studio 2013和 Visual C++ Redistributable Package per Visual Studio 2015
- npm --vcc-build-tools-parameters='[""--allWorkloads""]' install --global --production windows-build-tools
- npm install libui-node
而后就是各类的报错,必读不能进入依赖包目录(cd xxx),缺乏文件(C:/microsoft.Cpp.Default.props),不知道咋回事过了2个小时左右,从新安装就过了。。。。。。 (我恢复镜像后连续两次都是这么安装成功的,一脸懵逼,或许等做者升级以后的版本(0_3_0)会好些)git
Linuxgithub
If they are not provided by default in your distribution:web
macOSnpm
命令行下运行node命令:ubuntu
npm install -save libui-node
对应平台的libui二进制库会被自动下载安装,若是报错多是由于本地的npm库比较老,能够更新npm.其余错误能够看看this node-gyp issue.
下载线上的git库,其中docs为文档目录,examples为示例目录,运行示例看是否可正常运行:
#在根目录下先执行安装 npm install #直接运行control gallery示例 npm start #运行core api示例 npm run start-core #运行指定的示例文件 node <path to example file>
详细的文档查看git源码目录下的docs目录,下面作一个简单的例子
创建一个工程目录
mkdir test cd test npm install --save libui-node
新建一个index.js
const libui = require('libui-node'); const menu = new libui.UiMenu('File'); menu.appendQuitItem(); const win = libui.UiWindow('test', 400, 300, true); var widget = new libui.UiLabel(); widget.text = '呵呵呵呵'; win.setChild(widget); win.onClosing(()=>{ win.close(); libui.stopLoop(); }); libui.onShouldQuit(() => { win.close(); libui.stopLoop(); }); win.show(); libui.startLoop();
测试运行
node index.js
这些示例都源码的方式在node环境下执行,若是想打包的话那么就须要用到 launchui-packager 一个基于LaunchUI的跨平台打包器。
npm install --g launchui-packager
第一次执行的时候会下载对应平台的依赖包。
launchui-packager <name> <version> <entry> [options...]
好比上面作的开发中的示例能够如此打包:
#在工程目录下执行 launchui-packager hello 1.0.0 index.js --out output
<name> 应用名称 <version> 应用版本号 <entry> 应用的启动脚本,将被拷贝到最终包的 app/main.js
--out <path> 生成包的输出目录,默认当前目录 --platform <platform> 目标平台,支持win32, darwin (OS X) and linux. 默认当前平台一致(process.platform) --arch <arch> 包的架构,支持x64 (全平台支持) and ia32 (win32/linux),默认当前平台一致(process.arch) --overwrite 是否覆盖以前生成的包或目录,默认不覆盖 --pack <format> 定义打包的格式,目前只支持zip格式,默认生成应用目录不打包 --launchui-version <version> 定义下载的launchui版本,默认使用当前系统已有的 --launchui-cache <path> 定义launchui下载路径,默认~/.launchui --company <company> 公司名称,对应Windows下的CompanyName 属性设置 --copyright <copyright> 应用的版权信息,对应 windows下的LegalCopyright属性 和 Mac OS X下的 NSHumanReadableCopyright --identifier <identifier> 应用的bundle identifie,对应Mac OS X下的CFBundleIdentifier --category <category> 应用的category,对应Mac OS X 下的LSApplicationCategoryType --icon <path> 应用的图标路径,windows下使用.ico,Mac OS X下使用.icns后缀 --license <path> 应用的license文件,将被拷贝到应用的根目录下 --dir <path> 应用额外须要打包的文件目录,将做为子目录被打包到应用的app目录下 --files <pattern,...> 定义dir定义的文件目录中拷贝文件的匹配规则,能够参考glob文档,多个规则可使用数组。默认**,表明拷贝dir目录下的全部文件
将生成一个名称为 <name>-v<version>-<platform>-<arch> 目录,好比:MyApp-v1.0.0-win32-ia32
除了使用上面命令行的方式也可使用api的方式进行打包,好比再用自动化工具的时候,跟上面的参数大同小异:
const packager = require( 'launchui-packager' ); packager( { name: 'MyApp', version: '1.0.0', entry: './dist/main.js', out: './packages' ..... }, function ( err, outPath ) { // outPath will be the path of the created package directory or file } );