開個貼子,記錄這件有意思的事情!
4 u8 ?; V, L) \4 M
1 f& b. o) v. a3 T背景:
! g& j) h- S7 D, M' t* S沖突一:想學習,卻找不到好工具
" m' B6 s6 Z k& P' V3 g今年春節遇上了疫情,我宅在家里,處于“失業”狀態,作為有志青年,不想每天刷劇、刷抖音,想著裝一下B,提高一下英語水平。0 u# \3 w7 ^4 d4 Z1 v2 J0 n. u6 x
: _$ V7 a6 d% f! ?于是,在朋友圈瘋狂的廣告洗腦下,我下載了幾個當時很火的App,很認真地投入學習。. R) n; z% Y" S3 a' {! q# M
然并卵,使用了一段時間之后,發現效果不太理想:首先,這些App記單詞過程太過于復雜,很多都提供了多種助記的方法,除了常規的詞根詞綴、聯想記憶以外,還有圖片記憶、電影情節記憶、思維導圖記憶等,這樣的好處是當時很容易記住單詞,壞處就是忘得也很容易,大量的助記材料無形中增加了記憶的工作量,增加了記憶的負擔,從而偏離了記單詞的初衷;其次,練聽力的功能普遍都是提供新概念英語或者VOA、BBC、TED等聽力材料,對于基礎不好的我,感覺在聽天書;
( o$ O" z, K6 U4 ~難道就沒有一款適合我這種菜鳥的App嗎?
+ S! r- L/ d ^; `( n$ s/ C( o% L一個大膽的想法出現在我腦海里:自己開發一個App。
! p- k# o, y, f2 ~: B, o
& I/ w+ P! J2 U. t8 ]沖突二:計劃自己開發,卻不是專業人士
! V$ w- A& \% O i為什么說這個想法大膽呢?因為我雖然是一名搞技術的工程師,但僅限于機械行業的。我所接受的完整編程教育僅是在大學期間的《C語言程序設計》。所以對事情一無所知,嚴重缺乏相關知識儲備,除了大膽,我也不知道怎么來形容這個想法了。
: a7 P* T& C8 h' K但有句古話叫無知者無畏,而且作為理工男,我始終相信任何問題都有辦法解決,只要你能夠把問題描述得足夠清楚。8 E* j' `9 r; L1 Q# H9 H
因此這個想法一出現,我立馬覺得應該去試試,結果怎樣不重要,起碼先行動起來。
+ p$ ~+ E/ X+ l+ d8 _* `4 y# _( X4 t; i# s3 R- K
行動:
; w; N0 R9 v" r. x1 I/ V先把問題描述清楚,我的目標是開發一個學英語的App,這款App應該功能簡單,不能太過復雜。把它分解成兩個問題:( I3 I& u; @" b+ d& _" d4 y
1-怎樣開發一個App?5 E/ ]% K9 i- o, t V4 Z
2-應該具備什么功能才能用來學英語?
6 W/ l; N! x9 k1 [$ P) U5 w; h/ F* _% e9 v6 P J
先來思考第一個問題:怎么開發一個App?
3 {# P" W( L( e9 @' u! C我把問題進行細分:1 d4 W# T$ D0 A
1- 什么是App? , ^' z L- e. B- q
2- 需要哪些知識儲備?
+ j; K+ K3 q' n3- 如何做?需要什么工具?
- w! U) O! Z. K' ]5 U1 c4- 有沒有簡單的方法實現?
7 y. O! R3 ]( c9 V! r8 j經過一番搜索、學習、請教、記錄和總結,這些問題漸漸有了答案。
9 c/ `3 R$ N: v: o1 O
* C/ G k* \0 c; _- y6 k0 J1-what:什么是App?
+ W9 ]2 b$ Z% |+ RApp是應用application的簡稱,我這里說的App是指手機端的App。
. H3 H! |/ K/ d' |- w$ V [; b根據開發模式,目前的手機App可分為3種類型:原生、H5、Hybrid。它們有各自的優劣勢:! w: B" }- }& K+ p" a0 s
類別
. ?0 E: P- s! q | 概述9 w: i& B7 D4 r/ t
| 優勢
, {$ z% x4 R* n: q! N$ b | 劣勢
8 [6 C/ k# b& k* U1 ?* N n7 ?9 j | 原生應用 (Native
1 E( R" T$ K1 h( g' E7 I+ F) M App) g9 }8 e, ~! ]4 r8 a6 I& n
| 原生App就是利用Andriod、ios平臺官方的開發語言、開發類庫、工具進行開發。比如安卓的java語言,ios的Swift語言。在應用性能上和交互體驗上應該是最好的.
& P2 G/ P' t5 W! w# h | 1-可以訪問手機所有功能、可實現功能最齊全;( |1 @/ k% \, I6 W
2-運行速度快、性能高,絕佳的用戶體驗;# i* c+ j) Y, _. X. M, Q! t; i
3-支持大量圖形和動畫。不卡,反應快;0 i2 P8 k4 e2 Z2 R. C
4-比較快捷的使用設備端提供的接口,處理速度上有優勢;
9 m- X" a X- X9 \( n' \; x+ X8 l | 1-開發成本高、周期長,Android和ios都需要單獨的開發;3 K& f2 f8 I+ p9 _; C
2-更新版本需要重新下載安裝包;* [2 B& G0 V' X1 I1 ~
| H5應用 (Web App)3 H3 m+ }8 e& @' ?
| 用普通web開發語言開發的,通過瀏覽器運行。
( p) _# r3 Y3 J | 1-使用web語言,開發門檻低、周期短;
) I2 H8 ?$ t/ W8 U7 u2-支持多種瀏覽器,兼容性好;
: H! b: }, Y, {! k$ L& @" N4 ^% P" K* r3-免安裝,使用瀏覽器打開,更新無需用戶參與;0 Y8 i, {$ {* X! O1 l/ Q6 E3 Y0 S( f
| 1-對聯網要求高,離線不能承載太多東西;
5 n1 \9 N) W1 {1 I7 _2 F5 v" X2-功能有限;% d9 L2 y4 U" ^ X7 H/ f+ K) `9 E
3-運行速度慢,頁面不能承載太多東西;
. d* a- J3 c/ W( L# t: Q9 c1 n) t1 x4-圖片和動畫支持性不高;' u6 h( a" t7 L( E, l8 v
5-體驗感不如原生和混合App;
1 J5 N% o0 F& e2 v | 混合版應用 (Hybrid
: f- o3 N6 u8 e- U App)
( B( I3 f8 V9 R {' E | 既利用了原生APP開發技術還利用了HTML5開發技術,是原生和HTML5技術的混合應用。混合比例不限。目前市面上流行的小程序和快應用就是采用Hybrid技術。& W+ o1 S# X# B8 B
| 1-運行速度比Web App快,可調用部分設備端口;
; ?" O C E k4 O+ x: l2-開發周期比原生App短;' a2 m) S4 {4 J+ S7 _4 ~- J5 _
3-可以跨平臺,Android和ios不需要單獨的開發;0 c" a$ d5 P0 _! a
4-免安裝,打開就能用,更新無需用戶參與;, P6 P# v9 L7 K3 b0 Z
| 1-功能接口受限于原生App的支持程度;6 @3 n) u" U* C7 F( x
2-體驗感優于Web App,但差于原生App;
/ K; q# K) @* i Z' d/ u | : I1 g1 }1 d0 V9 S. J0 m2 A
9 t; [, m' s, Z0 Z8 M
J: |- m& F# {8 T; u2-why:需要哪些知識儲備?
, g0 ?! Z4 J9 K9 I6 mApp開發的流程大概分為幾個階段:需求分析-->架構設計-->后端開發-->前端開發-->測試。每個階段都需要相應的知識。& c. T) r' K9 Y8 _8 a/ v0 k
% N5 H& \$ d: n3 k
2 o6 S4 ^- N6 m需求分析:7 I3 x6 T" t2 U3 _
需求分析也稱為軟件需求分析,是開發人員經過深入細致的調研和分析,準確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉化為完整的需求定義,從而確定系統必須做什么的過程。這是軟件工程專業的相關知識。' G ?# m, m, I
/ x6 Z" P& i7 S$ {) M4 ^( s" ]$ D; h b6 U$ o
7 `2 I% V. {1 @. {6 z: E. c4 u0 h架構設計:- E5 t, k; m5 e% r' \
需要架構設計是將客戶的需求轉換為規范的開發計劃及文本,并制定這個項目的總體架構,指導整個開發團隊完成這個計劃。架構設計是軟件設計過程的早期階段,它把需求分析和設計流程連接在一起。需要對開發技術(包括前端和后端)有深入的了解。% ^5 c5 ?0 C4 Z! v$ Z2 c s
0 G# A; F5 } ?# Q! T' Q4 f5 G1 B" \& W2 f8 q$ c G
& ]4 }$ \7 x$ A* S; @' C
后端開發:
) P+ ?3 R C+ G6 N" l- A- I3 P后端是指服務器相關的統稱,包含服務器、數據庫。8 E7 V+ ]8 A# R9 c% r* q) Q
服務器搭建與開發,常用語言和工具:Nginx、Java、Shell、Python、PHP、node.js等;% `+ Z4 L7 W7 h) ^0 O: D5 T6 Y. {! [8 x
數據庫開發,常用知識:關系型數據庫mySQL,非關系型數據庫MongoDB;% p/ l( d) S+ C% q
3 B4 a) D6 U! ^) w2 l) u" G
2 J+ |4 `, I5 B9 n) }& a8 `1 c! j
9 N" m- K( r c, E: _0 ]
前端開發:
; h6 v$ ?1 u( K. W& q" \% [7 f前端是手機端的開發,包括UI界面、響應邏輯、數據的請求。! T( d% u5 F+ S
前端三大基礎技術:HTML5、CSS、JavaScript;* X0 b4 F; t6 G# U! Z8 d
流行的前端框架:Angular、vue.js、React;
0 P% V- P" J* j: B4 b! L原生App開發語言:Swift(iOS平臺);Java(Android平臺);
6 h" X$ g, v% Y" n2 S
, M3 t8 L0 N* Q' Q6 W8 b4 ~. }# T* h
# R$ T1 {$ |4 a8 S- q% W0 ^9 v! q
& s0 ^& y8 q6 d2 r
測試:0 G; o8 p0 N/ ~) R" \6 |$ ^, g( ^* b) l
包括功能測試、性能測試、壓力測試等。 P3 z% C: x2 o" \4 e
& R& ^8 m: u- ^! O% X
6 {# V: v$ E, I( I6 H& \( F) y; ]/ e2 x2 H! H$ u
3-how:怎么做?需要用到什么工具?
$ O9 g) z3 K( [- E8 h% l2 F看書、看視頻教程、看開發文檔、模仿實踐;
, s7 k5 [* V$ @( U) z基本上各種語言都有各自的開發工具(IDE),學到哪個就用哪個。
6 F! u! ]" w2 \/ X* ?/ S- Z( e2 {+ g7 ]" `: y( V, t) M
4-how good:有沒有簡單的方法實現?) l. G i8 @7 ^9 x0 L5 H
隨著了解的越深入,越發現這個事情沒有想象中那么簡單。這是一個系統工程,涉及太多的知識,需要不同崗位的人配合,就好比開發一臺設備,需要機械工程師、電氣工程師、工藝工程師、采購工程師等一起合作才能完成。) s+ R' z; [" `) d; M
難道一個人就真的不可能完成?我開始動搖,直到后來看到了“全棧開發”這個名詞,眼前一亮,信心立馬恢復。全棧開發是指一個人搞掂前端和后端。隨著技術的發展,市面上有很多現成的框架,借助這些框架來實現一個小項目這個可能還是有的。% H* g# F" v& C* L# n, g) N! q$ a
' f. P- G3 n3 V3 L/ q4 x那么接下來就是確定開發的模式:- D$ v# x$ J4 d: R8 L
首先排除開發原生應用,難度實在太大,不符合我的情況。只能在H5和Hybrid之間選擇,H5是門檻最低的,但我預計后期會用到手機攝像頭和話筒這些硬件,這些是H5的劣勢。那么目前看來Hybrid是最合適的選擇,而且此時微信小程序開始火起來,各種開發教程和案例都豐富起來。于是,我最終確定做微信小程序。后來,微信小程序推出了云開發,媽呀,我感動得快要哭了,騰訊真的太照顧我了,這樣又幫我解決了后端開發的問題。3 v+ Q, g8 F+ p8 C+ Z- i% U
關于開發的問題,確定開發模式后,剩下的就是惡補微信小程序的相關知識。
, w+ X z! ^5 P5 k' o3 Q0 Z5 R$ ~# F8 z* O* U$ Y9 S$ D# @
第二個問題是APP應該具備什么功能才能用來學英語?后面繼續記錄。。。。
2 |. k. B1 w7 E. _( ], ~
7 m3 o' p* J/ j! H& J8 @ i7 E |