报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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:005223

评论

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

借用FinClip把小程序游戏运行到自有App中

Onegun

小游戏 小游戏开发 微信小游戏

云边协同下的统一应用管理: 基于 OpenYurt 和 KubeVela 的解决方案

阿里巴巴云原生

阿里云 开源 云原生 KubeVela openyurt

Linux平台用什么HA软件好?咨询电话多少?

行云管家

高可用 HA软件

PCB制造常用的13种测试方法,你掌握了几种?

华秋PCB

测试 PCB PCB设计

chatGPT辣么火,你却不会注册!

程序员小毕

Java 程序员 程序员人生 后端 摸鱼

Idea居然还有比Navicat、Datagrid工具还好用、还快的插件,效率又可提升一倍了

非喵鱼

Java MySQL redis IDEA 12 月 PK 榜

CTPN+CRNN算法端到端实现文字识别的实战开发

华为云开发者联盟

人工智能 华为云 文字识别 12 月 PK 榜

LiteOS-A内核中的procfs文件系统分析

OpenHarmony开发者

OpenHarmony

AngularJS进阶(三十四)Angular数据更新不及时问题探讨

No Silver Bullet

angular 数据更新 12月月更

设备管理|锂电材料工厂混合设备的维护与保养

PreMaint

设备管理 新能源行业 锂电材料工厂

阿里国际站-唤端技术的探索与演进

阿里技术

前端 用户增长

免费试用的云管平台哪里有?可以试用多久?

行云管家

云计算 云管平台 云管理 自动化运维

AngularJS进阶(三十二)书海拾贝之特殊的ng-src和ng-href

No Silver Bullet

AngularJS 12月月更 启动过程

ZBC登录iZUMi Finance双挖池APY高达189%,极致通缩的典范

西柚子

我把Idea给改了,看看有没有你常用的功能,没有,你告诉我,我给你造了

非喵鱼

Java 开源 IDEA springboot 12 月 PK 榜

容量测试解决了什么问题?

老张

性能测试 容量测试 容量保障

AngularJS进阶(三十三)书海拾贝之简介AngularJS中使用factory和service的方法

No Silver Bullet

service AngularJS 12月月更 factory

2 小时开发《点球射门游戏》,动画演示思路(下),代码已开源

非喵鱼

Java 开源 游戏 12 月 PK 榜 世界杯足球游戏

得物云原生全链路追踪Trace2.0-采集篇

得物技术

架构 云原生 APM Trace OpenTelemetry

教你如何进行数仓字符串、二进制、十六进制互转

华为云开发者联盟

数据库 后端 字符串 华为云 12 月 PK 榜

模块一 实战营作业

peter

「架构实战营」

大幅优化《英雄联盟》游戏体验,英特尔显卡驱动更新

科技之家

软硬协同:基于倚天的视频云编码性能升级

阿里云CloudImagine

云计算 视频云

百度爱番番基于图技术、流式计算的实时CDP建设实践

NebulaGraph

数据库 flink 流计算 图数据库

【DBA100人】网联客CEO隋海峰:把握好职业生涯最重要的两个5年

OceanBase 数据库

数据库 oceanbase

美团四面:如何保障 MySQL 和 Redis 的数据一致性?

Java永远的神

Java MySQL 数据库 redis 后端

MYSQL-INNODB索引构成详解

京东科技开发者

MySQL innodb 索引 B+树 InnoDB存储引擎

IPQ8074 Qualcomm Embedded Board Offers MU-MIMO 802.11ax WiFI 6//industrial wifi6 moudle

wallysSK

IPQ8074 ip8072

NineData核心技术揭秘

NineData

数据库 备份恢复 备份策略 数据源 备份 & 恢复

泰山众筹NFT版系统开发合约部署

薇電13242772558

智能合约

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