写点什么

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

评论

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

被下架三次了,手慢无,23w字中高级Java面试题库!

Java架构师迁哥

安装 Druid 安装的时候提示 JAVA 版本的问题

HoneyMoose

教你如何成为解决问题的高手

孙叫兽

高手 解决问题

关于机器学习的“灵魂拷问” ,这样的答案硬核!| 云途专栏

亚马逊云科技 (Amazon Web Services)

鉴释宣布加入RISC-V基金会、Linux基金会、seL4基金会与IoXt联盟, 旨在实现静态代码分析服务的全方位赋能

鉴释

Linux IoT 静态代码分析

一文搞定,轻松掌握,进程的内存消耗和泄漏

奔着腾讯去

内存泄露 Linux Kenel 进程管理 内存消耗 VMA

Python OpenCV 图像处理之直方图相关知识细节,学点细的

梦想橡皮擦

7月日更

硬核!一套基于SpringBoot + Vue 的开源物联网智能家居系统!

编程菌

Java 编程 程序员 项目 计算机

结语:Apache Spark 3_0(十二)

Databri_AI

sql spark API

腾讯被罚了!!!

Jackpop

程序员如何快速成长为IT精英

孙叫兽

程序员 成长 IT职场

模块三

Winston

星环研发总监为你揭秘TDH8.0的前因后果 | TDH8.0 使用必读

星环科技

Linux之top命令

入门小站

Linux

Druid 如何开启查询日志

HoneyMoose

模块三作业

河马先生

架构实战营

如何在二三线城市月薪过万(一)看完这篇后端简历优化,包你面试不断

小鲍侃java

面试 后端

牛牛牛!一张图,5个章节就把高并发/高可用讲清楚了!

Java架构师迁哥

如何对抗信息茧房?

caiyongji

程序员 信息茧房

数字人民币是现有世界上最完整设计最灵活的央行数字货币

CECBC

音视频延时和抖动问题分析和解决

hanaper

今晚拿下PHP反序列化的一系列操作

网络安全学海

php 网络安全 信息安全 渗透测试 漏洞分析

讲的是切片,但好像又不只是切片?

Gopher指北

Go 语言

全是蓝光,太狠了!

Jackpop

ES6中的生成器函数是什么?

devpoint

ES6 JavaScrip 7月日更

数字人民币专利数量井喷 智能合约成新方向

CECBC

Windows Service 小品

喵叔

7月日更

在线常用crontab表达式大全验证解析

入门小站

工具

充满科技感的农业,是年轻人的『菜』吗?

百度大脑

人工智能

如何激发责任心

escray

学习 极客时间 朱赟的技术管理课 7月日更

网络攻防学习笔记 Day89

穿过生命散发芬芳

网络攻防 7月日更

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