JSer全栈化技术栈推荐(一)——原生移动端是天堂还是泥潭

随着以服务器端的NodeJS、桌面端的Electron和原生移动端React Native为代表的全栈JS迅猛发展,真正生产环境中的“JS/前端技术全栈化”已经逐渐变为可能。尽管在前端以外的领域里,JavaScript还不能取代各领域原本主流语言的地位,但对于大量初创型公司或技术人手不足的团队来说,更低的学习成本本身就是一种极大的优势。

对于技术学习而言,学得好和学得巧同样重要,选对技术栈进行学习,可能会节省大量的时间和精力,更有可能带来更多的机会。因此结合最新的NingJS会议上的趋势和自己过去一段时间的实践经验,推荐未来一段时间比较值得学习和尝试的技术栈。

原生移动端

首先,不要幻想能用JavaScript在原生移动端一步登天,但也不要因为许多开发者对于React Native等技术的抵触而感到畏惧。

如果你/公司的目标不是一个QQ这个级别的大型App,你只是需要给你项目中日益复杂的Web移动端减负,用更强大原生性能去弥补Web移动端在复杂交互中的不足,并且你没有时间或者兴趣去学习原生平台对应的语言,那么现在机会来了。

问题初现

分享一下我自己的经验。在之前的一个Web项目中,前端使用的是Vue框架。随着功能不断迭代以及几次专门针对移动端的重构之后,我认为在业务需求和性能上已经找到了一个平衡点,当时认为下一次比较大的优化可能就要基于Vue 2.0的服务器端渲染以及用自己写的图表库替代项目中的第三方图表库。

但是在一次小规模的用户内测中,我们发现对于大多数非技术背景的用户来说,对于性能问题依然是敏感又粗暴的。我们不能指望去告诉每个用户“这个SPA超复杂的,能实现成这样已经很棒了好嘛?”,只能继续想办法让每个页面都能在那些内存快被占满的低端安卓手机上也保持一定的水准。

当我意识到Web性能终有尽头、公司暂时也不可能招到两个原生平台的开发者时,我决定要不用那些JSer也能玩的方案先做个过得去的App?

Weex准备好了吗

由于前端使用的是Vue,因此Weex是一个非常自然地备选方案。

事实上,我在阿里的Weex内测的第一时间就申请了(当时上述项目还没开始)。当我第一次下载Weex的playground把玩的时候,我的想法是“哇,不错。”;当我准备开始第一个Weex项目的时候,我的想法是“咦,这文档怎么不太顺”;当我暂时放下Weex,并且在四个月后评估它是否能帮助我完成我的第一款App时,我的想法是“怎么还这样...”

其实Weex的团队已经做了很多很酷的工作了,但是对于一个0原生开发经验的人来说,光是按要求搞定Android Studio就已经脱了一层皮,跟别说没想到一个潜在的功能需求去查issue时,发现回复总是“我们正在排期开发”,这难免会给人带来一种强烈的不确定感。更关键的是文档中有太多遗留问题,导致阅读起来逻辑不够通畅,进一步加深了各种小问题带来的烦躁感。

因此在配置了一晚上Weex环境依然没有很清晰的思路的情况下,我带着对同时学习React和React Native的担忧转向了React Native。

React Native不是银弹,但威力不俗

作为重点推荐的技术栈,这段少讲小故事,多谈谈推荐的理由以及和Weex的对比吧。

  1. 首先是Getting Start部分坑不多,基本一次过成功,少数几个问题都能够通过搜索快速解决,平复了我七上八下的心情。
  2. 其次是有比较优秀的开源项目作为参考借鉴,例如Facebook自己开源了F8App,里面有不少最佳实践;其次社区也贡献了很多优秀项目,我个人主要是参考reading这个项目,通过阅读其源码,尽快掌握React中的部分技巧。
  3. 同时不能忽略完整的调试、测试以及打包方案。这些对于没有原生开发经验的开发者来说,都是极其需要并且很难自己完成的。
  4. 大量的社区项目辅助。React Native社区贡献的项目主要集中在几个方面:两个平台均可用且表现一致的组件、一些需要写原生代码的功能例如第三方登录、一些常用功能的移植例如iconfont和svg等。大部分项目都不是由Facebook主导的,但是React Native能够在生产上使用绝对离不开这些项目的贡献。

基于以上这些理由,我认为现在开始尝试React Native是一个比较合适的时机,如果你也遇到我之前所描述的这类问题,不妨试试看。

至于一些其他的方案例如Ionic、Cordova、Hbuilder、H5+等等我个人兴趣不大。基于WebView做的各类优化,结果可能更像是性能以及学习成本都走向了一个中间点,两边都不出彩。

用JS开发原生移动端有未来吗

我认为这个问题主要取决于社区先厌倦给React Native造轮子还是主流原生开发者们先对React Native产生足够多的兴趣。不过在一段时间之内,React Native还是会继续向前冲。

当然如这段的标题所写,我们关注的不仅仅是React Native。在刚刚结束的NingJS大会上,Vue的作者宣布成为Weex的技术顾问。对于我来说,这可能是再次去尝试Vue的一个理由,希望尤大大不仅关注Weex本身的技术细节,还能给Weex带来和Vue一样严谨又易用的文档风格。

但是Weex团队在项目越来越偏离公司原本的业务需求之后还能对项目投入多少持续的热情,以及能否在营造出一个愿意不断造轮子的社区,这都将决定我们能否有机会把Weex用在自己的生产环境中。

原文地址:https://www.cnblogs.com/baimeishaoxia/p/12610610.html

