`
spaljay
  • 浏览: 7407 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

是时候和DOM说再见了——《React Native:用JavaScript开发移动应用》读后感

 
阅读更多
看到十一月的试读活动的时候,一下子就被React Native的介绍给吸引住了:真的可以通过纯前端的解决方案来进行移动端APP的开发吗?

在看到ReactJS的解决方案之前,也有思考和实践过这个问题。之前的解决方案是通过PhoneGap,也就是现在的Cordova,通过APP的外壳包装了一个WebView的容器。具体过程是先完成一个纯HTML+CSS+Javascript在移动设备分辨率上的实现,然后将整个目录结构放到PhoneGap的目录中,最后通过调用PhoneGap的命令,将整个目录编译成不同平台上的应用文件,比如IOS的APP,android上的APK。这个解决方案在某种程度上使得即便没有从事过移动端开发的经验,也可以通过纯前端的技术,只是利用app本身作为Web容器,从而实现移动开发,同时一份代码,解决了多个移动平台。同时也可以利用相对比较成熟的JS效果库实现丰富的动态视觉功能。

听上去解决方案非常完美,但是在真正实现了之后,发现原生的JS在移动端不仅运行缓慢,有明显的卡顿感,而且用户很明显可以感受到是浏览器的体验,而不是真正的APP。这两点原因直接使得通过前端方案实现移动端开发的方案搁浅。除此之外,PhoneGap调试的繁琐步骤也是一个巨大的槽点。即便之前提到的两点问题不存在,但是PhoneGAP在移动设备上调试JS必须通过载入一个特殊的JS,然后连接到台式机端口上,通过chrome的开发者工具进行调试。

因此看到这次试读活动的主题之后,我对于reactJS是如何克服PhoneGAP的缺陷有了非常大的兴趣。首先关注的就是性能问题,如何使得HTML在移动端的渲染和JS的运行效率能够将效果媲美原生API编写的APP。其次就是调试性如何,是否能给开发带来革命性的便利。

通过了解reactJS的相关知识,React不再使用text/javaScript标记JS代码段,而是通过text/babel,因为reactJS的JSX语法和传统的JS不兼容。reactJS必须的三个的三个库中有一个叫browser.js的库,就是用于将JSX语法转换成JS的语法。但是在真正上线的时候,不再会由浏览器即时转换,而是通过服务器端提前完成。而JSX语法在使用的过程中,相当于可以将JS变成了动态组织HTML的逻辑语言。浏览器的DOM可以动态的拼装生成。

在编写了一些reactJS的实例之后,发现这门技术更多的像是在用后台语言的方式在前端处理HTML。目前主流的技术果然都是在某些点上是相通的。比如nodejs就是在用JS的语法编写后台代码,而angularJS则是以开发动态语言页面模板的方式编写HTML模板。reactJS则是另辟蹊径,脱离了原来网页上DOM结构的限制,由自己封装的Virtual DOM接管浏览器上DOM元素的生成和渲染。而ReactJS重新定义的DOM,正是解决当下的性能杀手——复杂频繁的DOM操作的有效方案。ReactJS通过自己维护虚拟的DOM树,每次动态变化只需要DIFF不同的部分,大大提高了显示上的性能。

reactJS是基于组件化的开发,所以另一点优化就是把组件当作了状态机,用户只需要关注组件状态的变化,通过事件驱动机制,自动渲染UI的变化。

在调试上,reactJS通过相关浏览器插件可以直接在浏览器上进行调试。我的疑问是是否reactJS能够保证在不同设备上执行的一致性?使得只要在PC上调通在手机端也能保证正常运行?但是浏览器插件可以直接查看组件的状态确实非常方便。

试读样章中将笔墨集中在了flux,但是由于关于flux的具体描述并没有收入在样章之中,只能通过文中的描述推测是用于传递组件的状态,控制和处理状态之间的转化。如果有幸得到赠阅的机会,可以解答我心中的这个疑惑。

分享到:
评论

相关推荐

    深入浅出-React-Native:使用-JavaScript-构建原生应用(上).doc

    总的来说,React Native为移动开发者提供了一个新的工具,它结合了JavaScript的便捷性和原生应用的性能,使得开发者可以用一套技能栈构建高质量的多平台应用。随着React Native的不断发展和完善,它有望成为未来移动...

    REACT NATIVE跨平台移动应用开发_第2版_阙喜涛_完整版

    总之,《React Native跨平台移动应用开发_第2版》全面覆盖了React Native的各个方面,对于想要学习或提升跨平台移动开发技能的开发者来说,是一本不可多得的参考书籍。通过阅读本书,读者不仅可以掌握React Native的...

    一个基于reactnative开发的完整项目示例

    React Native 是Facebook推出的一款用于构建原生移动应用的开源框架,它允许开发者使用JavaScript和React来构建iOS和Android应用程序。这个“RNExampleApp-master”压缩包文件很可能包含了一个完整的React Native...

    提供学习reactnative开发的学习建议

    React Native 是一个由Facebook开发的开源框架,它允许开发者使用JavaScript和React库来构建原生的iOS和Android应用程序。这个框架极大地简化了跨平台移动应用的开发,因为开发者只需要掌握一种语言和一套API就能...

    移动应用开发 技术关键词: React Native 内容关键词: 跨平台移动应用 用途: 用于构建能够在iOS和Androi

    移动应用开发 技术关键词: React Native 内容关键词: 跨平台移动应用 用途: 用于构建能够在iOS和Android平台上运行的原生移动应用 内容描述: 一个开源的移动应用框架,允许开发者使用JavaScript和React来构建...

    React and React Native

    React是由Facebook开发的用于构建用户界面的JavaScript库,而React Native则是一个使用JavaScript和React构建本地移动应用程序的框架。了解这两者不仅可以帮助开发者构建桌面浏览器和移动端浏览器的应用程序,还能...

    React - React Native for Mobile Development 2nd Edition

    - **React Native简介**:这一章节介绍了React Native的基础知识,包括它的设计理念、主要特点以及为何它是移动应用开发的理想选择。 - **安装指南**:提供了一步一步的安装教程,帮助读者快速搭建React Native开发...

    REACT NATIVE跨平台移动应用开发 第2版.rar

    综上所述,“React Native跨平台移动应用开发 第2版”这本书涵盖了React Native的基础知识、核心概念以及实际开发中的技巧和最佳实践,是学习和提升React Native开发技能的宝贵资源。通过深入阅读和实践,开发者可以...

    使用React和ReactNative为每个原生平台构建应用程序

    总的来说,React和React Native为开发者提供了强大的工具,使他们能够使用熟悉的JavaScript和组件化思想构建高质量的Web和原生应用。结合像"universal-native-boilerplate-master"这样的项目模板,可以进一步简化...

    ReactNative移动开发工具 v0.71.7

    ReactNative可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App。而且React Native已经用于生产环境——Facebook Groups iOS应用就是基于它开发的。 React Native的原理是在JavaScript中用React...

    react-native学习代码包括项目(React Native跨平台开发,从零基础入门到项目实战-6天)

    React Native 是一个由Facebook开发的开源框架,它允许开发者使用JavaScript和React库来构建原生的iOS和Android应用程序。这个“react-native学习代码包括项目”是专为希望从零开始学习React Native,直至进行实际...

    React and React Native(pdf+epub+mobi+code)

    React主要用于构建Web应用程序的用户界面,而React Native则扩展了React的概念,使得开发者可以使用相同的编程模型来构建原生的iOS和Android应用程序。 React的核心理念是组件化。它允许开发者将UI拆分成可复用的...

    用于ReactNative框架的纯javascript产品页面UI原型

    React Native是一款由Facebook开发的开源框架,它允许开发者使用JavaScript编写原生的移动应用程序。这个“用于React Native框架的纯javascript产品页面UI原型”提供了一种高效、跨平台的方式来设计和实现移动应用中...

    ReactNative仿ofo共享单车App

    React Native仿ofo共享单车App是基于JavaScript开发的混合移动应用,它利用了Facebook推出的React Native框架,该框架允许开发者使用JavaScript和React库构建原生的iOS和Android应用程序。这个项目旨在模仿ofo共享...

    reactnative_demo

    ReactNative 是一个由Facebook开发的开源框架,它允许开发者使用JavaScript和React来构建原生的移动应用程序。这个“reactnative_demo”很显然是一份关于ReactNative实战的示例代码,包含两个关键文件:`...

    react-native-dom:如何使用react-native-dom在Web浏览器中运行React Native应用程序

    使用与现有React Native平台相同的捆绑器构建:使用Metro Bundler以及其提供的所有开发人员体验功能构建“本机”主线程和JS线程。 与DOM兼容的生态系统逃生舱口盖:使用相同的本机模块桥,以更通用的方式公开DOM...

    React.Native开发指南pdf

    React Native 是一个开源框架,由Facebook开发并维护,它允许开发者使用JavaScript和React来构建原生的移动应用程序。React Native的出现打破了Web开发与移动应用开发之间的壁垒,为开发者提供了跨平台开发的能力,...

    react-native 在全民k歌的开发实践

    React Native是一种开源移动应用开发框架,由Facebook推出,允许开发者使用JavaScript和React编写原生移动应用。在《react-native 在全民K歌的开发实践》中,庄子健老师分享了全民K歌团队在集成React Native过程中...

    React+Native入门与实战pdf

    这本书主要面向希望学习或已经接触过React,并想进一步探索移动应用开发的开发者。 React Native的核心概念是“Learn once, write anywhere”,意味着开发者可以使用相同的JavaScript和React语法,开发iOS和Android...

    ReactNative开发的iOS和Android弹出对话框

    React Native是一种由Facebook开发的开源框架,它允许开发者使用JavaScript来构建原生的iOS和Android应用程序。这个项目“jacklam718-react-native-popup-dialog-0b79c20”显然是一个专门针对React Native的弹出...

Global site tag (gtag.js) - Google Analytics