【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

Angular 2 搭配 React Native

  • 2016-04-25
  • 本文字数:1253 字

    阅读完需:约 4 分钟

Angular 2 的架构让它有可能使用多种渲染引擎来渲染应用,其中包括 React Native。

为 Angular 2 的基础架构做出的决定中有一个是将框架分为两个层级:一层是核心,其处理组件,指令,过滤器,服务,路由,修改检查,DI 和 I18n;另一层是渲染引擎,其处理 DOM,CSS,动画,模板,web 组件,自定义事件等等。核心可以在独立的进程中执行,这样就将其从界面中解耦出来,而且在核心有很多的任务要处理时,这样可以让界面的响应更快。关于这个决定的详细内容可以在 Angular 2 渲染架构文档中找到。

传统上渲染一个 Angular.JS 应用是通过 DOM 在浏览器中完成的,但是现在有可能通过其他的渲染引擎来渲染应用,包括桌面的或者移动端的原生渲染引擎,甚至还有服务器端。 Angular 2 渲染一文中更加仔细地解释了如何使用不同的渲染引擎来完成此工作。

从主应用中将渲染独立出来有多种益处。据Google 的工程师主管Brad Green 说,Angular 2 应用可以运行在Node.js 上,而且速度相当快。“你可以在此环境下运行Photoshop,所以为何不呢?”,Node.js 提供了文件系统,进程和硬件所需的入口。而且,Angular 2 可以通过 Angular Electron 运行在桌面上,或者在微软的UWP 上

在移动设备端,Angular 2 提供了一些选择项比如 Ionic 2 NativeScript 或者 React Native。对于最后一个,有个使得用React Native 渲染Angular 2 应用变得有可能。开发者可以调用所有React Native 提供的API 和polyfill 来使用iOS 和Android 的原生功能,然后回调可以按需在 Angular Zone 中执行。据 Marc Laval 所说,原生移动开发和 web 开发很类似,除了是使用不同的组件而不是 HTML 和 CSS 提供的那些:

  • 通用组件:Image,Picker,RefreshControl,ScrollView,Switch,Text,TextInput,View,WebView
  • Android 特定组件:DrawerLayout,PagerLayout,ProgressBar, Toolbar
  • iOS 特定组件:ActivityIndicator,DatePicker,MapView,Navigator,ProgressView,SegmentedControl,Slider,TabBar

应用风格是按照 React Native 的风格,手势是由 Hammer.js 处理的。Laval 在下图中详细说明了一个 React Native + Angular 2 应用的架构:

他解释说:

技术上来说,一个 React Native 应用运行了三个线程。主要的一个是 JS 线程,在这里所有的 JS 代码可以被执行;它控制了整个应用。其它两个线程运行着应用的原生的部分:标准主 UI 线程,和一个“shadow”线程用来测量和布局。

原生和 JS 这两块通过一个桥双向通信。这意味着有 Bridge JS API 来获取原生的功能特性(网络,地理位置,剪贴板等等)而且可以操作原生的元素,然后原生的事件被传回到 JS 模块。

在不久的将来,Angular 2 的团队计划创建一个新的动画模块,而 React Native 的团队打算在原生端获得更优的性能,而且 Facebook 会支持 UWP

查看英文原文 Combining Angular 2 with React Native


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-04-25 19:004998

评论

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

TDD之让我们再聊聊TDD(续)

刘冉

TDD

测试策略实践之测试自动化与自动化测试

刘冉

测试管理 测试策略

架构训练营 - 模块 3 作业

焦龙

架构实战营

和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

不脱发的程序猿

少儿编程 DIY 智能硬件 创客开发 Arduino

在线文本转拼音工具

入门小站

工具

.NET6新东西--Random.Shared

喵叔

11月日更

学生管理系统详细架构文档练习

御道而行

架构实战营

javaScript基础篇说一说循环应该怎么用

你好bk

JavaScript 大前端 ES6 html/css

外包学生管理系统架构文档

zjluoyue

mongoDB 简单的索引类型

liuzhen007

11月日更

Lua-复合变量

Changing Lin

11月日更

质量基础设施一站式服务平台方案,NQI一站式公共平台开发

电微13828808271

TDD之让我们再聊聊TDD(终)--正其思,规其行

刘冉

TDD

告别晦涩难懂的物理,《张朝阳的物理课》了解一下

脑极体

2022 年 9 个最佳 JavaScript IDE 和代码编辑器

devpoint

JavaScript vscode IntelliJ IDEA 11月日更

进击的Java(五)

ES_her0

11月日更

测试策略实践之序篇-软件缺陷,测试计划和测试架构

刘冉

测试计划 测试策略 测试架构

博文|Apache Pulsar 在自研数据管道中的技术实践

Apache Pulsar

大数据 分布式 云原生 中间件 Apache Pulsar 消息系统

13 K8S之Pod资源操作

穿过生命散发芬芳

k8s 11月日更

测试策略实践之分类漫谈

刘冉

数据校验

卢卡多多

参数校验 11月日更

TDD之让我们再聊聊TDD

刘冉

TDD

一场大戏!央行数字人民币被“点燃”!

CECBC

KoP 2.8.0 新特性前瞻(内附视频)

Apache Pulsar

kafka 架构 分布式 Apache Pulsar KoP 2.8.0

CSS页面设计稿构思与实现(五)之border-radius

Augus

CSS 11月日更

linux检测系统是否被入侵(下)

入门小站

Linux

区块链在营销方面的应用探索

石云升

区块链 区块链应用 11月日更

🔄 这些JS数组遍历是否都用过 🔄

空城机

JavaScript 大前端 11月日更

springboot整合pagehelper

小鲍侃java

11月日更

敏捷开发:川中校友登记小程序解决方案

CC同学

周边生态 | StreamNative 宣布开源 AWS SQS Connector

Apache Pulsar

开源 云原生 消息中间件 AWS SQS Connector 周边生态

Angular 2搭配React Native_移动_Abel Avram_InfoQ精选文章