首页 > 其他 > 详细

libui-node体验笔记

时间:2018-06-28 12:57:44      阅读:214      评论:0      收藏:0      [点我收藏+]

简介

libui-node是基于libui库的node封装.libui库是一个简便的将本地原生的GUI封装的C语言库,并支持各平台(Mac,Linux,windows)。官网提供了第三方封装文档,开发者可以方便的实现自己语言的封装。目前市面上有基于swift,kotlin,python,php,node,lua.... 各种第三方语言的封装库,这里只介绍node封装库的使用方法。

对比electron

electron比较起来,github上的数据比较起来得可怜的很。 社区也基本没啥活跃。 个人也比较喜欢electron完全web化的任性开发。
就目前看起来libui-node的主打卖点如下:

  • 支持各种开发语言
  • 原生Ui渲染
  • 打包较小(helloworld代码40M,比electron的100M小不少)
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

安装

node安装

命令行下运行node命令:

npm install -save libui-node

对应平台的libui二进制库会被自动下载安装,如果报错可能是因为本地的npm库比较老,可以更新npm.其他错误可以看看this node-gyp issue.

值得注意的是,貌似libui-node开发编译版本是8.11.x 所以请注意本地的node版本最好是在此之上。

运行示例

下载线上的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

配置介绍 options

--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方式

除了使用上面命令行的方式也可以使用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
} );

libui-node体验笔记

原文:https://www.cnblogs.com/cczw/p/9238089.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!