机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 37356|回复: 85

纯自嗨:从零开始写一个小程序

[复制链接]
发表于 2021-1-6 07:32:36 | 显示全部楼层 |阅读模式
开个贴子,记录这件有意思的事情!3 j* H$ _; v2 J7 b8 E" s

4 _3 c4 f" S7 u( d$ O2 J* n背景:
5 S6 u3 [/ W" d( g0 O冲突一:想学习,却找不到好工具
7 v% O* e- ?- ~* t/ z今年春节遇上了疫情,我宅在家里,处于“失业”状态,作为有志青年,不想每天刷剧、刷抖音,想着装一下B,提高一下英语水平。. r; {3 V. u8 ?/ S! o
) [& G4 M& ]0 n; q: Q
于是,在朋友圈疯狂的广告洗脑下,我下载了几个当时很火的App,很认真地投入学习。
5 Y. c7 v9 a* z. \/ L7 C然并卵,使用了一段时间之后,发现效果不太理想:首先,这些App记单词过程太过于复杂,很多都提供了多种助记的方法,除了常规的词根词缀、联想记忆以外,还有图片记忆、电影情节记忆、思维导图记忆等,这样的好处是当时很容易记住单词,坏处就是忘得也很容易,大量的助记材料无形中增加了记忆的工作量,增加了记忆的负担,从而偏离了记单词的初衷;其次,练听力的功能普遍都是提供新概念英语或者VOA、BBC、TED等听力材料,对于基础不好的我,感觉在听天书;
3 X& Z" `; w: ]' k0 h6 h1 `. i+ x难道就没有一款适合我这种菜鸟的App吗?
/ G+ q! Y6 {5 L: M5 i一个大胆的想法出现在我脑海里:自己开发一个App。: {/ S- Q* D9 O! e8 {9 r" \

+ h1 {0 r) v7 y/ i冲突二:计划自己开发,却不是专业人士
& |! \/ e+ B  Q  n为什么说这个想法大胆呢?因为我虽然是一名搞技术的工程师,但仅限于机械行业的。我所接受的完整编程教育仅是在大学期间的《C语言程序设计》。所以对事情一无所知,严重缺乏相关知识储备,除了大胆,我也不知道怎么来形容这个想法了。" e: |1 S7 t3 P3 z1 b$ J8 E
但有句古话叫无知者无畏,而且作为理工男,我始终相信任何问题都有办法解决,只要你能够把问题描述得足够清楚。& r# x+ o+ ?  W0 k9 [
因此这个想法一出现,我立马觉得应该去试试,结果怎样不重要,起码先行动起来。1 r- o, P9 t/ t" \
- u. u6 F! u! _  b$ J. w1 n5 Y
行动:/ [8 o; Y1 z' B/ z/ t; I, J
先把问题描述清楚,我的目标是开发一个学英语的App,这款App应该功能简单,不能太过复杂。把它分解成两个问题:: K) S. C# l. n0 k6 r* j
1-怎样开发一个App?% l/ H8 S$ L; C0 o
2-应该具备什么功能才能用来学英语?/ u3 W9 Q% ^1 F

; D2 [. q8 D8 X; Q: H先来思考第一个问题:怎么开发一个App?
. w1 q7 v- o1 K& L我把问题进行细分:
0 N9 [4 Y" c2 j9 H; C# L1- 什么是App?
, ?7 h$ w/ p6 T/ l- t* O# g2- 需要哪些知识储备?! J+ a" H+ x) k: N8 r9 y) X
3- 如何做?需要什么工具?
# y: j, Z. B1 \! J2 a" u( H; w' y4- 有没有简单的方法实现?+ t1 M3 S8 X/ G" x
经过一番搜索、学习、请教、记录和总结,这些问题渐渐有了答案。8 ], m- F4 u3 c; g. t

: v+ V( J9 q0 t( \% y3 M! h  ]1-what:什么是App?
9 B4 C, n1 G. d/ p: X2 B; u+ eApp是应用application的简称,我这里说的App是指手机端的App。4 ^' Q1 J  L) W3 ^8 [
根据开发模式,目前的手机App可分为3种类型:原生、H5、Hybrid。它们有各自的优劣势:9 B2 y) r9 D2 z( `7 q. {: g
            
类别
/ W. {+ G& U1 P9 u: U
概述
% Q- |7 Y) C& ]% J  k
优势5 G4 v8 G' M2 v4 u+ x& i, @0 r% P
劣势
: x( A% d2 A" ^
原生应用 (Native& D" x! ~' r/ o' `* V
  App)
* |7 ]4 K! h0 {) t, \( k' m
原生App就是利用Andriod、ios平台官方的开发语言、开发类库、工具进行开发。比如安卓的java语言,ios的Swift语言。在应用性能上和交互体验上应该是最好的.
, t8 j& `3 R/ p6 A0 }: S( {
1-可以访问手机所有功能、可实现功能最齐全;: e% H+ o( q; \, w* ^" }$ h
2-运行速度快、性能高,绝佳的用户体验;4 i* T! f( K, i
3-支持大量图形和动画。不卡,反应快;
: z! q! b' n; @9 k. n6 `4-比较快捷的使用设备端提供的接口,处理速度上有优势;& x/ H7 R* M3 m- Z6 g- H( ~4 }
1-开发成本高、周期长,Android和ios都需要单独的开发;
7 z" Q. a! T" B0 W1 T2-更新版本需要重新下载安装包;
0 v/ P7 v1 Q; k& Z6 `( Z' {
H5应用 (Web App)
" T7 P8 s8 J; ]$ N& p- k1 `
用普通web开发语言开发的,通过浏览器运行。8 ?. ?3 |6 B! X
1-使用web语言,开发门槛低、周期短;
7 I! ~$ A0 }9 m2-支持多种浏览器,兼容性好;
' R7 C: x( ?9 I/ d5 V+ \3 ?& }" S: a. C3-免安装,使用浏览器打开,更新无需用户参与;& e; P! B/ A" A( \
1-对联网要求高,离线不能承载太多东西;  a3 v4 Y, T' y
2-功能有限;% A( }5 n/ Y" i( ~% V
3-运行速度慢,页面不能承载太多东西;% r& m% H, o! R7 s+ B' p! q
4-图片和动画支持性不高;
4 D  y" |& B7 D: B5-体验感不如原生和混合App;
1 w# e* [; e( ~7 I6 g2 K
混合版应用 (Hybrid& R, u3 Y9 n- m- a) B& A: k1 I
  App)8 M! o/ [! t' U8 N
既利用了原生APP开发技术还利用了HTML5开发技术,是原生和HTML5技术的混合应用。混合比例不限。目前市面上流行的小程序和快应用就是采用Hybrid技术。
0 q" s1 W# z  v: Q
1-运行速度比Web  App快,可调用部分设备端口;' O2 F) R' M8 f7 d0 w: e/ s* ], l
2-开发周期比原生App短;/ P+ n) ?  S( ~3 S2 k
3-可以跨平台,Android和ios不需要单独的开发;
; U3 E; }; }5 C0 W4-免安装,打开就能用,更新无需用户参与;
0 `% M  [! h" T8 N8 S
1-功能接口受限于原生App的支持程度;
  E' L7 F4 X& ^* w- j  [& N1 w. D2-体验感优于Web App,但差于原生App;
0 l1 r( y5 c# |3 \; R. ~
  u& t% H) p+ F1 ]$ t
        
5 {" c- S' _9 j/ f9 Y; m. A! w/ `3 ~# P1 o
2-why:需要哪些知识储备?
0 O) i' g& S& u) J' s$ e1 fApp开发的流程大概分为几个阶段:需求分析-->架构设计-->后端开发-->前端开发-->测试。每个阶段都需要相应的知识。% v1 D. H$ T# K
+ P$ Z- Q  R$ Y! o

