BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

用NativeScript创建JavaScript原生移动应用

| 作者 Abel Avram 关注 10 他的粉丝 ,译者 丛一 关注 2 他的粉丝 发布于 2015年3月11日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Telerik公开了用于创建安卓、iOS和Windows Universal跨平台原生应用的框架,NativeScript的公共访问权限。

NativeScript既不是一种新型的JavaScript语言,也不是原生功能的封装器,它包括一个JavaScript运行时环境和一种将JavaScript调用转化为原生调用的机制。用JavaScript(或TypeScript,CoffeeScript等)语言编写应用,之后在安卓平台用V8,在iOS和Windows Phone上用WebKit JavaScriptCore解释应用。然后,NativeScript运行时环境找到原生的目标API,将JS数据类型转化为相应的原生类型,然后调用原生API,并将得到的结果值返回,具体流程如下图所示

举例来说,在安卓平台上创建文件对象var file = new java.io.File(path);的步骤如下:

  • 用V8解释代码
  • 根据原数据确定相应的原生方法调用。原数据是在各个平台上预先构建的提供类型和方法签名的全部可用API集合。
  • 类型转换模块将JavaScript的String类型转换为一个java.lang.String对象
  • 运行时环境为java.io.File创建一个代理对象
  • 通过该代理将对原有JS File对象的调用委托给相应的Java实例

据Telerik介绍,与纯原生代码相比NativeScript运行时环境会带来大概10%的性能损失。

NativeScript可以将其所支持平台上的任意原生API作为目标,包括传感器接口API和用Objective C,Java或.NET编写的第三方库。UI组件是原生的,UI事件由在JavaScript代码中声明的原生处理程序处理,如View.OnClickListenerUIControl.addTarget

为了避免开发者需要对三个支持的平台有深入的理解,该框架包含了一个抽象与原生代码连接的NativeScript模块层(NativeScript Modules Layer,NML),可以自动将JavaScript调用转化为原生调用。NML包含如下模块:Application,Camera,Color,Console,Data,File System,HTTP,Imaging,Local Settings,Location,Timer,UI。开发者并未受限于只能使用NML,也可以访问任意原生API。

NativeScript其它一些功能简单列示如下:

  • 当前支持平台:iOS7+,安卓4.2+。预计将在4月实现Windows Phone的支持。对安卓早期版本的支持也将很快到来。
  • iOS平台的编译可以在远程完成,无需Mac电脑或iOS工具
  • 开发工作可以在任意IDE中完成。
  • 支持任意跨浏览器的JavaScript库。
  • 支持CSS。
  • 支持MVVM。
  • 即时支持新的原生平台。

NativeScript是一个基于Apache 2.0许可的Github开源项目

查看英文原文:Creating Mobile Native Apps in JavaScript with NativeScript

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

like phonegap by zhang leo

like phonegap

Re: like phonegap by wang mercury

phonegap的本质是webview,这个是把js转换成原生调用。界面的绘制也是原生的。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT