写点什么

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

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

关注

评论

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

DevOps|研发效能解决的是企业效率问题

laofo

DevOps cicd 研发效能 持续交付 效能度量

小间距led显示屏型号主要有哪几种?有什么优势?

Dylan

显示器 LED显示屏 led显示屏厂家

蓝易云:centos7安装etcd教程.

百度搜索:蓝易云

云计算 Linux centos 运维 etcd

校招零Offer要不要先找实习?

王磊

Java

为中国重新定义流程挖掘,望繁信科技发布「数字北极星3.0」

ToB行业头条

百度文心大模型4.0正加紧训练,即将发布

阿Q说代码

大模型训练 大模型 百度文心

关于A/B 测试系统的基本知识

QE_LAB

A/B 测试 测试技术

技术革命——云计算结合人工智能

天翼云开发者社区

云计算

蓝易云:常见HTTP状态码的错误有哪些?对应的解决方案是什么?

百度搜索:蓝易云

云计算 Linux 运维 HTTP 云服务器

泰山众筹系统开发技术分析 | 泰山众筹app开发 | 泰山众筹玩法介绍游戏规则

V\TG【ch3nguang】

蓝易云:Ubuntu搭建APM固件编译环境教程!

百度搜索:蓝易云

云计算 Linux ubuntu 运维 APM

亚马逊收购Anthropic,意在切断英伟达的芯片垄断

B Impact

Flux.never是什么

0x5d0de9

Java WebFlux SpringWebflux

运维 | 解决 CentOS 终端主机名显示-bash-4.2 问题

Appleex

centos 运维

网络文件安全共享工具Dropshare 5免激活最新版

胖墩儿不胖y

Mac软件

简单的3D建模软件 Metasequoia 4密钥激活版

mac大玩家j

3D Mac软件 建模软件 3d建模

蓝易云:FastDFS高可用集群部署安装!

百度搜索:蓝易云

云计算 Linux 运维 fastdfs 云服务器

筑牢国云智算底座,繁荣大模型创新生态!

天翼云开发者社区

人工智能 云计算

RTC已成为金融数字化转型的制胜之利器!

X2Rtc

音视频 RTC 互联网金融

OpenObserve 可观测平台探究

jupiter

Prometheus 可观测平台 OTLP OpenObserve observabili

文心一言 VS 讯飞星火 VS chatgpt (108)-- 算法导论10.1 6题

福大大架构师每日一题

福大大架构师每日一题

陷入企业ERP管理困境?这些才是破局密码

YG科技

ARTS-WEEK8(23.10.1-23.10.6)

EchoZhou

告别Netflix组件,拥抱SpringCloudAlibaba(B站狂转50k的文档)

程序员万金游

SpringCloud Alibaba spring-cloud #java java 架构

蓝易云:搭建ubuntu容器内C/C++开发调试环境

百度搜索:蓝易云

c++ 云计算 Linux ubuntu 运维

C++ 使用getline()从文件中读取一行字符串

芯动大师

【MySQL】就这一篇帮你解决 MySQL 磁盘占用过高的问题

非晓为骁

MySQL Docker Binary Log 磁盘空间 general log

基于 ACK Fluid 的混合云优化数据访问(一):场景与架构

阿里巴巴云原生

阿里云 容器 云原生 混合云 ACK

终端云的探索与研究

天翼云开发者社区

云计算

泰山众筹SUN4.0模式开发重燃卖货的新航标

V\TG【ch3nguang】

KubeCon China 2023|拥抱开源,为世界提供更好的选择

Geek_2d6073

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