写点什么

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

评论

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

【LeetCode】绝对差不超过限制的最长连续子数组Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

管理笔记【10】十二条给管理者的人事管理经验

L3C老司机

28天写作

这些面试题你会吗?双非本科字节跳动Android面试题分享,大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

LeetCode 第 46 场双周赛题解

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

canvas从入门到猪头

执鸢者

大前端 canvas

实战 LeetCode 15.三数之和、18.四数之和,并扩展至 N 数之和

与你一起学算法

堆栈与队列学习总结

Nick

数据结构 算法 堆栈 队列

甲方日常 92

句子

工作 随笔杂谈 日常

【vue2 & G6】快速上手

德育处主任

大前端 可视化 数据可视化 G6 antv/g6

第五周作业-线下核销优惠券流程图

隋泽

产品经理训练营

第7周课后练习-性能优化一

潘涛

架构师训练营 4 期

架构师训练营第七周作业 - 学习总结

阿德儿

关于星座的趣谈「Day 2」

道伟

28天写作

语音聊天室申请上麦的用例文档

郭郭

一种C++中支持界面调用函数的实现方法

长不胖的Garfield

第13周学习总结

Binary

软件架构-事件驱动架构

看山

架构 事件驱动架构

诊所数字化:私域运营的本质

boshi

数字化转型 医疗 私域运营 七日更 28天写作

LeetCode题解:198. 打家劫舍,动态规划(缓存偷盗状态),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

十二周作业&总结

胡益

Eureka 部分机制记录

常清静

Spring Cloud 原理 Eureka

魂牵梦绕——俄罗斯方块效应

Justin

心理学 28天写作 游戏设计

SICP 习题解答 1.6

十元

浅谈EMC电磁兼容设计—概念篇

不脱发的程序猿

28天写作 二月春节不断更 电路设计 EMC 电磁兼容

(28DW-S8-Day2) 在线教育的本质

mtfelix

28天写作 在线教育的本质特点

dubbo源码v2.7分析:结构、container入口及线程模型

程序员架构进阶

微服务 七日更 28天写作 2月春节不断更 dubbo源码

架构师训练营 4 期 第8周

引花眠

架构师训练营 4 期

架构师训练营第七周作业 - 命题作业

阿德儿

28天瞎写的第二百四十天:我与正念的故事

树上

冥想 28天写作 正念 焦虑 平静

第十三周课后练习

Binary

创业公司如何搭建自己的领导班子

一笑

28天写作

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