九年前,女:“对不起,我不会喜欢你的,你不要再坚持了。就好比让原生App运行到浏览器里,可能吗?”,男生听后默默走开。九年后,在Fanx编程语言专栏里,我听到一名vase开发程序员给大家讲述了这个故事。为什是九年不是十年,那是因为我翻阅git提交记录发现,我在2011年第一次提交了vase框架的代码。
什么是vase
Vase是Fanx语言开发的开源跨平台UI开发框架,使用它可以快速构建高质量的移动端App。一份代码同时运行在Android/iOS/浏览器/桌面。
static Void main() { Frame { VBox { padding = Insets(50) layout.height = Layout.matchParent spacing = 15 Button { text = "Flat Button" style = "flatButton" onClick { Toast("hello world").show(it) } }, Button { text = "Push Button"; onClick { Toast("Hi").show(it) } }, Button { text = "Disable Button"; enabled = false onClick { Toast("hello world").show(it) } }, ToggleButton { text = "switch" }, ToggleButton { text = "checkBox"; style = "checkBox" }, RadioButton { text = "radio1" }, RadioButton { text = "radio2" }, } }, }.show }
丰富的UI控件
vase提供丰富的UI开发组件,包括:
- 各种按钮(Button,Switch,CheckBox,Radio,Combox)
- 警告/输入对话框
- 时间日期对话框
- 菜单和上下文菜单
- 图片的各种拉伸、掩模、多指缩放
- 高性能的ListView和上拉下拉刷新
- 滑动条和进度条
- 文件选择/拍照 上传
- 图片轮播
- 用于PC的表格和树形视图
- 多行文字输入
简单强大的布局容器
布局容器包括HBox、VBox、Pane、FlowBox、EdgePane等。支持各种对齐和大小策略,后面会单独文章介绍。
灵活的样式系统
vase的UI和样式系统的分离的,类似于CSS的架构。和CSS类似,可以通过ID、控件类型、样式类型来指定样式。很容易做到样式共享和换肤功能。也支持直接设置样式。
吸引人的微动画
无论是触摸反馈还是滚动,微动画无处不在。
基于async/awit的Http客户端
- 人体工程学的异步,没有回调。
- 支持Cookie
- 支持multipart文件上传协议。
- 支持网络图片自动加载和缓存
预览Demo
这里有Android demo安装包可供预览。链接: https://pan.baidu.com/s/1HuF8BBnDZ3nfxu7qnH_klA 提取码: nn83