( M# N2 N# r) R: Q9 [需求分析:, g" M5 C. {% q' U
需求分析也称为软件需求分析,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。这是软件工程专业的相关知识。5 n# X3 s0 F4 _: p# L
) i! }) Q! l$ B$ U3 R" f

" E) F: ~  z4 r* [( Q' x; O% R* \. ]! C8 |
架构设计:
! i+ O! I9 B2 t3 }需要架构设计是将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构设计是软件设计过程的早期阶段,它把需求分析和设计流程连接在一起。需要对开发技术(包括前端和后端)有深入的了解。4 I" Y3 j, E! O! `" G) J2 V6 }4 U
9 _8 a5 t$ p: d, i
: a4 z: m0 d0 t& O4 ^" Q

: o6 y* u* ]$ M" @  n后端开发:, `  a/ [+ d0 I# x
后端是指服务器相关的统称,包含服务器、数据库。
! W! F: z+ A, _- N, Z* }" ]& w1 [服务器搭建与开发,常用语言和工具:Nginx、Java、Shell、Python、PHP、node.js等;
6 ?5 W# z$ O2 c9 H* ^4 R8 ]数据库开发,常用知识:关系型数据库mySQL,非关系型数据库MongoDB;. l, ~# k) M5 A* B7 X

9 Y3 C! Z0 y+ g/ w! I( e* M* @
% _: S' a8 ^; L

! G3 [! u' u' O* t- j8 {前端开发:
1 |8 C$ ]6 l5 Y5 r7 D0 U' b前端是手机端的开发,包括UI界面、响应逻辑、数据的请求。* Y9 _: |3 Q& U4 O# {
前端三大基础技术:HTML5、CSS、JavaScript;8 G7 y7 ?8 g6 f8 W4 [' h
流行的前端框架:Angular、vue.js、React;" I, q, G1 w2 Y) a% r- F
原生App开发语言:Swift(iOS平台);Java(Android平台);7 o) i& T, g# K& V$ o& P
0 K$ y% V) h- m
$ A4 v4 V4 M( `) r  _
# I2 J- x0 ?3 C% Q1 B5 S

: P- g2 p' v! U/ ?0 I) ?' x/ i7 Y测试:# T0 @; k- f. ~- o3 b
包括功能测试、性能测试、压力测试等。3 N! a% o9 V3 u

( h0 L* D; c( s$ A% g: {% m, d

/ s3 Q$ f" U8 T: f# ]
# r$ q) P0 x' A9 ?: ~1 I4 D3-how:怎么做?需要用到什么工具?0 k1 m4 K$ h9 m7 o0 [+ n
看书、看视频教程、看开发文档、模仿实践;
. x6 |; f& F( j7 I: Z基本上各种语言都有各自的开发工具(IDE),学到哪个就用哪个。8 ?, R# f- p# \1 D  A* K- z- a" o

7 J$ N: O: W6 B. C. G4-how good:有没有简单的方法实现?/ ]$ z7 T. Y. [' N% F
随着了解的越深入,越发现这个事情没有想象中那么简单。这是一个系统工程,涉及太多的知识,需要不同岗位的人配合,就好比开发一台设备,需要机械工程师、电气工程师、工艺工程师、采购工程师等一起合作才能完成。
% l4 ?# S3 j3 |- ]/ |难道一个人就真的不可能完成?我开始动摇,直到后来看到了“全栈开发”这个名词,眼前一亮,信心立马恢复。全栈开发是指一个人搞掂前端和后端。随着技术的发展,市面上有很多现成的框架,借助这些框架来实现一个小项目这个可能还是有的。5 E; }! O$ J3 X. N% ?

1 X! b: B1 n. s6 l) Q那么接下来就是确定开发的模式:
2 y' z9 R+ o# A, {6 s4 Y* W2 N首先排除开发原生应用,难度实在太大,不符合我的情况。只能在H5和Hybrid之间选择,H5是门槛最低的,但我预计后期会用到手机摄像头和话筒这些硬件,这些是H5的劣势。那么目前看来Hybrid是最合适的选择,而且此时微信小程序开始火起来,各种开发教程和案例都丰富起来。于是,我最终确定做微信小程序。后来,微信小程序推出了云开发,妈呀,我感动得快要哭了,腾讯真的太照顾我了,这样又帮我解决了后端开发的问题。7 @' C9 i2 v) o; W+ b7 O
关于开发的问题,确定开发模式后,剩下的就是恶补微信小程序的相关知识。% a" V* f" f1 Y; ], o' ^

9 I& J# s7 C- f) H. k第二个问题是APP应该具备什么功能才能用来学英语?后面继续记录。。。。
  o) T5 H& e: u
1 f. E6 G1 k3 u) F6 P# S/ s+ t5 `

评分

参与人数 2威望 +101 收起 理由
大白小白 + 1 不明觉厉
老鹰 + 100

查看全部评分

回复

使用道具 举报

发表于 2021-1-6 08:05:18 | 显示全部楼层
楼主牛批,期待更新

点评

感谢支持!  发表于 2021-1-6 23:15
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-6 08:11:05 | 显示全部楼层
等更新

点评

感谢支持!  发表于 2021-1-6 23:15
回复

使用道具 举报

发表于 2021-1-6 09:50:49 | 显示全部楼层
牛批,点个赞

点评

感谢支持!  发表于 2021-1-6 23:14
回复 支持 反对

使用道具 举报

发表于 2021-1-6 09:53:36 | 显示全部楼层
此事意义重大!给楼主点赞!

点评

感谢支持!  发表于 2021-1-7 08:25
回复 支持 反对

使用道具 举报

发表于 2021-1-6 09:54:06 | 显示全部楼层
good  用心

点评

感谢支持!  发表于 2021-1-6 23:16
回复 支持 反对

使用道具 举报

发表于 2021-1-6 11:02:56 | 显示全部楼层
给楼主点赞!

点评

感谢支持!  发表于 2021-1-6 23:17
回复 支持 反对

使用道具 举报

发表于 2021-1-6 11:12:46 | 显示全部楼层
想法不错,可以看看比邻国APP,可以学习很多语种

点评

感谢分享!  发表于 2021-1-6 23:17
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-1-6 11:36:44 | 显示全部楼层
确定开发微信小程序后,那后面所有的工作就以这个展开。
9 j" b& {1 e& B0 S5 Y' q- \* g
; ]) k; T9 U: Y$ z3 ~; [/ ?4 R我把这事分成三个步骤:
2 f6 ?8 W( H' j1-先学习前端三大基础知识:HTML5、CSS、JavaScript,了解vue.js;5 i8 ]5 \6 b; {3 Q& I8 O
2-学习小程序的开发教材及案例:官方的开发文档和教程、优秀大咖的课程;
8 `! s; L& ^  {( s0 J4 [3-以实际需求为驱动,开始写程序,边写边学;. c* r' o0 B( S3 o! V  f. O

3 p- u5 f" h: h- r8 T; }- ^+ _! ]
学习过程中找了很多学习资料,经过学习和筛选,我认为最有用的有以下几个,如果各位社友感兴趣可以去了解:3 |* x, [; S' G! d; j; \# s, D7 l
1-菜鸟教程:/ a8 n+ n! b" |; p
此网站有详细的教程资料,包括前端三大技术、服务器、数据库等,非常详细。! d+ y5 I: x) s0 C4 Z
1 R% L* |; X3 D+ b
; ^+ s. o. D, p* D9 ~! Y5 j( R- S8 D. G
2-官方文档:
: e" _' @2 J5 N6 C" z+ O小程序的官方开发文档,可以先粗略阅读一遍,在写代码时再查找具体的组件或者API。
$ z% q, P& F" H. h( v+ Q/ @4 B
" u& |4 @4 Y+ y, `* F8 W7 O5 C" y3 T! d; W/ `) R% Y. z
3-官方视频教程:
2 `8 m% b/ L6 r( R分类三个阶段,包括小程序开发、小程序云开发、小程序项目,可以反复观看。
# h# t5 y  Y6 D8 }
- t# w8 j4 s' K! q; `2 D( r. ~4 E) M2 R, b9 c& U
4-CSDN:
( R: f: ^/ m  u1 Z一个程序员的社区,只要遇到疑问,90%可以在这个地方找到答案。
/ T9 N" \- O; ^; O- K
( t7 G  T- `6 i2 ]( \9 o+ R, [7 r, U9 ?9 w: G
5-B站:. P! l; d& Y7 x+ U% j
一个包罗万有的社区,有大量的视频教程,包括HTML5、CSS、JavaScript、小程序开发。$ e5 D& q$ \% |! R9 M
" z0 w) `# b, P5 D( T$ b
备注:由于我没有权限发表包含URL地址的信息,所以无法贴上链接。以上的资料都可以百度找到。如果实在找不到,有兴趣的可以私信我。
5 L8 R. c) B2 @6 C3 a. V学习过程中,也走过一些弯路:
9 Y! m) t% _: }: n$ ]1- APICloud,一个低代码开发平台,需要购买他的资源,私房钱不多,放弃;3 D( E/ y3 {2 r1 p
2- DCloud,一个可以一次开发,多端覆盖的开发框架,就自己一个人使用,就一个平台,不需要多端覆盖,放弃;4 h3 e" H& ?: ?$ P2 p

' ^* y2 d" E7 o% p' N7 a
% P; U5 Q2 d& f  p, u

点评

URL可以这样发:ww去w.b掉aid中u.co文m  发表于 2022-10-1 11:40

评分

参与人数 1威望 +1 收起 理由
大白小白 + 1 思想深刻,见多识广!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-6 11:49:29 | 显示全部楼层
机械自动化学者 发表于 2021-1-6 08:05
8 D9 i4 w9 o1 @; ?- o7 q楼主牛批,期待更新
7 H+ u/ D. B' r
谢谢!不牛批,本人普通技术一枚,就是兴趣广一点,有一点点动手能力。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-25 09:37 , Processed in 0.061181 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表