|
開個(gè)貼子,記錄這件有意思的事情!
1 Y9 q1 p0 ?4 ?( ?$ u5 ^" i
* C- w3 A6 f* }0 i4 b. L% }9 k) p背景:
: M% z/ }, p, j! |9 b) }沖突一:想學(xué)習(xí),卻找不到好工具
' h# {2 E6 i3 L' w3 Q' S8 n V- j: d今年春節(jié)遇上了疫情,我宅在家里,處于“失業(yè)”狀態(tài),作為有志青年,不想每天刷劇、刷抖音,想著裝一下B,提高一下英語水平。
( ?% z2 l: y7 }, o& p' ~+ u$ j& N9 h7 C
于是,在朋友圈瘋狂的廣告洗腦下,我下載了幾個(gè)當(dāng)時(shí)很火的App,很認(rèn)真地投入學(xué)習(xí)。
6 A3 Q; B8 H0 g# f* p# e然并卵,使用了一段時(shí)間之后,發(fā)現(xiàn)效果不太理想:首先,這些App記單詞過程太過于復(fù)雜,很多都提供了多種助記的方法,除了常規(guī)的詞根詞綴、聯(lián)想記憶以外,還有圖片記憶、電影情節(jié)記憶、思維導(dǎo)圖記憶等,這樣的好處是當(dāng)時(shí)很容易記住單詞,壞處就是忘得也很容易,大量的助記材料無形中增加了記憶的工作量,增加了記憶的負(fù)擔(dān),從而偏離了記單詞的初衷;其次,練聽力的功能普遍都是提供新概念英語或者VOA、BBC、TED等聽力材料,對于基礎(chǔ)不好的我,感覺在聽天書;; h% Y6 v/ _0 q b
難道就沒有一款適合我這種菜鳥的App嗎?
" Q0 x' Y+ Q8 m- @5 s+ V一個(gè)大膽的想法出現(xiàn)在我腦海里:自己開發(fā)一個(gè)App。
- ~* L) r \7 T$ ~
) v1 s3 d5 c4 x! A5 Z$ i7 r沖突二:計(jì)劃自己開發(fā),卻不是專業(yè)人士+ q9 {- c( O1 o1 ]# f& ]
為什么說這個(gè)想法大膽呢?因?yàn)槲译m然是一名搞技術(shù)的工程師,但僅限于機(jī)械行業(yè)的。我所接受的完整編程教育僅是在大學(xué)期間的《C語言程序設(shè)計(jì)》。所以對事情一無所知,嚴(yán)重缺乏相關(guān)知識儲備,除了大膽,我也不知道怎么來形容這個(gè)想法了。
: C. | A" H6 ~' ~0 D. E: R0 ^但有句古話叫無知者無畏,而且作為理工男,我始終相信任何問題都有辦法解決,只要你能夠把問題描述得足夠清楚。
7 h, r v4 t8 J0 D+ ?因此這個(gè)想法一出現(xiàn),我立馬覺得應(yīng)該去試試,結(jié)果怎樣不重要,起碼先行動起來。" h# ?! b" l& k$ a/ t# U
$ K& c$ W" g# z" F* v
行動:
$ w( g1 d" f* |/ M! Y8 O5 O先把問題描述清楚,我的目標(biāo)是開發(fā)一個(gè)學(xué)英語的App,這款A(yù)pp應(yīng)該功能簡單,不能太過復(fù)雜。把它分解成兩個(gè)問題:
7 P" [: u6 y" t( U9 [+ h1-怎樣開發(fā)一個(gè)App?
* r% T! G$ k3 g O# ?2-應(yīng)該具備什么功能才能用來學(xué)英語?( G8 B, @% Y0 R8 l/ s. I. `
) g( D o/ t+ V- M$ C5 T3 X% [& Y先來思考第一個(gè)問題:怎么開發(fā)一個(gè)App?
8 S- |- U$ o: `& c我把問題進(jìn)行細(xì)分:
- {1 v( _% M) @, O1- 什么是App?
* u5 a6 Y3 g5 M( R/ v) }- E# T2- 需要哪些知識儲備?2 v. w |2 J& T" t; u5 P H
3- 如何做?需要什么工具?
. N" F- t" p. }8 \8 [5 n) F4- 有沒有簡單的方法實(shí)現(xiàn)?. n' X" b: }+ i; f7 N
經(jīng)過一番搜索、學(xué)習(xí)、請教、記錄和總結(jié),這些問題漸漸有了答案。+ B, }0 W- X# Z- ] X; U
. |% E( Y) T+ M1-what:什么是App?, ^" ]/ B3 c6 {& G3 @9 G c
App是應(yīng)用application的簡稱,我這里說的App是指手機(jī)端的App。8 w- z: u# n6 ^! `6 x3 Q
根據(jù)開發(fā)模式,目前的手機(jī)App可分為3種類型:原生、H5、Hybrid。它們有各自的優(yōu)劣勢:0 Y' O; J4 V+ s0 C. o: m/ c4 J
類別- L0 Z; i0 h8 q% d; T" w
| 概述
7 ~3 z, ?) D2 Q" ^ | 優(yōu)勢3 b) w$ j7 v9 K) t. K
| 劣勢8 W( r. I+ Q `% c% f6 x$ S+ _' ?3 o
| 原生應(yīng)用 (Native
0 S2 K4 P$ f- J( ?) Y f App): I r0 J8 L6 A, E9 @6 {5 T
| 原生App就是利用Andriod、ios平臺官方的開發(fā)語言、開發(fā)類庫、工具進(jìn)行開發(fā)。比如安卓的java語言,ios的Swift語言。在應(yīng)用性能上和交互體驗(yàn)上應(yīng)該是最好的.
9 |$ C) ]5 K$ ]& ?+ T | 1-可以訪問手機(jī)所有功能、可實(shí)現(xiàn)功能最齊全;
. v# J. q8 I0 Z2-運(yùn)行速度快、性能高,絕佳的用戶體驗(yàn);6 E) r( R" i' q
3-支持大量圖形和動畫。不卡,反應(yīng)快;
' R0 h# |6 H' K N+ ]8 X1 N* L5 N' ~4-比較快捷的使用設(shè)備端提供的接口,處理速度上有優(yōu)勢;5 d; H6 e, \2 V0 s8 X- M! K2 q. V
| 1-開發(fā)成本高、周期長,Android和ios都需要單獨(dú)的開發(fā);
: C9 |9 v" }# [* l& M2-更新版本需要重新下載安裝包;5 w6 v- F2 @+ K
| H5應(yīng)用 (Web App)# k3 X. `% I4 m! ^" E( {
| 用普通web開發(fā)語言開發(fā)的,通過瀏覽器運(yùn)行。
- h: u8 z+ b( N# f | 1-使用web語言,開發(fā)門檻低、周期短;
0 V9 x0 W' e9 q% w5 a2-支持多種瀏覽器,兼容性好;7 K! [) e/ V. K s
3-免安裝,使用瀏覽器打開,更新無需用戶參與;+ y1 r) t, z3 ~2 U4 d" c0 @' O- v
| 1-對聯(lián)網(wǎng)要求高,離線不能承載太多東西;
. d0 ^% {6 m. R0 q2 E6 ~' F% i2-功能有限;# H0 I2 [, Q. x+ l5 S. v& j) o
3-運(yùn)行速度慢,頁面不能承載太多東西;2 `: n# h) l& Z
4-圖片和動畫支持性不高;0 D( F9 ^) M9 a& u9 H
5-體驗(yàn)感不如原生和混合App;
2 c, Z/ [. L5 E* x# l1 W | 混合版應(yīng)用 (Hybrid
: q) ], ~6 F" G k2 l- P/ d App)8 h1 |$ u+ S. M" A3 s
| 既利用了原生APP開發(fā)技術(shù)還利用了HTML5開發(fā)技術(shù),是原生和HTML5技術(shù)的混合應(yīng)用;旌媳壤幌。目前市面上流行的小程序和快應(yīng)用就是采用Hybrid技術(shù)。
- i/ O/ e, H- }# x( `( v/ i' I+ A' @ | 1-運(yùn)行速度比Web App快,可調(diào)用部分設(shè)備端口;
. c1 B7 S4 F C4 l+ y. J2-開發(fā)周期比原生App短;7 y A$ c, v1 r( e+ k5 `: Z; F
3-可以跨平臺,Android和ios不需要單獨(dú)的開發(fā);
& X/ I7 g. \6 `; q4-免安裝,打開就能用,更新無需用戶參與;
4 t0 h) S7 q! [, i | 1-功能接口受限于原生App的支持程度;
, o9 J2 I+ v5 p( I2-體驗(yàn)感優(yōu)于Web App,但差于原生App;
; A2 g; D. W& b7 c# E | 4 |# `1 @3 x! F) X
, u8 n9 c Y3 J9 l% X7 H
( T9 ?3 L& h4 n8 K7 z. v2-why:需要哪些知識儲備?
$ C! L' F0 D: j; K- @App開發(fā)的流程大概分為幾個(gè)階段:需求分析-->架構(gòu)設(shè)計(jì)-->后端開發(fā)-->前端開發(fā)-->測試。每個(gè)階段都需要相應(yīng)的知識。5 o8 o3 m% _6 P% i( g6 F. w4 m. A
/ l" X: a9 F: `( u
1 o1 r8 a8 w( ~ j
需求分析:* \6 I+ q0 X. \# m5 T3 I! K+ n. b
需求分析也稱為軟件需求分析,是開發(fā)人員經(jīng)過深入細(xì)致的調(diào)研和分析,準(zhǔn)確理解用戶和項(xiàng)目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么的過程。這是軟件工程專業(yè)的相關(guān)知識。
- _1 d! Y2 ?2 z& T# ~ \% y3 s7 w8 |; W
7 V# j' Y' q: ?. v6 |$ l
( w: v$ t& m/ x! U" Z3 [
架構(gòu)設(shè)計(jì):
* y1 K6 U* H/ r! ]2 O, Y8 g需要架構(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ù)(包括前端和后端)有深入的了解。7 K3 j. K2 x* V; I) I0 M; R
: b+ b( Q) Y- ~
6 S, W' u" \. P1 A3 M& R8 j
. y% ~) c: J: a/ n8 g
后端開發(fā):
4 V+ `6 Q1 @: k# A7 z% v后端是指服務(wù)器相關(guān)的統(tǒng)稱,包含服務(wù)器、數(shù)據(jù)庫。
4 c% T, _! u& @7 i服務(wù)器搭建與開發(fā),常用語言和工具:Nginx、Java、Shell、Python、PHP、node.js等;
U- y2 Y! c i5 H4 X7 I0 i數(shù)據(jù)庫開發(fā),常用知識:關(guān)系型數(shù)據(jù)庫mySQL,非關(guān)系型數(shù)據(jù)庫MongoDB;
& _# @1 w& P# M3 d. Q' P; T, x$ [0 R% B
/ ~0 o* z; _0 X6 T" v( b7 k! w: N" K
4 M- m& v. S% Q% M# P8 L前端開發(fā):; M" _. @/ o' O5 Y4 z e! M+ h! u
前端是手機(jī)端的開發(fā),包括UI界面、響應(yīng)邏輯、數(shù)據(jù)的請求。
/ Z: t) A3 ]5 X# H( j3 T前端三大基礎(chǔ)技術(shù):HTML5、CSS、JavaScript;
5 v9 G8 Z7 V$ I; O. t. J流行的前端框架:Angular、vue.js、React;) H: s0 t+ K& |$ U2 R
原生App開發(fā)語言:Swift(iOS平臺);Java(Android平臺);: N/ r+ H- u0 v. ]2 ^8 r& o
. Z4 U$ Q4 n; l4 {0 U# I( _0 A$ C* s+ S
- H. [8 ]% W# p1 v( y
# |6 o w5 j# I# R" L測試:
4 i% J: \4 c+ A; L [3 b W包括功能測試、性能測試、壓力測試等。4 ~$ U- w4 E. u
' b* V3 c6 B+ e( }% W5 ]
5 s. l5 P0 ]; \( U I! m! S3 ?+ {' B
3-how:怎么做?需要用到什么工具?
* Z* C+ H$ d1 h看書、看視頻教程、看開發(fā)文檔、模仿實(shí)踐;; e* \: ]. D( ~* y4 F8 r" N- J7 [
基本上各種語言都有各自的開發(fā)工具(IDE),學(xué)到哪個(gè)就用哪個(gè)。9 g$ w* ]1 J6 J2 z! B: Z: Q, n
( l. \# K! Q; C7 W4-how good:有沒有簡單的方法實(shí)現(xiàn)?
$ ^1 p/ X$ a& D1 _- _8 W7 a! a隨著了解的越深入,越發(fā)現(xiàn)這個(gè)事情沒有想象中那么簡單。這是一個(gè)系統(tǒng)工程,涉及太多的知識,需要不同崗位的人配合,就好比開發(fā)一臺設(shè)備,需要機(jī)械工程師、電氣工程師、工藝工程師、采購工程師等一起合作才能完成。
1 E# ], f7 s' x3 d) z難道一個(gè)人就真的不可能完成?我開始動搖,直到后來看到了“全棧開發(fā)”這個(gè)名詞,眼前一亮,信心立馬恢復(fù)。全棧開發(fā)是指一個(gè)人搞掂前端和后端。隨著技術(shù)的發(fā)展,市面上有很多現(xiàn)成的框架,借助這些框架來實(shí)現(xiàn)一個(gè)小項(xiàng)目這個(gè)可能還是有的。1 H7 q% i5 h1 z9 M! Q
- _' V! R% t* O- z0 ]1 s4 j* ~那么接下來就是確定開發(fā)的模式:
* W0 }/ B3 W: [8 V% j首先排除開發(fā)原生應(yīng)用,難度實(shí)在太大,不符合我的情況。只能在H5和Hybrid之間選擇,H5是門檻最低的,但我預(yù)計(jì)后期會用到手機(jī)攝像頭和話筒這些硬件,這些是H5的劣勢。那么目前看來Hybrid是最合適的選擇,而且此時(shí)微信小程序開始火起來,各種開發(fā)教程和案例都豐富起來。于是,我最終確定做微信小程序。后來,微信小程序推出了云開發(fā),媽呀,我感動得快要哭了,騰訊真的太照顧我了,這樣又幫我解決了后端開發(fā)的問題。* ^# d9 z( }9 _) Y
關(guān)于開發(fā)的問題,確定開發(fā)模式后,剩下的就是惡補(bǔ)微信小程序的相關(guān)知識。
% ?0 v* R5 Z' o* }# w$ i2 G6 h! [
" H0 `" W. Z2 I8 g* N( A第二個(gè)問題是APP應(yīng)該具備什么功能才能用來學(xué)英語?后面繼續(xù)記錄。。。。4 c+ ], k- G/ h& y$ ~
5 y6 i" }. o# J* ]2 U/ a) {" j |
評分
-
查看全部評分
|