※ 引述《a5772803 (无尽之痕)》之铭言:
: 小弟公司主要是写 laravel的
: 目前想要走向app的开发
: 想要从React native下手
: 但是大家都没有 android ios 相关的开发经验
: 如果直接开始写的话 要去补充什么知识呢
: 小弟有写过一点点的android 知道是activity
: 做跳转
: 感觉跨平台还需要一点原生的知识
: 想要再找android、 ios、 react native的书来辅助开发 请问这样的方向是对的吗
: 还有看到vuex这个东西看的很模糊
: 目前暂定是准备这些东西 搭配expo进行
: 请多多指教!
先说结论吧,如果你们公司想要使用React-native来开发app,建议开个职缺直接找专业
的前端来比较好。不管是开发进度或是除错都会比较好。
========================================
以下是小弟我的不太专业的前端的跨平台开发+React-native的介绍
网页和移动装置的APP差很多。把网页的程式码做成APP就像是让IOS或Linux能直接使用
windows的应用程式一样的麻烦。为了解决这个麻烦,有许多的套件或方案不断的开发
出来,而这些跨平台开发方案大约可以分成二个世代:包含cordova在内的第一世代
,包含React-native在内的第二世代。
第一世代的东西小弟我没有学过,只能大概说明一下。cordova是使用cordovaAPI来取代
网页的DOMAPI,这样就能在移动平台上用APP的外观来跑网页应用程式(看起来像APP的
网页)。缺点也很明显,这个方案做出来的APP和原生的APP就是有效能上的差别,而且原
生网页没有的功能cordova也不会有(比方说键盘锁)
第二世代的方案原理很简单。不考虑现实层面,想让linux上能使用windows的应用程式最
简单的方法就是告诉windows应用程式windows系统的指令和linux系统指令的对应关系,这
样windows应用程式就能自动做出和linux原生应用程式一样的效果了。
第二世代的方案的原理就是把移动装置上的程式语言的API包装成javascript的API让
javascript使用。这样在切换移动平台时,只要更换对应的API就好,主程式可以不用变
动。以laravel来说明的话,如果数据库要从MySQL换成MongoDB,只要把model层呼叫
MySQL的部分换成呼叫MongoDB就好,PHP的其他部分都可以不用更动。第二世代的方案相
比第一世代的方案,执行速度会比较快,但如果原生平台有出现新的API,程式设计师可
能要自己写包装用的API。
第二世代的方案现在主要有三种,NativeScript、React-native和Electron。
React-native是React系统的一部分,是用来和React组合的跨平台开发方案。
NativeScript是独立的套件,有普通javascript、Angular和Vue三种开发模式。
而Electron是桌面端限定的套件。
======
以下是React的小小说明
======
React和Angular、Vue常被称为三大前端框架。但React有一些特点是另二个框架没有的。
1. 学习曲线非常高,除了本身的JSX语法之外,开发者至少要熟练ES6以上的语法,这些
都不是Javascript初学者能快速掌握的。(虽然官方文档有说可以不用学JSX或ES6就能写
React,但小弟我实在是不想看没有使用JSX和ES6写出来的程式码)
2. Angular和Vue和laravel都是使用MVC架构(严格来说,前端是MVVC架构),React勉强
能说是只有V的架构,好处是可以和其他套件组合(可以使用React + Vuex + Vue-Router
,但不建议这样玩,因为Vue的套件都不太能和其他套件组合),缺点是要知道许多套件。
考虑到lavarel内建的前端是好上手的Vue,我下面介绍时会以Vue来当对比
网页应用
V MV C
Vue: Vue + Vuex + Vue-Router
React: React(+React-dom) + Redux(+React-redux + ...) + React-Router
React的各种平台使用
网页原生:React(+React-dom)
Android :React(+React-native)
IOS :React(+React-native)
Windows :React(+React-native+React-native-windows)
Mac :React(+React-native+React-native-macos)
========
以下是React-native建议的学习顺序
========
1.学习React:这包含了JSX,ES6还有一些常用的套件(比方说Redux,react-router)
2.学习React-native中的Expo的部分,这样就可以利用React-native写出足够支援大部
分跨平台所需要的功能
3.学习Android和IOS的程式语言,这样才能使用React-native还没有支援的特定原生平台
的API。