|
開個(gè)貼子,記錄這件有意思的事情!) W# |: b p3 a3 E
+ Q$ b& P( z) l: G% m% ~
背景:2 ?( q! p1 R# j
沖突一:想學(xué)習(xí),卻找不到好工具
* y2 d; c8 k* N/ z: W$ K今年春節(jié)遇上了疫情,我宅在家里,處于“失業(yè)”狀態(tài),作為有志青年,不想每天刷劇、刷抖音,想著裝一下B,提高一下英語水平。" K% N- N6 A8 [
$ g# i7 ~! X. O9 q3 N9 ~于是,在朋友圈瘋狂的廣告洗腦下,我下載了幾個(gè)當(dāng)時(shí)很火的App,很認(rèn)真地投入學(xué)習(xí)。* p2 ~% @0 _* v, t7 D/ ]4 [: ]
然并卵,使用了一段時(shí)間之后,發(fā)現(xiàn)效果不太理想:首先,這些App記單詞過程太過于復(fù)雜,很多都提供了多種助記的方法,除了常規(guī)的詞根詞綴、聯(lián)想記憶以外,還有圖片記憶、電影情節(jié)記憶、思維導(dǎo)圖記憶等,這樣的好處是當(dāng)時(shí)很容易記住單詞,壞處就是忘得也很容易,大量的助記材料無形中增加了記憶的工作量,增加了記憶的負(fù)擔(dān),從而偏離了記單詞的初衷;其次,練聽力的功能普遍都是提供新概念英語或者VOA、BBC、TED等聽力材料,對于基礎(chǔ)不好的我,感覺在聽天書;
/ Z+ D" @" J e* O% Z難道就沒有一款適合我這種菜鳥的App嗎?% H' b7 U; E1 t7 k
一個(gè)大膽的想法出現(xiàn)在我腦海里:自己開發(fā)一個(gè)App。
+ n/ V( ^3 i3 t; C5 h2 s5 [1 q$ ]
. g: F' R5 |! x. q ]8 A) ^- p" R沖突二:計(jì)劃自己開發(fā),卻不是專業(yè)人士- f' @& z: S# ?8 a6 P
為什么說這個(gè)想法大膽呢?因?yàn)槲译m然是一名搞技術(shù)的工程師,但僅限于機(jī)械行業(yè)的。我所接受的完整編程教育僅是在大學(xué)期間的《C語言程序設(shè)計(jì)》。所以對事情一無所知,嚴(yán)重缺乏相關(guān)知識(shí)儲(chǔ)備,除了大膽,我也不知道怎么來形容這個(gè)想法了。- a3 ^& e( G# R7 N# J5 o% v
但有句古話叫無知者無畏,而且作為理工男,我始終相信任何問題都有辦法解決,只要你能夠把問題描述得足夠清楚。
# d. L( c, M7 ]/ E8 I( r" U因此這個(gè)想法一出現(xiàn),我立馬覺得應(yīng)該去試試,結(jié)果怎樣不重要,起碼先行動(dòng)起來。
1 _4 T+ y9 R( Q3 Z* d! Z x. d
5 S2 \/ E8 X' G) f5 e0 `: H$ i行動(dòng): j6 K; Z- n# C/ D4 m6 h
先把問題描述清楚,我的目標(biāo)是開發(fā)一個(gè)學(xué)英語的App,這款A(yù)pp應(yīng)該功能簡單,不能太過復(fù)雜。把它分解成兩個(gè)問題:9 [& `1 v1 U/ n. J4 H; e# J
1-怎樣開發(fā)一個(gè)App?
$ Y! W5 Y ^! c% V8 s2-應(yīng)該具備什么功能才能用來學(xué)英語?
. }5 K7 T! }- z6 b4 O& L2 K& H8 k+ {
先來思考第一個(gè)問題:怎么開發(fā)一個(gè)App?& i9 ~0 f; j q2 \- n1 P
我把問題進(jìn)行細(xì)分:7 M! |! g1 y4 ~4 N
1- 什么是App?
+ ^3 |8 f; }6 D/ i) ~2- 需要哪些知識(shí)儲(chǔ)備?+ z) t) l6 u5 x1 s
3- 如何做?需要什么工具? A* p% X4 r3 U% o' r y( q
4- 有沒有簡單的方法實(shí)現(xiàn)?
3 J- z5 d3 @/ |, [& x5 T. D經(jīng)過一番搜索、學(xué)習(xí)、請教、記錄和總結(jié),這些問題漸漸有了答案。
+ L/ v' M% L# M8 d: n6 i& I2 ]" K: S' b
1-what:什么是App?
d3 A V" O5 U- `1 Q, n( P/ PApp是應(yīng)用application的簡稱,我這里說的App是指手機(jī)端的App。6 J- l1 {0 H3 S9 J. ^
根據(jù)開發(fā)模式,目前的手機(jī)App可分為3種類型:原生、H5、Hybrid。它們有各自的優(yōu)劣勢:
9 H$ ^* Z" r( I K2 b( [ 類別 g4 I: Q0 k0 W, t1 T
| 概述( w; {" Q' r' N
| 優(yōu)勢
. y5 a7 @# I* ?2 ~7 f3 |7 H* p | 劣勢
! Y+ r/ A& h2 h6 S5 N | 原生應(yīng)用 (Native
7 F& Z/ w) v2 p5 O* v) Z# K App)
o# ^/ r+ J8 h4 [1 s0 q3 v | 原生App就是利用Andriod、ios平臺(tái)官方的開發(fā)語言、開發(fā)類庫、工具進(jìn)行開發(fā)。比如安卓的java語言,ios的Swift語言。在應(yīng)用性能上和交互體驗(yàn)上應(yīng)該是最好的.- y' I3 F9 k8 E% w0 y" n: o
| 1-可以訪問手機(jī)所有功能、可實(shí)現(xiàn)功能最齊全;
/ |7 q/ ?) v% p8 }- R; g1 p2-運(yùn)行速度快、性能高,絕佳的用戶體驗(yàn);
4 k: X+ O" c$ B( S+ a3-支持大量圖形和動(dòng)畫。不卡,反應(yīng)快; `! \3 s2 v+ m
4-比較快捷的使用設(shè)備端提供的接口,處理速度上有優(yōu)勢;
- |1 x! i1 f8 t5 J | 1-開發(fā)成本高、周期長,Android和ios都需要單獨(dú)的開發(fā);' e/ T. k8 ^' q" K; f0 Z2 r1 u0 Q
2-更新版本需要重新下載安裝包;: `0 \1 o. w) F
| H5應(yīng)用 (Web App)# S- d$ i$ w2 T$ d+ e. t
| 用普通web開發(fā)語言開發(fā)的,通過瀏覽器運(yùn)行。
! @" a2 X4 J L3 s* M, P P" E2 o- i | 1-使用web語言,開發(fā)門檻低、周期短;
5 {; K) J, M! ^2-支持多種瀏覽器,兼容性好;
0 Y2 S) t3 Q' r/ d. V$ m3-免安裝,使用瀏覽器打開,更新無需用戶參與;
) V8 w9 y3 W$ y" v9 x. e4 P | 1-對聯(lián)網(wǎng)要求高,離線不能承載太多東西;
; j9 {# |" @ o" e6 M) ~2-功能有限;% H3 R( d) k) m4 K8 t
3-運(yùn)行速度慢,頁面不能承載太多東西;2 ^- H% @, w3 A9 M
4-圖片和動(dòng)畫支持性不高;. R* h& f3 ^' y; _# A; {: z9 F
5-體驗(yàn)感不如原生和混合App;* I" d# Y% n# U) B; |- R4 g
| 混合版應(yīng)用 (Hybrid8 w8 `3 z" W/ A4 Q8 S( W c6 x
App)1 V* |! J( X. F8 M4 R9 E. f
| 既利用了原生APP開發(fā)技術(shù)還利用了HTML5開發(fā)技術(shù),是原生和HTML5技術(shù)的混合應(yīng)用。混合比例不限。目前市面上流行的小程序和快應(yīng)用就是采用Hybrid技術(shù)。
4 X6 W B# }8 e2 A, G | 1-運(yùn)行速度比Web App快,可調(diào)用部分設(shè)備端口;
! i/ [$ J/ W+ H6 b2-開發(fā)周期比原生App短;
, k( s5 A2 `7 C7 G# V; _7 ^& }2 E. P1 g1 i3-可以跨平臺(tái),Android和ios不需要單獨(dú)的開發(fā);- w. d5 e9 p- Q% k4 c
4-免安裝,打開就能用,更新無需用戶參與;9 d3 j* r o( E& m3 r: R; S0 K- Z
| 1-功能接口受限于原生App的支持程度;5 a) r6 @' [9 ^! x
2-體驗(yàn)感優(yōu)于Web App,但差于原生App;
v4 C u& \& P( k [ @ |
% ~- n, Y+ Z* o2 O . m% u4 K6 {0 S2 m
# ?( y* ?, q* U# C% F% P3 o2-why:需要哪些知識(shí)儲(chǔ)備?
9 {8 p9 m) h4 D" m6 s% OApp開發(fā)的流程大概分為幾個(gè)階段:需求分析-->架構(gòu)設(shè)計(jì)-->后端開發(fā)-->前端開發(fā)-->測試。每個(gè)階段都需要相應(yīng)的知識(shí)。
4 }# m4 b" {4 F" f$ E) Q" N0 x- |0 W" ~/ y8 Y/ D; v# _
9 ?8 o) N6 n' e$ u! s: J$ R9 w
需求分析:
9 q1 I8 q9 L$ k# \需求分析也稱為軟件需求分析,是開發(fā)人員經(jīng)過深入細(xì)致的調(diào)研和分析,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么的過程。這是軟件工程專業(yè)的相關(guān)知識(shí)。5 d. r9 u7 ]' q4 R G5 l1 v# T
5 k2 P b t# N3 X. p
: I% ^* M ]6 l: g0 Z Z5 u
- w' x6 D. z- y3 i架構(gòu)設(shè)計(jì):
: {. o/ z$ `$ h% u4 A) V需要架構(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ì)流程連接在一起。需要對開發(fā)技術(shù)(包括前端和后端)有深入的了解。
: f7 J6 c; @9 p* W& r$ g1 M6 z
! k8 a s3 r: U2 m% y( T- N% y W0 B1 o
; A/ |6 e7 x* Y0 Q4 D0 [$ S6 l后端開發(fā):
T" N/ u' x' t/ {6 M: W. v4 R后端是指服務(wù)器相關(guān)的統(tǒng)稱,包含服務(wù)器、數(shù)據(jù)庫。
# ?. _+ r" f( @7 w服務(wù)器搭建與開發(fā),常用語言和工具:Nginx、Java、Shell、Python、PHP、node.js等;. {, U+ Y( Q" s: t
數(shù)據(jù)庫開發(fā),常用知識(shí):關(guān)系型數(shù)據(jù)庫mySQL,非關(guān)系型數(shù)據(jù)庫MongoDB; Y7 M1 ~ ~, ?; H1 L4 j
6 ^: G- v2 J% p9 {2 \8 z6 x! j; z! o- J% {' U7 ^
9 ]* v) ?8 @" w. `) |0 E. Z前端開發(fā):
7 _( T! ^6 d6 n. _2 }前端是手機(jī)端的開發(fā),包括UI界面、響應(yīng)邏輯、數(shù)據(jù)的請求。6 y: W, e9 V- t; e7 K+ y
前端三大基礎(chǔ)技術(shù):HTML5、CSS、JavaScript;5 K$ u8 k c/ ]: a0 J
流行的前端框架:Angular、vue.js、React;
) t/ U, ?& R" L0 K3 a0 p原生App開發(fā)語言:Swift(iOS平臺(tái));Java(Android平臺(tái));, [8 g9 S3 E% I6 a
- R3 X! q6 J+ V7 p! L
8 ?7 e; L7 n/ N7 q) M- _, f$ h* `6 p9 }0 D6 l) t6 v' N$ S
# d, {, E7 p" p& B$ d
測試:
/ V' w* q: v7 K' O2 `& ?) r包括功能測試、性能測試、壓力測試等。7 u$ p. h% D# Q g) H1 Y0 @
# |2 m @* g3 o4 w/ N" w, U
/ F* i. n4 p" T2 l8 u4 u9 Y9 [# |# N0 y' W( ^5 m
3-how:怎么做?需要用到什么工具?2 b; ^& J6 F& ~# k, W3 d s
看書、看視頻教程、看開發(fā)文檔、模仿實(shí)踐;' E8 K* }/ v, D |
基本上各種語言都有各自的開發(fā)工具(IDE),學(xué)到哪個(gè)就用哪個(gè)。4 |+ p& q# a% \' h: y( t
$ p! J/ ~6 l( i* b& Z4-how good:有沒有簡單的方法實(shí)現(xiàn)?
1 E1 n: M; s4 q, C: f. |隨著了解的越深入,越發(fā)現(xiàn)這個(gè)事情沒有想象中那么簡單。這是一個(gè)系統(tǒng)工程,涉及太多的知識(shí),需要不同崗位的人配合,就好比開發(fā)一臺(tái)設(shè)備,需要機(jī)械工程師、電氣工程師、工藝工程師、采購工程師等一起合作才能完成。( I0 M! I' h1 S5 g
難道一個(gè)人就真的不可能完成?我開始動(dòng)搖,直到后來看到了“全棧開發(fā)”這個(gè)名詞,眼前一亮,信心立馬恢復(fù)。全棧開發(fā)是指一個(gè)人搞掂前端和后端。隨著技術(shù)的發(fā)展,市面上有很多現(xiàn)成的框架,借助這些框架來實(shí)現(xiàn)一個(gè)小項(xiàng)目這個(gè)可能還是有的。5 y0 W C7 f" ~& i1 u! c
5 o/ N" Y# }+ X" N- [那么接下來就是確定開發(fā)的模式:2 ^3 |- V6 I: i8 c. T
首先排除開發(fā)原生應(yīng)用,難度實(shí)在太大,不符合我的情況。只能在H5和Hybrid之間選擇,H5是門檻最低的,但我預(yù)計(jì)后期會(huì)用到手機(jī)攝像頭和話筒這些硬件,這些是H5的劣勢。那么目前看來Hybrid是最合適的選擇,而且此時(shí)微信小程序開始火起來,各種開發(fā)教程和案例都豐富起來。于是,我最終確定做微信小程序。后來,微信小程序推出了云開發(fā),媽呀,我感動(dòng)得快要哭了,騰訊真的太照顧我了,這樣又幫我解決了后端開發(fā)的問題。) F' x, s% \# K( o, U' a
關(guān)于開發(fā)的問題,確定開發(fā)模式后,剩下的就是惡補(bǔ)微信小程序的相關(guān)知識(shí)。
; c4 f* Z3 U/ y4 @/ ~) V; t& b' A) U8 B. B
第二個(gè)問題是APP應(yīng)該具備什么功能才能用來學(xué)英語?后面繼續(xù)記錄。。。。
6 z* T0 p4 j1 X! h0 K, T) _ A- A1 k& }0 F7 E
|
評分
-
查看全部評分
|