在客户端开发,不管是PC还是移动端,Native与Web之争持续了近十年。二者的优劣也很明显:
一直以来,二者都想占据对方的疆界,但是从结果来看并没有谁要取代谁的势头,而是相互融合:
开发中我们经常使用Json作为数据交互的格式,但只适合界面展示或者小部分的配置管理,没有办法对逻辑部分做控制,也是客户端UI固定、逻辑固定的原因之一。而Facebook推出的React则独创了Virtual DOM 机制,Virtual DOM是一个存在于内存中的 JavaScript对象,它与DOM是一一对应的关系,也就是说只要有Virtual DOM,我们就能渲染出DOM。
React 在前端取得突破性成功以后,JavaScript 布道者们开始试图一统三端。他们利用了移动平台能够运行 JavaScript 代码的能力,并且发挥了 JavaScript 不仅仅可以传递配置信息,还可以表达逻辑信息的优点。
当痛点遇上特点,两者一拍即合,于是乎: 一个基于 JavaScript,具备动态配置能力,面向前端开发者的移动端开发框架,React Native,诞生了!
Weex站在了ReactNative的肩膀上,借鉴了ReactNative的思路,基于Vue,并对很多开发、调试工具进行了优化补强。
这样的跨平台技术,我就问移动开发者怕了吗?
注:传统的Native开发周期较长且不具备灵活性,Android与IOS开发人员需要写两套UI及逻辑代码。而使用RN或者Weex等跨平台技术,不仅具备随时上线、更改的灵活性,还可以实现一端编写,三端运行。无论从灵活性还是节省人力成本的方面考虑,相信技术走向一定会逐渐偏向大前端。
认识到大前端的趋势,认识到形势的严峻性。技术人员的职业走向不仅仅取决于技术的深度同样也取决于技术方向,假使你很精通.net但是在国内我相信用武之地一定不会比Java大。而我在职业生涯的开端选择了当时并不火但是属于未来趋势的移动开发,做了先驱者,随着移动互联网的发酵,自己也迎来了职业生涯的甜蜜期,当大批开发人员涌入移动端开发之时,我已经是有经验的移动端开发了。
互联网的行业特点决定了知识更新比较快,某项技术可能刚成熟就会被别的技术所替代,因此开发同学在钻研那些不变的原理的同时也需要注意行业技术的变化,以免被时代所拉下。因此对移动端同学,我强烈建议想当年投奔移动互联网一样投奔大前端,未来一定时间之内的研发体系一定会围绕大前端,如果固步自封,迟早会遭遇困境。
大前端技术需要前端的基础,作为移动端同学,学习前端不会是很困难的事情。不需要很精通,但是基础的语法需要懂。
在落地大前端技术时,选择RN还是Weex?
其实二者很相似,毕竟Weex是站在RN的肩膀上,而Weex更像是RN的增强版,针对使用RN过程中的问题(例如JsBundle体积、发布流程、性能等)进行了补强。
根据我自己使用Weex做开发的体验来看,上手容易,且十分顺手。基础组件、模块完善;调试、发布方便;性能监控、降级方案完善;扩展性较好。
我目前没有使用过RN,但据使用过RN的朋友说,很多组件RN做了针对Android与IOS的区分,因此很多地方仍然需要写两次代码。(如若不实,欢迎指正)
而对于新技术,不管多么令人激动,在实际落地的时候一定会遇到各种坑。对于大前端的坑:
在实践一段时间之后,相信大家一定会体会到跨平台的优势以及人力成本的节省。