时间: 2024-10-12 12:59:42

JSer全栈化技术栈推荐(一)——原生移动端是天堂还是泥潭的相关文章

.NET技术大系概览 (迄今为止最全的.NET技术栈)

从2002年的.NET 1.0开始,1.1,2.x,3.x,4.x,每个新版本的.NET都会增加新的技术,生态圈也在不断壮大. AD: 前言 .Net推出13年了,Visual Studio 2015 / .NET Framework 4.6昨天也发布了. 从2002年的.NET 1.0开始,1.1,2.x,3.x,4.x,每个新版本的.NET都会增加新的技术,生态圈也在不断壮大. 问题 大家是否想过: .NET究竟包含哪些技术呢? 我所掌握的技术这个子集,在.NET技术大系这个超集里面占地比例

(转).NET技术大系概览 (迄今为止最全的.NET技术栈)

前言 .Net推出13年了,Visual Studio 2015 / .NET Framework 4.6昨天也发布了. 从2002年的.NET 1.0开始,1.1,2.x,3.x,4.x,每个新版本的.NET都会增加新的技术,生态圈也在不断壮大. 问题 大家是否想过: .NET究竟包含哪些技术呢? 我所掌握的技术这个子集,在.NET技术大系这个超集里面占地比例是什么呢? 我究竟还没有掌握多少.NET技术呢? 面试的时候会考哪些技术呢? 相信大家也看过Java的技术栈,一个金字塔形状的(我一下子

面向全栈的技术管理(多图)

3月25日周六,在中生代和飞马网的技术嘉年华上,斗胆披上吹牛的嫌疑,分享了面向全栈的技术管理,现赘述如下. 研发管理有着广义和狭义的定义,总的来说,研发管理就是在研发体系基础之上,借助信息平台进行的团队建设.流程设计.绩效管理.风险管理.成本管理.项目管理和知识管理等活动. 简单来讲,研发管理是面向结果,过程敏捷的一种实践.作为一名技术管理者,既需要培养团队的ABC,又需要管理你的老板,保持团队的新陈代谢,因为一切都是人的竞争.我曾在GitChat上做过一次分享,具体可以参考<老曹眼中的研发管理

全栈必备的技术栈设想

喔家ArchiSelf 参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜. 实在没想到会有这么多朋友关注这个专题,会场有了些拥挤,呼吸也不那么舒服了.答应朋友们的事,今天就做到,下面是昨天的PPT内容和简要说明,详细内容还请关注CSDN 和SDCC的相关发布. 惯例是开始介绍自己,老码农,都没什么可吹嘘的地方. 看一下工程师和架构师的区别,简单地,工程师关注的是功能和

再谈&lt;全栈必备的技术栈设想&gt;一文

在SDCC2016的架构师进阶之路主题,我分享了<老曹眼中的全栈架构师>话题,会后在csdn博客发布了<全栈必备的技术栈设想>一文,在我的公众号(wireless_com)发的是<全栈的技术栈设想>.然后,有幸得到了中生代技术(freshmanTechnology)和多人的转载,中生代技术还专门开通了全栈架构师深度讨论群,引起了很多的争论和争议. 主要分为以下三种观点: 1)根本没有意义,纯属忽悠 如网友回复:"鬼都知道说的什么 数据 缓存 业务 性能 消息队

转: 拒绝「技术栈」选择恐惧症

所谓最小化可行产品(Minimum Viable Product,MVP),就是将产品快速推向客户,从客户反馈中不断进行迭代.更重要的是,MVP 也是研发团队进一步完善产品的基础. 但是,在正式代码之前,你需要选择今后支撑产品的 技术栈,也就是要选择好整个产品每一层所要应用的技术语言.架构等. 技术栈的选择往往是创始人面临的艰难问题.无论是技术人员还是非技术人员,如果不具体了解每个语言和架构的特点,面对现在如此多元化的IT技术,简直能逼死纠结症患者.而且,如果选错了语言或者框架,很可能会导致较为

互联网前端开发技术栈

互联网前端开发技术栈 前言 互联网建立60多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000年初开始做网站开发,使用的技术不断迭代,一些消失了,更多的出现了. 最近写过  .NET技术大系概览 (迄今为止最全的.NET技术栈) ,相信很多网友感叹掌握的.NET技术远没有这个技术栈里面所描述的多. 问题 大家是否想过: Web前端开发究竟包含哪些技术呢? 我所掌握的技术

爆栈三部曲:数据库开发大系技术栈 (300多技术点)

前言 这个数据库技术栈是我写的“爆栈三部曲”的最后一部 ;-) 最近我写过  .NET技术大系概览 (迄今为止最全的.NET技术栈) ,相信很多网友感叹掌握的.NET技术远没有这个技术栈里面所描述的多. 然后我还写 Web前端开发大系概览 (前端开发技术栈) ,包含大约180个技术点,做前端的都会觉得前端开发包含的技术相对繁多. 什么叫全栈(full stack)?简单地说就是万金油,web前端.后台.数据库.桌面应用等都能搞. 爆栈(stack overflow)来得更多些,包括但不仅限于:

jhipster技术栈研究

背景: 公司新的微服务项目都用jhipster脚手架来开发,这篇博客是jhipster里面涉及到技术的汇总目录 一.官方文档中涉及到的技术栈 前端技术栈 Angular / React / Vue Responsive Web Design with Twitter Bootstrap HTML5 Boilerplate Compatible with modern browsers Full internationalization support Sass Optional WebSocke