利用MiniUI组件给PC软件做界面练习
MiniUI扁平风格WEBUI界面库, 拥有完整的各种常用控件, 非常完备的表格组件
同为JQ界面组件,相对于layui, 更喜欢miniui提供的风格界面
官网:
我比较喜欢miniui的导航框架3, 于是
aardio中新建webform工程, 将下载到的miniui库里面的

将frame里面的框架3

拷贝到aardio的工程目录web中

将index.html里面的js路径改过来

import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程12";right=1019;bottom=679;bgcolor=15793151)
mainForm.add()
/*}}*/
import console
console.open()
import web.form;
var wb = web.form( mainForm,5/*_UIFLAG_DIALOG*/,,,true);
wb.go("\web\index.html")
wb.wait();
mainForm.show();
return win.loopMessage();如果文件都没错的情况下, 那么运行应该就可以看到如下图

但是, 左侧导航那里并没有显示出来?
我的电脑是win7 32位, ie11 , 这里用web.form左侧导航显示不出来,估计是本地构建的原因, 我又不想用wsock.tcp.simpleHttpServer创建服务器 .
正常的应该是:

查看index.html代码, 里面有个初始化左侧导航的ajax
$.ajax({
url: "data/menu.txt",
success: function (text) {
var data = mini.decode(text);
menu.loadData(data);
}
})貌似这句不能执行导致, 于是我试着将web.form改成web.blink.form 和 web.kit.form , 发现这样是可以的

但是, 我不想用blink/wit , 既然ajax不能执行, 那么我就自己给它解析传给它,
我们是准备把这个miniui最为PC软件界面ui来用的, 那么很多动态的东西(比如 菜单 / 导航栏 / 表格内容 / 文本内容......)都是要aardio直接给miniui提供数据, 而不需要转换为json再给它.
那么, 观察html上面这个代码 , 其实就是加载txt文件, 读出里面的内容, 再把内容解析成数组, 再把数组添加到导航栏.
用aardio来加载txt , 然后内容作为参数,给那个解析并增加的那个函数就可以了.
于是, 首先 , 再aardio中添加个js能调用的函数.
//使用external接口定义网页脚本可调用的本地函数
wb.external = {
Aardio_addItems = function( func ){
//读取文本
var text = string.load("\web\data\menu.txt");
//调用传过来的js函数,将文本作为参数给它
func(text);
}
}我们在index.html的js中添加个名称是func的js函数
function addData(text) {
var data = mini.decode(text);
menu.loadData(data);
}
external.Aardio_addItems(addData);上面先定义了一个addData的函数, 函数里解析并添加数据
紧接着调用aar中的函数,将js中新增的那个addData函数作为参数传递到aar里交互.

打算把整个miniui的demo都转移到上面建的工程里, 我做了一个文本匹配转换工具, 其实就是把原来的树形表转换为json,给左侧列表用

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=968;bottom=532)
winform.add(
button={cls="button";text="转换";left=481;top=216;right=969;bottom=262;dl=1;dr=1;dt=1;z=2};
button2={cls="button";text="清空";left=0;top=216;right=478;bottom=262;dl=1;dt=1;z=3};
s1={cls="edit";left=0;top=0;right=969;bottom=215;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1};
t1={cls="edit";left=0;top=264;right=969;bottom=533;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=4}
)
/*}}*/
winform.button2.oncommand = function(id,event){
winform.s1.text = "";
winform.t1.text = "";
}
var convFun = function(text){
var pattern = //\<a href=\"(.*?)\".*?\>(.*?)\<
for s1,s2 in string.gmatch( text, pattern ){
winform.t1.log('{ "id": "',s2,'", iconCls: "fa fa-assistive-listening-systems", text: "',s2,'", url: "pages/',s1,'"},' ,'\r\n' )
}
}
winform.button.oncommand = function(id,event){
convFun(winform.s1.text);
}
winform.show();
win.loopMessage();登录后方可回帖








miniui的封装js里面有很多地方用到了ajax, 如果都去修改太麻烦, 还是改为web.kit.form 或者 web.blink.form来使用吧,
我测试了下同样的界面, 用blink和webKit分别渲染, 我发现webkit用时500ms左右, 但是blink用时2000ms左右, webkit虽然不会再更新了, 但是我只是用来渲染界面, 无所谓.
又测试了下所有的示例, 发现webkit在echarts图表那里高版本会导致波形不显示,使用官方echarts5.0.2没问题, blink哪个版本都不会有这个问题 , 但是blink体积大.
综上, 看你最终取舍了, 我这里主要是绘制界面, 所以用webkit就可以了,体积小,速度快.
于是, 上面的代码还使用ajax, 将index.html还原为官方代码