開個貼子,記錄這件有意思的事情!8 W J _% v O u4 j0 ~' S# l+ i
, W" Q" c, o. Z1 s$ L背景:$ v. R1 g" ]: I1 G1 l+ ^2 q
沖突一:想學習,卻找不到好工具
" B* Y( V7 \% j$ F: m3 [今年春節遇上了疫情,我宅在家里,處于“失業”狀態,作為有志青年,不想每天刷劇、刷抖音,想著裝一下B,提高一下英語水平。
2 K1 u4 f& l4 m: A/ S7 B
' c- R, w0 o h1 P% A1 Z% l. @于是,在朋友圈瘋狂的廣告洗腦下,我下載了幾個當時很火的App,很認真地投入學習。
* W- C" x3 @$ b: r8 Y) v7 |7 L然并卵,使用了一段時間之后,發現效果不太理想:首先,這些App記單詞過程太過于復雜,很多都提供了多種助記的方法,除了常規的詞根詞綴、聯想記憶以外,還有圖片記憶、電影情節記憶、思維導圖記憶等,這樣的好處是當時很容易記住單詞,壞處就是忘得也很容易,大量的助記材料無形中增加了記憶的工作量,增加了記憶的負擔,從而偏離了記單詞的初衷;其次,練聽力的功能普遍都是提供新概念英語或者VOA、BBC、TED等聽力材料,對于基礎不好的我,感覺在聽天書;. }% @. ~4 u K
難道就沒有一款適合我這種菜鳥的App嗎?3 d0 r/ C8 O: b' i) g, \
一個大膽的想法出現在我腦海里:自己開發一個App。
! W) s [; Q' c9 O, D) T8 k3 R$ _% V; G" }# d7 a, e+ S- d5 q
沖突二:計劃自己開發,卻不是專業人士3 R. x7 V7 {* N
為什么說這個想法大膽呢?因為我雖然是一名搞技術的工程師,但僅限于機械行業的。我所接受的完整編程教育僅是在大學期間的《C語言程序設計》。所以對事情一無所知,嚴重缺乏相關知識儲備,除了大膽,我也不知道怎么來形容這個想法了。0 U9 l' {8 J4 L3 K; I
但有句古話叫無知者無畏,而且作為理工男,我始終相信任何問題都有辦法解決,只要你能夠把問題描述得足夠清楚。
& c% @9 e/ z" m0 G4 S9 ~因此這個想法一出現,我立馬覺得應該去試試,結果怎樣不重要,起碼先行動起來。, b: x/ Z8 O+ E% W& \
! u: H9 M- L0 p4 Y f行動:
( t6 Y# r3 d: Z3 N' n- l$ }# }先把問題描述清楚,我的目標是開發一個學英語的App,這款App應該功能簡單,不能太過復雜。把它分解成兩個問題:
7 @% A) ~/ C% a$ y* d' Z% l% p1-怎樣開發一個App?
3 `# s. v; t" j' I. q2-應該具備什么功能才能用來學英語?0 k( M; R- q- S
4 Q" A; j: r) P
先來思考第一個問題:怎么開發一個App?
& @8 G6 U) s) k2 l" F( X9 B- N我把問題進行細分:: G5 Z( O: b. d/ O8 ~
1- 什么是App?
0 s' P6 ?% z2 {8 y3 W2 O, L2- 需要哪些知識儲備?- \1 I" o- j: P& x0 B/ b" Y4 Q
3- 如何做?需要什么工具?& p$ K# W* i0 A g% L
4- 有沒有簡單的方法實現?* d% V- E- L) j) N
經過一番搜索、學習、請教、記錄和總結,這些問題漸漸有了答案。: d4 |% i# I: D- M# Z! P
2 p3 Q' y, T9 n; `2 R
1-what:什么是App?) b2 Y8 R9 z$ u: g" h' f
App是應用application的簡稱,我這里說的App是指手機端的App。, R* D, Q5 \& M2 W5 v
根據開發模式,目前的手機App可分為3種類型:原生、H5、Hybrid。它們有各自的優劣勢:: T+ q$ o4 t! S: Q1 l
類別& D$ D' a5 ?+ e2 s7 b3 p# Y9 a e! L
| 概述: h; h, s" g+ j
| 優勢) D" x& u0 m6 D& r9 \, F4 o. `
| 劣勢! o$ N3 {0 Q5 [" `: n# D
| 原生應用 (Native
9 {: e8 A F l# Z& P4 ?* A( B6 [ App)! f G) \: B/ N8 r2 s3 O, ^
| 原生App就是利用Andriod、ios平臺官方的開發語言、開發類庫、工具進行開發。比如安卓的java語言,ios的Swift語言。在應用性能上和交互體驗上應該是最好的.* s" e: V) P' ^" z6 f
| 1-可以訪問手機所有功能、可實現功能最齊全;. ~5 m7 R! O2 a
2-運行速度快、性能高,絕佳的用戶體驗;6 D, Z w7 P. `' [- O3 F( F
3-支持大量圖形和動畫。不卡,反應快;
. E+ c3 M. A* F& U' l" ~ K+ f( e4-比較快捷的使用設備端提供的接口,處理速度上有優勢;
* @) d9 o' B/ ~ | 1-開發成本高、周期長,Android和ios都需要單獨的開發;
$ C5 C. v9 x C7 N2-更新版本需要重新下載安裝包;% K. Z1 v/ _! d _( K C
| H5應用 (Web App), e; K+ @6 f3 i4 `
| 用普通web開發語言開發的,通過瀏覽器運行。
( Q( N( c8 r/ }9 i. P+ Q" D$ F$ Z | 1-使用web語言,開發門檻低、周期短;% K$ @# J9 c) d9 n8 f, d+ c
2-支持多種瀏覽器,兼容性好;
* M/ Z* s' p' b7 R& v2 M: f, j3-免安裝,使用瀏覽器打開,更新無需用戶參與;+ s- g( O& H( d3 j
| 1-對聯網要求高,離線不能承載太多東西;
* B0 U$ |; o$ f8 F& o! K2-功能有限;
# n- f; {. b8 ]0 F. |4 K3-運行速度慢,頁面不能承載太多東西;: H7 r$ i R$ {0 Q( e% n
4-圖片和動畫支持性不高;8 n) y/ i0 U& F B
5-體驗感不如原生和混合App;! C7 D8 z5 L; N! N* B
| 混合版應用 (Hybrid
) b7 y. j# |. G: f App)
% B, L$ M, ]( h) b/ ~- E! ? | 既利用了原生APP開發技術還利用了HTML5開發技術,是原生和HTML5技術的混合應用。混合比例不限。目前市面上流行的小程序和快應用就是采用Hybrid技術。
/ V. r) t5 E9 v' d, c& [. f | 1-運行速度比Web App快,可調用部分設備端口;
2 C2 X0 Z; ~) c2-開發周期比原生App短;
. D: @% Q% R" a: ~- b+ P/ Q3-可以跨平臺,Android和ios不需要單獨的開發;
3 r D, p0 ^* N8 i& p3 b2 O% h$ y4-免安裝,打開就能用,更新無需用戶參與;9 ~4 }: P- { y$ q f0 h+ s
| 1-功能接口受限于原生App的支持程度;3 [ g+ h, ~2 P' Y6 _" |4 R
2-體驗感優于Web App,但差于原生App;# ^4 T |" S* h+ F' ?
|
) w+ F4 d# }9 O. N: }+ ?! F$ Y 7 F+ b+ ?8 R. J( _0 h; K
3 x K$ s% `# A1 {; M' C2-why:需要哪些知識儲備?+ h) p4 h) ]2 a& O0 ?* |4 J
App開發的流程大概分為幾個階段:需求分析-->架構設計-->后端開發-->前端開發-->測試。每個階段都需要相應的知識。- V+ t, D) S( {4 q) M1 z' N
a: F8 G; c- |- l _7 }2 O% Z
% N. Q( s& J; I+ v5 |
需求分析:
! Q5 Y& h l- j# m需求分析也稱為軟件需求分析,是開發人員經過深入細致的調研和分析,準確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉化為完整的需求定義,從而確定系統必須做什么的過程。這是軟件工程專業的相關知識。
8 s1 o) E- ]0 S% ~1 R5 `; x
$ Z8 l) z& A+ ]9 D, y5 `5 E5 W) o( B% p/ I9 l% A
5 T5 S& ~. A, `4 C" c! L3 z( F1 @1 `0 A架構設計:
1 f2 ?% G' d, N, J$ o需要架構設計是將客戶的需求轉換為規范的開發計劃及文本,并制定這個項目的總體架構,指導整個開發團隊完成這個計劃。架構設計是軟件設計過程的早期階段,它把需求分析和設計流程連接在一起。需要對開發技術(包括前端和后端)有深入的了解。) a! {/ H8 K% s# ^5 }
8 X4 e' F( n" v' y3 | j# ~+ R
, k6 ^" c+ L h K
( ^: O) p* J6 C1 g8 n+ J后端開發:; i7 C- u. R4 A
后端是指服務器相關的統稱,包含服務器、數據庫。' L! W% R5 \7 E3 s, B9 O
服務器搭建與開發,常用語言和工具:Nginx、Java、Shell、Python、PHP、node.js等;
" N) M9 p( W4 h8 L; [- y* A數據庫開發,常用知識:關系型數據庫mySQL,非關系型數據庫MongoDB;/ L* [7 y/ H; v/ u6 O* F
' r/ J% ]( B: |0 g/ {5 R; ]
% [3 T: H, d% u2 Y; ] W
: L( X" i' a, t0 K" [8 H" I4 ^0 a前端開發:- t. G9 w1 M# h
前端是手機端的開發,包括UI界面、響應邏輯、數據的請求。
6 m* h3 w# x+ N& n! w前端三大基礎技術:HTML5、CSS、JavaScript;. B5 c/ [' c5 C
流行的前端框架:Angular、vue.js、React;5 x8 S0 X3 t# z7 P2 p5 k( W
原生App開發語言:Swift(iOS平臺);Java(Android平臺);
9 K% J$ O' J" T# T! x0 t6 Q
: u3 P5 [0 T/ N1 p0 }( O. F/ c, V9 ^( c0 G3 x9 P( ]0 A& ?
. N3 Z6 l1 ^( O5 c; S
7 ~, J- @+ B+ \測試:) S. F) J* l7 f5 V9 _, n# m# k
包括功能測試、性能測試、壓力測試等。& ?' H; _3 d% I- \( r
s+ v# y% p. M. o/ ?8 |
' \0 `% I/ F1 r" W1 M9 A. f) }( x
! Z. U+ m- o+ H/ A3 X3-how:怎么做?需要用到什么工具?
4 A! N2 s* j8 ?% `看書、看視頻教程、看開發文檔、模仿實踐;% `4 m9 E6 t. M8 Y) G9 |
基本上各種語言都有各自的開發工具(IDE),學到哪個就用哪個。
! k# X- D7 U2 P3 o0 u5 G+ G
1 x% b5 j3 N, O7 L4-how good:有沒有簡單的方法實現?
! N. k& n3 U. b C9 [( Y3 B隨著了解的越深入,越發現這個事情沒有想象中那么簡單。這是一個系統工程,涉及太多的知識,需要不同崗位的人配合,就好比開發一臺設備,需要機械工程師、電氣工程師、工藝工程師、采購工程師等一起合作才能完成。
3 w& V2 c! y+ K9 N* g- U4 l R難道一個人就真的不可能完成?我開始動搖,直到后來看到了“全棧開發”這個名詞,眼前一亮,信心立馬恢復。全棧開發是指一個人搞掂前端和后端。隨著技術的發展,市面上有很多現成的框架,借助這些框架來實現一個小項目這個可能還是有的。
1 m- y- }' F! A& \3 r. N* W
8 }# i+ [. g3 r那么接下來就是確定開發的模式:
8 J1 G$ d# K0 v2 D* m8 t6 ?' V; e/ L首先排除開發原生應用,難度實在太大,不符合我的情況。只能在H5和Hybrid之間選擇,H5是門檻最低的,但我預計后期會用到手機攝像頭和話筒這些硬件,這些是H5的劣勢。那么目前看來Hybrid是最合適的選擇,而且此時微信小程序開始火起來,各種開發教程和案例都豐富起來。于是,我最終確定做微信小程序。后來,微信小程序推出了云開發,媽呀,我感動得快要哭了,騰訊真的太照顧我了,這樣又幫我解決了后端開發的問題。
4 T8 t6 j& {' p4 b關于開發的問題,確定開發模式后,剩下的就是惡補微信小程序的相關知識。
! C) i+ C. w8 H- L; n. j! m' o3 y ~6 G
第二個問題是APP應該具備什么功能才能用來學英語?后面繼續記錄。。。。" d' X; ]9 e! L0 `" a% }
" H, Z% F0 u2 u0 \, S
|