ARK ALL開發踩坑指北

出自ARK Wiki|方舟百科-澳大人的維基百科

前言

ARK ALL是一個在GitHub開源的軟件項目,項目地址在這裡,歡迎Star🌟!

這個頁面也許會充當一個博客,記錄從 2022年6月 起,ARK ALL在技術、運營上遇到的各種問題,記錄下我們的解決思路與方案。或許下文中會有錯漏和理解不正確的地方,歡迎各方大佬能來指正~

從頭開始

構思

回過頭來,我覺得開始一個項目之前,可以先想想包括但不限於這幾個問題:

  • 我們要做什麼?
  • 我們有什麼?
  • 我們能得到什麼?
  • 我們為什麼要這樣做?
  • 我們要怎麼做?
  • 我們要做到什麼地步/水平?

題外話,如果只有“我”,而沒有“們”,可能ARK ALL也不會出現。如果在讀這篇文章的你想參考ARK ALL的發展路線來鍛造自己的APP,試著先找到能陪你一直戰鬥的小夥伴們。

為什麼要設計ARK ALL?

內地大學985、211基本都有學長姐前輩做出了十分好用的,服務於同學們的校園APP。類似於查學分、課表,看新聞等等的操作,只需手機輕輕一點。在ARK ALL面世之前,澳大的校園服務隱藏得是很深的,新同學極難認識到校園服務的全貌。官方來製作這類型應用,需要極長的迭代週期,而且界面、功能性難以保證。既然這樣,不如我們也已學生的姿態自己做一個吧😜。

技術選型

初創作者中有Box大神坐鎮,早已摸清許多技術方案,讓我們少走許多彎路。如果在看這篇文章的你還不知道要怎麼選擇技術方案,先試試多查找Google、博客等網站,尋找最適合你目前水平和最適合你項目需求的技術方案,後續的開發能順暢不少。

下面說說我們在2022年6月時面對各種技術方案的選擇:

前端

基於澳大同學們對移動平台的依賴性(判斷來自於使用小程序版選咩課比使用網頁版的用戶要多得多!),首先考慮構建移動端操作界面。

非跨平台
  • Java - Android
  • Swift - iOS
  • React / Vue / JS+HTML+CSS - Web

非跨平台方案可以針對原生平台進行特定適配,但代價是開發緩慢。小規模團隊的限制下,容易導致兩個平台之間進度、UI、功能不一致。測試時會耗費大量的時間精力。

跨平台
  • React Native(JavaScript,簡稱JS)
  • Flutter(Dart)

一次編寫,全平台通用。因初創時大部分作者對網頁更熟悉(JS編程不需要再學基礎),故沒有選擇Google的Flutter方案。

最終選擇了Meta的React Native方案,使用JSX語法。

後端

  • Python - Django
  • Java - SpringBoot

與前端一樣,選擇了初創作者們大部分都會用的Python作為首選語言,目的是能令其他人都更快上手(小規模團隊)。

開源代碼管理

使用Git進行代碼版本控制,選擇GitHub平台進行公開代碼託管,都是大家更常用的工具。

開發途中的問題

前端

在本文裡,把有關面向用戶操作、交互的設計、開發都歸屬於“前端”的工作。2022年ARK ALL的前端開發工作也算曆經曲折才最終得以實現,現在回頭看,也許良好的流程應該像是這樣:

  1. 學習基礎
  2. 動手嘗試
  3. 改進方案
  4. 重構思路
  5. 實現目標
放空自己,重新學習

初創之一的Y哥從前年輕氣盛,在網頁前端上只有開發微信小程序的經驗,卻直接開始進行第二步的動手嘗試,直接被同為JS語言的React Native框架打倒,處處碰壁,幾度想要換回原生框架(Android、iOS原生開發)。在Box的力勸下,約定一星期沉下心來重新學習React Native基礎,繼續嘗試使用React Native的跨平台方案。這個教程視頻也是ARK ALL今天能面世的救星,【2020前端全新项目】探花交友 React Native 跨端APP项目实战开发教程 ——【黑马程序员广州中心】

需要注意視頻教程內使用了更老舊版本的React Native框架,可能有許多函數都在新版React Native包內被刪除,如果需要新版React Native特性,請直接尋找最近年份的教程學習。

React Native的版本號

截止 2023/11/02 ,React Native最新的版本號是 0.72 ,但也有足夠多的公司使用該框架,所以Meta應該是故意不放正常穩定版本號 1.0.0 的吧。

一般來說,"react-native" 包版本 >= 0.6 即可足夠應付絕大多數的需求,0.6+的版本支持第三方庫的自動鏈接(auto link),是0.6+最重要的功能更新,在此之前的React Native如果需要使用第三方庫,需要前往各個奇怪的路徑下修改奇怪的文件才能實現包的功能,十分麻煩。

React Native的類組件與函數組件

ARK ALL在參考視頻教程的基礎上(結合Google編程法),使用 "react": "17.0.2", "react-native": "0.68.2" 包版本進行構建。依照教程,絕大多數的頁面、功能都使用類組件(Class Component)編寫,小部分由Kalo編寫或特殊功能實現使用了函數組件(Function Component)進行編寫。函數組件是當前React和React Native官方推薦的使用方式,最新的特性也在函數組件上首先實現,有可能類組件會慢慢淘汰。但作為初學者來說,函數組件可能過於方便、簡潔,以至於學到 頁面的生命周期 之類的功能時,會因為看不懂各種奇妙的JS語法而愈發絕望。

類組件更重視代碼的結構,有部分強制的類型綁定,在引用、繼承等概念上都有強制的語法要求。但也正是因為存在這些特性,可以讓初學者更快理解React Native框架、React框架在運行邏輯上的特點,也是熟悉JS語法的大好時機。學通類組件語法後,轉到函數組件時會愈發覺得“React Native真好用!”。所以,對於初學者,依然推薦先學習類組件,再學習函數組件。

後端

前後端對接的問題。

文檔問題。

發佈應用

運營方向、策略

分析與改進