AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

Mobl——用于创建 HTML 移动应用程序的新 DSL

  • 2011-02-12
  • 本文字数:1478 字

    阅读完需:约 5 分钟

Mobl 是一种外部 DSL,它的目的是要把代码编译到 HTML5 中,从而为移动设备创建跨浏览器的应用程序。 Zef Hemel 已经在 WebDSL 项目的启发下把它开发出来了,作为模型驱动工程和领域特定语言博士论文的一部分。InfoQ 与 Hemel 进行了一次讨论,试图发现使用这种方法与编写移动应用更多相关的内容。

Mobl 使用一种与 JavaScript 非常类似的脚本语言实现了静态类型的推断语言。该语言拥有以下顶级结构: 实体(entities)、类型(types)、函数(functions)、控件(controls)、屏幕(screens)、样式(styles )和设备(services)。_ 实体 _ 是在本地存储中持久化的数据元素,而 _ 类型 _ 是一种供我们使用的不稳定的数据。函数 _ 与那些定义在 JavaScript 以及能够调用 JavaScript 代码的语言中的函数类似。UI 是由 _ 屏幕 _ 组成的,屏幕中包含各种组件以及容器 _ 控件,并且在控件上会有附加的事件处理器。“Hello World”示例类似于下面这样:

复制代码
screen root() {<br></br> header("Hello world")<br></br>}

这里是另一个使用自定义控件的示例:

复制代码
// Custom control:
control sayHello(name : String) {
label(name) // using the label control
}
screen root() { // Main module definition
sayHello("Hello World") // using my custom control
}

我们会发现,UI 并没有遵循 MVC 模式,控件可以包含本地的状态和逻辑。尽管我们可以这么做,但是 Hemel 还是建议“把所有复杂的逻辑放到函数中,并且不要把那些函数放在用户界面代码中。” The UI’s look and feel is created with styles similar to CSS.

Mobl 拥有创建面向 Web_ 服务 _ 接口的内建语法。以下是用于获取 Twitter 趋势主题的服务示例:

复制代码
service Twitter {<br></br> resource trends() : JSON {<br></br> uri = "/_proxy/api.twitter.com/1/trends.json"<br></br> }<br></br>}

数据是以 JSON 格式在应用程序和服务之间传递的,JSON 是“Mobl 的动态类型的子类型,是一种特殊的类型,能够让你程序的各个部分使用动态类型定义,”这是文档(PDF)中所说的。

所有使用 Mobl 编写的代码在保存每个文件的时候会自动编译到 HTML5 的元素之中。应用程序能够在支持 HTML5 的浏览器上运行,浏览器需要支持以下 HTML5 特性:

本地缓存)

地理位置(mobl::location),这样你可以请求用户当前的 GPS 位置

画板(mobl::canvas),用于基本的 2D 绘画

通知(mobl::notify): 屏幕上的通知。(尽管没有太多浏览器支持)

加速计(mobl::accelerometer): 读取移动设备的加速计数据(当前只在 iPhone 和 iPad 上有效,其它平台暂时还不支持这个 API)

WebSockets (mobl::socket): 使用 socket.io 与服务器进行数据流形式的通信。

Hemel 说,它当前专注于让 Mobl 能够在基于 WebKit 的浏览器工作,因为那些浏览器在移动设备上实现了最多的 HTML5 特性,但是对于让它在 Firefox 和 Opera 上工作也做了一些努力,并且,当 windows Phone7 支持 HTML5 的时候,也会扩展到那上面。Mobl 应用程序可以直接部署或者通过 PhoneGap 部署:

我们可以使用 PhoneGap 部署 Mobl 应用程序。PhoneGap 让你可以使用 web 技术为各种平台——包括 iOS、Android、Windows Mobile 和 BlackBerry 等——构建本地应用程序。我正在做的一件工作就是要封装专门针对 PhoneGap 的 API,从而以 Mobl 库的形式访问电话功能,像访问照相机以及电话的联系人列表等等。这项工作进展良好。

Mobl 还带有 Eclipse 插件,让我们可以在 Windows、Linux 以及 Max OS 上开发应用程序,并且已经基于 MIT 许可发布了。

查看英文原文: Mobl – A New DSL for Creating HTML5 Mobile Applications

2011-02-12 18:442722
用户头像

发布了 340 篇内容, 共 129.6 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

Android C++系列:JNI 调用时缓存字段和方法 ID

轻口味

c++ android jni 11月日更

宝藏图,引起的一堆问题,轻量级锁的不解(Synchronized锁的升级)

Java 程序员 后端

实时数据库 架构图

Java 程序员 后端

应届生想要找到一份Java开发的工作,需要达到什么水平?

Java 程序员 后端

开发做了一两年了,感觉遇到了瓶颈,公司已经学不到太多东西,如何成长为技术大牛

Java 程序员 后端

安卓程序员必备hook技术之进阶篇

Java 程序员 后端

完美!腾讯技术官发布Java零基础就业宝典,不用再怀疑人生了

Java 程序员 后端

实战spring自定义属性(schema)

Java 程序员 后端

Kubernetes 给容器化部署和管理带来的好处

后台技术汇

Kubernetes 11月日更

干货第一弹-教你如何利用阿里开源工具进行排查线上CPU居高问题

Java 程序员 后端

架构实战营 - 第三期 - 模块三作业

岚哲

极客时间 架构 架构实战营

年前三面美团百度挂了,疫情间啃完阿里面试宝典,成功斩获offer

Java 程序员 后端

官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox

Java 程序员 后端

官方都不推荐?为什么MySQL不推荐使用uuid作为主键?究竟有什么坏处

Java 程序员 后端

实战:第十一篇:StringRedisTemplate获取redis信息

Java 程序员 后端

工作三年的Java程序员应该达到什么水平?

Java 程序员 后端

幸亏有了这本623页的微服务框架实战笔记,一举拿下腾讯美团滴滴offer

Java 程序员 后端

年初入职 字节跳动 的Java面试经验分享(文档)

Java 程序员 后端

应云而生,幽灵的威胁 - 云原生应用交付与运维的思考

Java 程序员 后端

应用服务器集群的Session管理

Java 程序员 后端

常见的社会潜规则有哪些?

Java 程序员 后端

实现一个百万级推送服务,除了它,还有谁

Java 程序员 后端

将CSV的数据发送到kafka(java版)

Java 程序员 后端

将项目转成MAVEN项目

Java 程序员 后端

干掉GuavaCache:Caffeine才是本地缓存的王

Java 程序员 后端

架构实战营 - 第三期 - 模块三作业

lucian

架构实战营

.NET6新东西--Http Logging

喵叔

11月日更

模块三作业

小鹿

已开源!阿里巴巴SpringCloud微服务原理与架构项目实战,请签收

Java 程序员 后端

带你了解代理模式

Java 程序员 后端

常见的SQL面试题:经典50例

Java 程序员 后端

Mobl——用于创建HTML移动应用程序的新DSL_编程语言_Abel Avram_InfoQ精选文章