|
開個(gè)貼子,記錄這件有意思的事情!
; B) R- v% Z/ g7 r2 w# _* `( p
7 N. A* i+ z* |) D5 n1 @背景:
$ J+ ~1 n9 Y: M0 G) c沖突一:想學(xué)習(xí),卻找不到好工具
v n# X" l+ R) O今年春節(jié)遇上了疫情,我宅在家里,處于“失業(yè)”狀態(tài),作為有志青年,不想每天刷劇、刷抖音,想著裝一下B,提高一下英語水平。2 o/ t- P! F- I' O9 D+ \
) Z1 U( ]% @+ H* a4 o9 S
于是,在朋友圈瘋狂的廣告洗腦下,我下載了幾個(gè)當(dāng)時(shí)很火的App,很認(rèn)真地投入學(xué)習(xí)。
+ H* S+ Z+ x8 _/ ^然并卵,使用了一段時(shí)間之后,發(fā)現(xiàn)效果不太理想:首先,這些App記單詞過程太過于復(fù)雜,很多都提供了多種助記的方法,除了常規(guī)的詞根詞綴、聯(lián)想記憶以外,還有圖片記憶、電影情節(jié)記憶、思維導(dǎo)圖記憶等,這樣的好處是當(dāng)時(shí)很容易記住單詞,壞處就是忘得也很容易,大量的助記材料無形中增加了記憶的工作量,增加了記憶的負(fù)擔(dān),從而偏離了記單詞的初衷;其次,練聽力的功能普遍都是提供新概念英語或者VOA、BBC、TED等聽力材料,對(duì)于基礎(chǔ)不好的我,感覺在聽天書;, `& N5 L5 V. v+ d1 ?) h3 S* W
難道就沒有一款適合我這種菜鳥的App嗎?
9 ~6 T* x. C* R* R" \3 p+ o+ I& ] @一個(gè)大膽的想法出現(xiàn)在我腦海里:自己開發(fā)一個(gè)App。' k5 c' Q; L; ^/ [/ H
, _7 L9 e% S$ T# _1 y, X沖突二:計(jì)劃自己開發(fā),卻不是專業(yè)人士
; H4 ~* B2 A% |2 p6 k5 s為什么說這個(gè)想法大膽呢?因?yàn)槲译m然是一名搞技術(shù)的工程師,但僅限于機(jī)械行業(yè)的。我所接受的完整編程教育僅是在大學(xué)期間的《C語言程序設(shè)計(jì)》。所以對(duì)事情一無所知,嚴(yán)重缺乏相關(guān)知識(shí)儲(chǔ)備,除了大膽,我也不知道怎么來形容這個(gè)想法了。0 d1 d$ ~6 p6 y, f
但有句古話叫無知者無畏,而且作為理工男,我始終相信任何問題都有辦法解決,只要你能夠把問題描述得足夠清楚。
/ F8 @6 n& J; x# B% N7 V因此這個(gè)想法一出現(xiàn),我立馬覺得應(yīng)該去試試,結(jié)果怎樣不重要,起碼先行動(dòng)起來。; I1 d, f8 O5 C& J: ~6 b
6 e+ j& j# j3 h# O2 z5 V
行動(dòng):4 ?$ a$ i( T: d& d/ t
先把問題描述清楚,我的目標(biāo)是開發(fā)一個(gè)學(xué)英語的App,這款A(yù)pp應(yīng)該功能簡(jiǎn)單,不能太過復(fù)雜。把它分解成兩個(gè)問題:# G8 @. X; Y; Y
1-怎樣開發(fā)一個(gè)App?- J3 a1 f, B( q# W7 y
2-應(yīng)該具備什么功能才能用來學(xué)英語?
! Q5 ?0 n; r2 ?8 m
" m4 h& ^2 n+ T4 w) {+ u+ g先來思考第一個(gè)問題:怎么開發(fā)一個(gè)App?0 K6 Y: T! f9 U# H" W+ M: w
我把問題進(jìn)行細(xì)分:) r. q. ?( U: Z j& l+ I
1- 什么是App? + A8 d6 I M# I: S8 A# W
2- 需要哪些知識(shí)儲(chǔ)備?
4 L% [ y7 ~" G3- 如何做?需要什么工具?' e) X( j" U- `! S' s
4- 有沒有簡(jiǎn)單的方法實(shí)現(xiàn)?
1 W1 |) x* q* M4 R經(jīng)過一番搜索、學(xué)習(xí)、請(qǐng)教、記錄和總結(jié),這些問題漸漸有了答案。& O0 \6 Y: v! w7 ]' q2 j
9 k- v! p! z3 A2 P6 R1-what:什么是App?1 E- Z; s5 W+ r
App是應(yīng)用application的簡(jiǎn)稱,我這里說的App是指手機(jī)端的App。4 r8 Z: B4 r9 |9 L
根據(jù)開發(fā)模式,目前的手機(jī)App可分為3種類型:原生、H5、Hybrid。它們有各自的優(yōu)劣勢(shì):5 r( u; d' O- _% q+ ?) C
類別7 i% v4 r! o$ c3 E1 J7 z
| 概述6 x/ V" _) D+ n
| 優(yōu)勢(shì)
! L) M0 h5 o4 f% H7 E3 S6 l( a | 劣勢(shì)
`# `4 l( ~6 e/ e8 J. S | 原生應(yīng)用 (Native5 K3 y! l1 ]8 d6 A
App)
5 |+ R+ E- q1 ?" I6 h! a: l | 原生App就是利用Andriod、ios平臺(tái)官方的開發(fā)語言、開發(fā)類庫(kù)、工具進(jìn)行開發(fā)。比如安卓的java語言,ios的Swift語言。在應(yīng)用性能上和交互體驗(yàn)上應(yīng)該是最好的.
" ]' V$ p7 i: C | 1-可以訪問手機(jī)所有功能、可實(shí)現(xiàn)功能最齊全;
/ J2 F# g6 ]; a4 e* ` A2-運(yùn)行速度快、性能高,絕佳的用戶體驗(yàn);. \4 j: g; Y9 d e/ v& z0 `
3-支持大量圖形和動(dòng)畫。不卡,反應(yīng)快;
7 }( I: A1 `, P+ j8 D4-比較快捷的使用設(shè)備端提供的接口,處理速度上有優(yōu)勢(shì);5 E* n: \3 I+ [3 d% Y- @" p
| 1-開發(fā)成本高、周期長(zhǎng),Android和ios都需要單獨(dú)的開發(fā);
- Z8 S9 p2 Z7 |/ [. P1 u4 P. J8 D2-更新版本需要重新下載安裝包;
. X3 k* \/ N' q9 U; I | H5應(yīng)用 (Web App)
B) A2 K, n8 p- }& C# w5 | | 用普通web開發(fā)語言開發(fā)的,通過瀏覽器運(yùn)行。1 r3 S- d" D( J- ]
| 1-使用web語言,開發(fā)門檻低、周期短;' l# [6 l6 p1 p9 h& m
2-支持多種瀏覽器,兼容性好;
3 w+ C, @1 D8 h3-免安裝,使用瀏覽器打開,更新無需用戶參與;
7 N( N A* W# _! u | 1-對(duì)聯(lián)網(wǎng)要求高,離線不能承載太多東西;+ _, L- B' |# E8 C# d: y3 m5 |
2-功能有限;
& h$ T5 G# V' y! R3-運(yùn)行速度慢,頁(yè)面不能承載太多東西;
7 C8 A" m# Y7 J* @$ C4-圖片和動(dòng)畫支持性不高;
- ]8 z6 L6 k# I% }+ B3 O# G+ K5-體驗(yàn)感不如原生和混合App;! i: U! }7 N0 P
| 混合版應(yīng)用 (Hybrid
: H2 ^4 M( F$ g0 @' R9 D g# r& c6 |4 u App)( O* K' G1 `8 s( }# B, f' F2 t5 V9 A
| 既利用了原生APP開發(fā)技術(shù)還利用了HTML5開發(fā)技術(shù),是原生和HTML5技術(shù)的混合應(yīng)用。混合比例不限。目前市面上流行的小程序和快應(yīng)用就是采用Hybrid技術(shù)。
6 j$ R9 K: j/ {; S1 z0 u | 1-運(yùn)行速度比Web App快,可調(diào)用部分設(shè)備端口;
9 o$ r% ?: z1 X# S, n2-開發(fā)周期比原生App短;
8 U* s! H1 u/ w/ C! H# V3 a% B3-可以跨平臺(tái),Android和ios不需要單獨(dú)的開發(fā);3 m# M; a1 T% \% L8 c
4-免安裝,打開就能用,更新無需用戶參與;3 B5 v7 u3 D4 I8 |9 u5 m* u1 j
| 1-功能接口受限于原生App的支持程度;
* Q' p# K4 r3 A, h4 [ m/ ~2-體驗(yàn)感優(yōu)于Web App,但差于原生App;
: Z. C4 o4 V7 b8 |$ S" g, t |
+ n) v( Y- k @6 l- f; v. B/ @
- A1 t- W! S7 b6 r+ ?' b1 ~+ K7 u- ]
& g# c* {4 y- `2 ?$ N) ]2-why:需要哪些知識(shí)儲(chǔ)備?
: G4 I3 ?2 P) y: d. yApp開發(fā)的流程大概分為幾個(gè)階段:需求分析-->架構(gòu)設(shè)計(jì)-->后端開發(fā)-->前端開發(fā)-->測(cè)試。每個(gè)階段都需要相應(yīng)的知識(shí)。
7 q7 d5 }- }3 H2 u; M, z% a+ v+ p* I+ { ]
" N+ s( S0 t" w需求分析:, F: P6 |) L8 @! I" v' a9 H/ E
需求分析也稱為軟件需求分析,是開發(fā)人員經(jīng)過深入細(xì)致的調(diào)研和分析,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么的過程。這是軟件工程專業(yè)的相關(guān)知識(shí)。
' _4 v- l4 m. L/ j. _
& r1 g9 y* ^: h P2 F% b0 M4 p7 V% \/ a! l j% {
. x, i5 R1 R9 I. o5 p) p+ C
架構(gòu)設(shè)計(jì):5 _- H! s. o, q
需要架構(gòu)設(shè)計(jì)是將客戶的需求轉(zhuǎn)換為規(guī)范的開發(fā)計(jì)劃及文本,并制定這個(gè)項(xiàng)目的總體架構(gòu),指導(dǎo)整個(gè)開發(fā)團(tuán)隊(duì)完成這個(gè)計(jì)劃。架構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)過程的早期階段,它把需求分析和設(shè)計(jì)流程連接在一起。需要對(duì)開發(fā)技術(shù)(包括前端和后端)有深入的了解。9 T( {& }3 J, k$ _ R% F
/ t% k6 d. h5 t# a' e6 b+ h0 f" }- m, n: R
/ B$ n3 a8 @" W6 S# Z& y: o3 X, H后端開發(fā):+ X/ f4 T& a8 B; B8 {! q: \( P$ l
后端是指服務(wù)器相關(guān)的統(tǒng)稱,包含服務(wù)器、數(shù)據(jù)庫(kù)。7 A I5 E& w6 l# L' h3 c6 ~, L- ]! P( C
服務(wù)器搭建與開發(fā),常用語言和工具:Nginx、Java、Shell、Python、PHP、node.js等;
/ x% P0 u& g- F- L( O/ I% h' }數(shù)據(jù)庫(kù)開發(fā),常用知識(shí):關(guān)系型數(shù)據(jù)庫(kù)mySQL,非關(guān)系型數(shù)據(jù)庫(kù)MongoDB;7 G- I) G4 c) @' o
& q6 Z1 O& M! Z y3 ^% | U1 ]* j/ p0 s I
) @ Z! W$ ^/ S' L
前端開發(fā):' q9 O* b0 B' [: ~5 v. Z4 n
前端是手機(jī)端的開發(fā),包括UI界面、響應(yīng)邏輯、數(shù)據(jù)的請(qǐng)求。5 y7 Y8 }+ f& }' u* G% D* J5 `& V" D
前端三大基礎(chǔ)技術(shù):HTML5、CSS、JavaScript;& d* \" \2 \/ K' Q) }9 a" m. y) m
流行的前端框架:Angular、vue.js、React;
" P& P! N- n4 P2 h: q# L. D3 R原生App開發(fā)語言:Swift(iOS平臺(tái));Java(Android平臺(tái));
: k3 s% J2 r% s) x9 }( I& h* @+ D/ K) Z. Q
$ ^* e- G7 R# N; e4 v0 J; M* \: h0 n0 n# Z4 e* V) y( z3 b7 v" F. E( j1 R7 p
6 m0 v' G- x. M# @% X$ y
測(cè)試:- ^& t K+ j+ Q. ~
包括功能測(cè)試、性能測(cè)試、壓力測(cè)試等。! ?7 A. @1 l, z
0 `6 v3 G' A7 [) |" M; P: S
0 Z& C& ^* N% x1 ?: S) I7 c
( m; U7 k2 Z( W( l/ r5 a3-how:怎么做?需要用到什么工具?* c+ d5 G# m5 `( q
看書、看視頻教程、看開發(fā)文檔、模仿實(shí)踐;. i6 E% ?3 K# m6 i' K' l* m' f. g
基本上各種語言都有各自的開發(fā)工具(IDE),學(xué)到哪個(gè)就用哪個(gè)。( j9 f8 \6 d4 Z! e
9 [7 S# Y# O( U1 g& G" Q
4-how good:有沒有簡(jiǎn)單的方法實(shí)現(xiàn)?
) T, n( d- i& N- n3 F& }隨著了解的越深入,越發(fā)現(xiàn)這個(gè)事情沒有想象中那么簡(jiǎn)單。這是一個(gè)系統(tǒng)工程,涉及太多的知識(shí),需要不同崗位的人配合,就好比開發(fā)一臺(tái)設(shè)備,需要機(jī)械工程師、電氣工程師、工藝工程師、采購(gòu)工程師等一起合作才能完成。" ~- O- S9 R# r5 i$ n- L8 i2 W
難道一個(gè)人就真的不可能完成?我開始動(dòng)搖,直到后來看到了“全棧開發(fā)”這個(gè)名詞,眼前一亮,信心立馬恢復(fù)。全棧開發(fā)是指一個(gè)人搞掂前端和后端。隨著技術(shù)的發(fā)展,市面上有很多現(xiàn)成的框架,借助這些框架來實(shí)現(xiàn)一個(gè)小項(xiàng)目這個(gè)可能還是有的。
m# M0 H5 n7 m0 R! V6 x$ x* l" I( u, S
那么接下來就是確定開發(fā)的模式:2 j, I. |, a" M( w0 G
首先排除開發(fā)原生應(yīng)用,難度實(shí)在太大,不符合我的情況。只能在H5和Hybrid之間選擇,H5是門檻最低的,但我預(yù)計(jì)后期會(huì)用到手機(jī)攝像頭和話筒這些硬件,這些是H5的劣勢(shì)。那么目前看來Hybrid是最合適的選擇,而且此時(shí)微信小程序開始火起來,各種開發(fā)教程和案例都豐富起來。于是,我最終確定做微信小程序。后來,微信小程序推出了云開發(fā),媽呀,我感動(dòng)得快要哭了,騰訊真的太照顧我了,這樣又幫我解決了后端開發(fā)的問題。
* D- K5 S# q5 ^ K關(guān)于開發(fā)的問題,確定開發(fā)模式后,剩下的就是惡補(bǔ)微信小程序的相關(guān)知識(shí)。
" D- F) E7 `& `4 K; P3 O0 m5 _8 l i, E* `) c& s) t
第二個(gè)問題是APP應(yīng)該具備什么功能才能用來學(xué)英語?后面繼續(xù)記錄。。。。
* V3 P' T- R6 `5 v& N4 I& J: S5 T% \4 `& G7 ]
|
評(píng)分
-
查看全部評(píng)分
|