QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:442792
用户头像

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

关注

评论

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

Amazon Redshift ML现已正式推出——使用SQL创建机器学习模型并通过您的数据进行预测

亚马逊云科技 (Amazon Web Services)

分析

轻松搭建数据仓库,与FreeWheel一起“玩转”Amazon EMR

亚马逊云科技 (Amazon Web Services)

分析

体育锻炼的好处

Tiger

28天写作

模块7作业

panxiaochun

架构实战营

2022 年最有前景的 5 个 Web IDE

开源之巅

开发者工具 WebIDE

推出Amazon Kinesis Data Analytics Studio —— 与流数据快速交互

亚马逊云科技 (Amazon Web Services)

分析

大数据开发 Spark 模块之SparkSQL

@零度

大数据 spark Sparksql

在Amazon SageMaker上快速、灵活构建TensorFlow模型的在线推理服务

亚马逊云科技 (Amazon Web Services)

分析

“你最崇拜的人是谁”,从面试问题看标杆学习法

编程江湖

面试题

通用数据保护条例的监管下,你的数据湖“断舍离”了吗?

亚马逊云科技 (Amazon Web Services)

分析

直播预告丨和我们一起过圣诞吧!Hackathon 创意攻略等你查收

PingCAP

Go 的 golang.org/x/ 系列包和标准库包有什么区别?

AlwaysBeta

golang Go 语言

读《思辨与立场》-08设计你的人生

wood

28天写作 批判性思维 思辨与立场

kafka的JavaAPI操作

编程江湖

大数据

如何摆脱机房教师控制?

喀拉峻

网络安全 安全 信息安全 计算机

互联网行业办理过等保业务,选择哪款堡垒机好?

行云管家

互联网 网络安全 堡垒机 云堡垒机

Amazon Timestream 在车联网场景的典型应用和性能测试

亚马逊云科技 (Amazon Web Services)

分析

风云叱咤,尚硅谷云原生实战教程(下篇)发布

编程江湖

Java 开发

2022 用好这 8 个工具,提升前端工程师软技能

开源之巅

Web 前端开发

如何做好技术 Team Leader?

阿里技术

技术管理 技术人 内容合集

在线JSON转toml工具

入门小站

工具

使用 Amazon Athena 做漏斗分析——实现更高效的数据湖检索

亚马逊云科技 (Amazon Web Services)

分析

借助Amazon EMR与外部KDC进行身份认证,有效集成业务场景

亚马逊云科技 (Amazon Web Services)

分析

Vue.js关于响应式部分的优化

编程江湖

前端开发

​虚幻引擎5更新:头部工作室如何使用Perforce Stream实现虚幻升级

龙智—DevSecOps解决方案

虚幻引擎 虚幻引擎5 UE5

外贸订单回暖,集装箱持续爆舱,低代码或将成外贸行业新财富密码

优秀

低代码 外贸管理

面对持续不断生成的流数据—— Amazon Kinesis Data Analytics 实现及时分析与处理

亚马逊云科技 (Amazon Web Services)

分析

技术分享| 如何快速实现音视频在线通话

anyRTC开发者

音视频 语音通话 视频通话 呼叫邀请 离线推送

使用 Python Poetry 进行依赖管理

华为云开发者联盟

Python Python Poetry 依赖项管理 Poetry

使用Amazon RDS for Oracle配合Oracle Active Data Guard建立托管的灾难恢复与只读副本

亚马逊云科技 (Amazon Web Services)

分析

通过Amazon SageMaker与Amazon Step Functions实现机器学习的CI/CD 方案

亚马逊云科技 (Amazon Web Services)

分析

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