找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 45579|回复: 85

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

[复制链接]
发表于 2021-1-6 07:32:36 | 显示全部楼层 |阅读模式
开个贴子,记录这件有意思的事情!# B4 f) T% ~4 m) K

& x) Z2 p; ]( P背景:
& @4 w3 v3 B) z0 b5 X3 P8 N冲突一:想学习,却找不到好工具
& m/ P2 C; c% c, o8 O4 [今年春节遇上了疫情,我宅在家里,处于“失业”状态,作为有志青年,不想每天刷剧、刷抖音,想着装一下B,提高一下英语水平。5 C( q+ n: I  v& M$ M- u: O$ C% m

- }6 q$ |* F7 G7 J于是,在朋友圈疯狂的广告洗脑下,我下载了几个当时很火的App,很认真地投入学习。7 `1 r8 W% H- i' x7 m
然并卵,使用了一段时间之后,发现效果不太理想:首先,这些App记单词过程太过于复杂,很多都提供了多种助记的方法,除了常规的词根词缀、联想记忆以外,还有图片记忆、电影情节记忆、思维导图记忆等,这样的好处是当时很容易记住单词,坏处就是忘得也很容易,大量的助记材料无形中增加了记忆的工作量,增加了记忆的负担,从而偏离了记单词的初衷;其次,练听力的功能普遍都是提供新概念英语或者VOA、BBC、TED等听力材料,对于基础不好的我,感觉在听天书;
& T4 W1 I4 i7 U9 M& }难道就没有一款适合我这种菜鸟的App吗?7 \/ g. O& B9 x
一个大胆的想法出现在我脑海里:自己开发一个App。8 m' I9 t! @$ u

4 B# Y$ z; ]4 I2 g冲突二:计划自己开发,却不是专业人士6 m" |2 u3 R. D* b( f6 r9 M
为什么说这个想法大胆呢?因为我虽然是一名搞技术的工程师,但仅限于机械行业的。我所接受的完整编程教育仅是在大学期间的《C语言程序设计》。所以对事情一无所知,严重缺乏相关知识储备,除了大胆,我也不知道怎么来形容这个想法了。
. X: o# \& o- P: {9 p但有句古话叫无知者无畏,而且作为理工男,我始终相信任何问题都有办法解决,只要你能够把问题描述得足够清楚。
! y; _$ W, Y$ E4 k! u" V$ n因此这个想法一出现,我立马觉得应该去试试,结果怎样不重要,起码先行动起来。( C- a) j4 f/ N. Q. \
: K1 ?3 V' V, J' H$ z1 X
行动:8 Z0 R9 h5 y$ s" \, |) Z) l
先把问题描述清楚,我的目标是开发一个学英语的App,这款App应该功能简单,不能太过复杂。把它分解成两个问题:
  p1 J1 }. y& y/ g% Y1-怎样开发一个App?
  r3 l6 ?- ]; T2-应该具备什么功能才能用来学英语?" A3 E& v4 @" d/ r

3 l9 N: Y6 W& M' j先来思考第一个问题:怎么开发一个App?
1 q! a  t" _% j# {$ Z4 d; X我把问题进行细分:
  q1 ?+ e, V/ |6 O1- 什么是App?
& c; z- [. M; r, g4 m2- 需要哪些知识储备?( t# v# ?* ^% v
3- 如何做?需要什么工具?5 F! P6 K. o. V7 g1 n* B0 z6 }+ w
4- 有没有简单的方法实现?; G( d. ]  e8 r1 K8 g2 y! r
经过一番搜索、学习、请教、记录和总结,这些问题渐渐有了答案。* |9 }% O$ J- e2 Z% A% d: _
  V) k# B; c, O- b. k/ E% Z
1-what:什么是App?8 J# W2 z0 ?! x# x
App是应用application的简称,我这里说的App是指手机端的App。
" b4 ^! J' k0 K根据开发模式,目前的手机App可分为3种类型:原生、H5、Hybrid。它们有各自的优劣势:* j) C+ `( T; r' A0 ]
            
类别1 t5 m  D, W$ b( g8 m% Y& @
概述
5 G, W  s9 ~0 ~8 ]6 x8 a, V
优势
2 N" s+ n) D( p8 O0 k$ x
劣势
  p; g6 l' K0 ]4 L
原生应用 (Native
. z! c- F8 K: V5 g7 N  App)6 g' P3 ^. r' P# C% I, h5 I
原生App就是利用Andriod、ios平台官方的开发语言、开发类库、工具进行开发。比如安卓的java语言,ios的Swift语言。在应用性能上和交互体验上应该是最好的.6 T0 B$ _: R' M: \9 r% D
1-可以访问手机所有功能、可实现功能最齐全;8 E/ z+ ~* T/ Q8 v1 G
2-运行速度快、性能高,绝佳的用户体验;+ ?5 `( ^& q; x6 A( }1 `
3-支持大量图形和动画。不卡,反应快;5 a% Z5 r/ w4 w6 x3 Q* l
4-比较快捷的使用设备端提供的接口,处理速度上有优势;
, u- V7 {$ ^* ~4 N) I$ r
1-开发成本高、周期长,Android和ios都需要单独的开发;
  F5 R  {( \) r% ?2-更新版本需要重新下载安装包;
9 `/ c8 Z# Y$ h3 T6 j9 L- x
H5应用 (Web App)
5 P" `- A* F$ ~4 Y2 \4 n
用普通web开发语言开发的,通过浏览器运行。$ U& u- y5 Z  V: x2 L7 L+ k' G1 E
1-使用web语言,开发门槛低、周期短;7 ]+ T8 \$ E- A1 T7 z$ F
2-支持多种浏览器,兼容性好;) a3 P: c1 J" B/ W
3-免安装,使用浏览器打开,更新无需用户参与;% c- q' m5 K0 s7 v6 F
1-对联网要求高,离线不能承载太多东西;8 b6 G1 b, Q7 }- P+ c: v
2-功能有限;" r( T; m  K0 O5 p5 K/ Z$ \! E
3-运行速度慢,页面不能承载太多东西;8 y4 y, H/ ~& j. ^/ z: j
4-图片和动画支持性不高;
* R( O' ^$ S6 j  |3 F2 \$ z" w4 X+ e5-体验感不如原生和混合App;
/ N8 j7 @* I: u  z9 ^, Z
混合版应用 (Hybrid" E: _/ v8 D* z6 A5 G( v  |4 }5 b* r
  App)
+ U/ s3 g* V( _3 c
既利用了原生APP开发技术还利用了HTML5开发技术,是原生和HTML5技术的混合应用。混合比例不限。目前市面上流行的小程序和快应用就是采用Hybrid技术。
# m, E; u; v9 p5 ~! U6 V  W" ]& ?9 d
1-运行速度比Web  App快,可调用部分设备端口;4 n6 Z( m! s2 O- z! v3 B$ M' |
2-开发周期比原生App短;$ |5 N0 L& V4 K/ S
3-可以跨平台,Android和ios不需要单独的开发;) G% ]( j8 J7 l) g
4-免安装,打开就能用,更新无需用户参与;; f; E$ V  N7 |  E7 F& ?+ b
1-功能接口受限于原生App的支持程度;0 s/ j& j( {1 z4 z. S" F* i
2-体验感优于Web App,但差于原生App;* t/ c6 S# a% n
- \2 X4 g! H, D+ V- k
        6 d! j2 X2 h" R/ [. r: o* @3 o3 ~
. P* h' s+ z% C/ M2 M% ]8 J
2-why:需要哪些知识储备?
4 I5 B6 q; S7 c1 GApp开发的流程大概分为几个阶段:需求分析-->架构设计-->后端开发-->前端开发-->测试。每个阶段都需要相应的知识。8 _+ s& w/ P3 T; G5 q( c3 F1 V

7 a% E* P6 @% T1 {$ N& ~& X5 E+ ^7 g( u
需求分析:
# q5 Y/ ^! n( f6 z7 v1 b& R3 e需求分析也称为软件需求分析,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。这是软件工程专业的相关知识。
& L  U8 Q- I( |9 w1 |, m/ D' V2 k0 `: t7 `$ q

8 I2 ?- p6 P$ [* l! v3 m, k
7 |# {2 Y% I, r# @. x架构设计:
/ z! z4 W( [7 w) x0 @- H需要架构设计是将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构设计是软件设计过程的早期阶段,它把需求分析和设计流程连接在一起。需要对开发技术(包括前端和后端)有深入的了解。3 L) @1 Q" ?4 x) @5 _* Q0 ~
$ e6 I8 Y) K1 O' V

+ V; m/ Z& v' q+ {1 o; P  {5 |: O+ i# q! ^1 K% y8 `9 o( w
后端开发:! p; |7 x' I+ l4 i* v6 g* q
后端是指服务器相关的统称,包含服务器、数据库。
, B# y" ?9 v+ l: _服务器搭建与开发,常用语言和工具:Nginx、Java、Shell、Python、PHP、node.js等;
8 C* C4 t! D5 F7 m数据库开发,常用知识:关系型数据库mySQL,非关系型数据库MongoDB;% P) |6 R% ~% L" e3 x6 Q
# X) u; h. T3 a6 d! _- \! n1 `4 h

! c/ b( Y& u# A# s& Z
: z  p. Y+ s- t; [8 {前端开发:: ]4 V8 r+ |# f
前端是手机端的开发,包括UI界面、响应逻辑、数据的请求。0 L! z* v0 H4 V2 ~4 r9 F& ^/ c7 J
前端三大基础技术:HTML5、CSS、JavaScript;
2 z: w$ f% j5 ~) n* X流行的前端框架:Angular、vue.js、React;/ N4 r+ Z- A' g) u/ q: w. V6 |+ F# ?% K
原生App开发语言:Swift(iOS平台);Java(Android平台);
. k; i" s# ?6 j$ J0 D; z4 L
+ Y; R% T# z  K9 L  C

; I* M7 A! W# q9 q: w' b+ l- v6 Y( H) m% @% X

  u; A+ q2 t( j: O测试:
: l- Q* K2 ?! R+ d( e包括功能测试、性能测试、压力测试等。
, P- k( V, n( Z( ?2 t$ C8 }+ x4 H& g6 g

5 l% u5 M; K3 [4 A% _; ^4 h5 _1 f5 I2 y# f9 r3 k) m- n
3-how:怎么做?需要用到什么工具?
  V' a: c, T- O看书、看视频教程、看开发文档、模仿实践;
5 {9 d& t+ ?) _* P! @基本上各种语言都有各自的开发工具(IDE),学到哪个就用哪个。5 @; {. Y+ V" H+ w
) ^1 R% F. u7 d  @7 ^
4-how good:有没有简单的方法实现?
  q1 Y# z8 R4 A# M$ j8 A6 I随着了解的越深入,越发现这个事情没有想象中那么简单。这是一个系统工程,涉及太多的知识,需要不同岗位的人配合,就好比开发一台设备,需要机械工程师、电气工程师、工艺工程师、采购工程师等一起合作才能完成。
& j+ t$ B& }6 }. T9 o难道一个人就真的不可能完成?我开始动摇,直到后来看到了“全栈开发”这个名词,眼前一亮,信心立马恢复。全栈开发是指一个人搞掂前端和后端。随着技术的发展,市面上有很多现成的框架,借助这些框架来实现一个小项目这个可能还是有的。2 r/ X+ S" j- p( |. `. x

* K" t/ r# u8 Q8 t+ R& J% }那么接下来就是确定开发的模式:
* u9 f/ V$ w( O1 ~8 d8 X首先排除开发原生应用,难度实在太大,不符合我的情况。只能在H5和Hybrid之间选择,H5是门槛最低的,但我预计后期会用到手机摄像头和话筒这些硬件,这些是H5的劣势。那么目前看来Hybrid是最合适的选择,而且此时微信小程序开始火起来,各种开发教程和案例都丰富起来。于是,我最终确定做微信小程序。后来,微信小程序推出了云开发,妈呀,我感动得快要哭了,腾讯真的太照顾我了,这样又帮我解决了后端开发的问题。2 n" Z4 t8 g/ ?6 `2 k' F
关于开发的问题,确定开发模式后,剩下的就是恶补微信小程序的相关知识。
$ H+ b% m3 J# |$ M# |( F5 T6 z5 b2 }' }' h* ?2 z
第二个问题是APP应该具备什么功能才能用来学英语?后面继续记录。。。。
* ^- x2 o$ J/ k1 G) N" K. o
6 R% @$ B  J$ q" O# V. ~& q

评分

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

查看全部评分

回复

使用道具 举报

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

点评

感谢支持!  发表于 2021-1-6 23:15
发表于 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
 楼主| 发表于 2021-1-6 11:36:44 | 显示全部楼层
确定开发微信小程序后,那后面所有的工作就以这个展开。
: ], u* R/ j( _! B* j( H' C3 T0 {' x
我把这事分成三个步骤:* u% {% v6 n3 r' e: N, d
1-先学习前端三大基础知识:HTML5、CSS、JavaScript,了解vue.js;
4 p0 a" Y- t3 U' Q2-学习小程序的开发教材及案例:官方的开发文档和教程、优秀大咖的课程;' V$ ^% b, E) }% N. W/ i. u
3-以实际需求为驱动,开始写程序,边写边学;6 z( p/ e/ x5 f% O4 H# N. e' R( Y

* G* Y" x$ B1 H2 Q5 G; _6 T& o/ @' a
学习过程中找了很多学习资料,经过学习和筛选,我认为最有用的有以下几个,如果各位社友感兴趣可以去了解:
& P4 I0 s" w- a4 M1-菜鸟教程:3 t. b+ H8 }) }# J7 ]8 i$ s5 P) {
此网站有详细的教程资料,包括前端三大技术、服务器、数据库等,非常详细。- {/ Y4 @% S4 y8 I

4 z- p2 v6 W6 W- c6 |, p, P0 R
$ k* [$ [3 {0 x6 k) U$ w9 H' ~; h9 M  ?2-官方文档:
" ^: R- ~/ Z6 K! g! S小程序的官方开发文档,可以先粗略阅读一遍,在写代码时再查找具体的组件或者API。
3 x1 A$ R. j/ Z+ R5 ]" ?* h$ B/ g6 B) A# b8 o. Y9 I- W

7 S  D8 u0 Q2 i3 w3 A  K3-官方视频教程:
' \% a# ^$ ~; N+ _' H; `6 a分类三个阶段,包括小程序开发、小程序云开发、小程序项目,可以反复观看。& A5 {. R) v$ Q$ b4 q$ w# _! A! l+ d

  b- t3 }1 K- y* S% ~
4 a4 E4 i2 z4 S/ E  a, i4-CSDN:
4 G6 {& w+ t2 w/ U一个程序员的社区,只要遇到疑问,90%可以在这个地方找到答案。+ G3 H6 g0 ?; _$ f$ ]" i( _3 F
8 ~- E1 L+ f1 k: y- V7 f

" `7 F2 v0 f, j: f7 X5-B站:
$ l7 c* I) [+ D" |一个包罗万有的社区,有大量的视频教程,包括HTML5、CSS、JavaScript、小程序开发。
9 G, ~* M, f" L: n
5 }6 C' n5 P/ @3 v2 f备注:由于我没有权限发表包含URL地址的信息,所以无法贴上链接。以上的资料都可以百度找到。如果实在找不到,有兴趣的可以私信我。. j% n) l0 [; e( [
学习过程中,也走过一些弯路:
6 ^9 F# ?8 M8 I  d1- APICloud,一个低代码开发平台,需要购买他的资源,私房钱不多,放弃;8 p/ n0 u$ p' B: r0 y; m* W- E) L' e
2- DCloud,一个可以一次开发,多端覆盖的开发框架,就自己一个人使用,就一个平台,不需要多端覆盖,放弃;
1 H+ l$ N1 a: r- h
0 v) q+ O; u8 C8 O$ X" `8 H' m: s. `

点评

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
$ N* h$ }" \& g8 |楼主牛批,期待更新
! {1 l: a" U/ t; k& G7 [7 K
谢谢!不牛批,本人普通技术一枚,就是兴趣广一点,有一点点动手能力。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-27 11:46 , Processed in 0.092808 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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