大模型“四虎”出山,亮相 4 月 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:442849
用户头像

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

关注

评论

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

解决Java中文显示乱码问题的原因与方案

霍格沃兹测试开发学社

如何关闭Windows自动更新

霍格沃兹测试开发学社

Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%

SelectDB

数据库 大数据 查询性能 物化视图 #数据分析

1688代采系统,淘宝代购系统,海外淘宝代购系统,淘宝代购集运系统

api开发

Atlassian被Forrester评为企业服务管理领导者,Jira Service Management助力提升团队服务水平

龙智—DevSecOps解决方案

Atlassian Forrester企业服务管理

李彦宏:程序员职业将不复存在,会说话就能当程序员;ChatGPT 日耗电超 50 万度丨 RTE 开发者日报 Vol.161

声网

MySQL安装最全最简教程

霍格沃兹测试开发学社

继续总结Python中那些简单好用的用法

快乐非自愿限量之名

Python windows 开发语言

ElasticSearch架构介绍及原理解析

霍格沃兹测试开发学社

Docker cp命令详解:在Docker容器和主机之间复制文件/文件夹

霍格沃兹测试开发学社

嘿!AI 编码新玩法上线!

阿里巴巴云原生

阿里云 AI 云原生

破晓未来·迎接智能新时代:混合 AI 大模型开发者工作坊震撼预告

阿里巴巴云原生

阿里云 云原生

小白一眼就能懂的JSON简介与基本使用指南

霍格沃兹测试开发学社

100M 768 维向量数据,Zilliz Cloud 稳定支持 Shulex VOC 业务场景

Zilliz

AI Zilliz 向量数据库 zillizcloud

一文看懂如何做好 SQL 质量监控

阿里巴巴云原生

sql 阿里云 云原生

ETL的数据挖掘方式

RestCloud

数据挖掘 ETL 数据集成

低代码与鸿蒙开发:重塑软件开发的未来

不在线第一只蜗牛

低代码 鸿蒙开发 鸿蒙系统

10个AI人工智能PPT生成软件,轻松搞定PPT制作!

彭宏豪95

人工智能 在线白板 AIGC 效率软件 AI生成PPT

企业云服务器免费使用后会存在哪些隐患?

一只扑棱蛾子

云服务器 企业云服务器

Jira自动化的实用工具——ScriptRunner简介及最佳实践

龙智—DevSecOps解决方案

DevSecOps

亮点功能:流水线编辑支持并行了!

Jianmu

DevOps

Vue3 - 插槽 Slots

霍格沃兹测试开发学社

低代码与前端框架:现代软件开发的新黄金搭档

快乐非自愿限量之名

软件开发 低代码 前端框架

「2024」不再内卷,让AI低代码带你玩点新花样!

优秀

AI 低代码 AI低代码 AI 人工智能

2024年AI辅助研发趋势:数智时代革新新引擎

EquatorCoco

人工智能 AI辅助

好用的AI绘画软件,一次安利给你

霍格沃兹测试开发学社

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