机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 39875|回复: 85

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

[复制链接]
发表于 2021-1-6 07:32:36 | 显示全部楼层 |阅读模式
开个贴子,记录这件有意思的事情!& r8 t# h" X1 f" X. Y; i7 {8 z5 @
( z. m7 t3 V9 D' ?
背景:
( H" H5 n1 e# l  T% S1 F冲突一:想学习,却找不到好工具
* h0 v3 n' k, x今年春节遇上了疫情,我宅在家里,处于“失业”状态,作为有志青年,不想每天刷剧、刷抖音,想着装一下B,提高一下英语水平。. N% ?" F4 T5 U' S4 u  g

, X% ~5 Y% o9 C2 Z" a- w* q. b于是,在朋友圈疯狂的广告洗脑下,我下载了几个当时很火的App,很认真地投入学习。2 n# J! Z4 H: @2 _  n
然并卵,使用了一段时间之后,发现效果不太理想:首先,这些App记单词过程太过于复杂,很多都提供了多种助记的方法,除了常规的词根词缀、联想记忆以外,还有图片记忆、电影情节记忆、思维导图记忆等,这样的好处是当时很容易记住单词,坏处就是忘得也很容易,大量的助记材料无形中增加了记忆的工作量,增加了记忆的负担,从而偏离了记单词的初衷;其次,练听力的功能普遍都是提供新概念英语或者VOA、BBC、TED等听力材料,对于基础不好的我,感觉在听天书;* O, K. C7 B8 f) m4 L
难道就没有一款适合我这种菜鸟的App吗?  v( R0 w: w( M: ~
一个大胆的想法出现在我脑海里:自己开发一个App。
% o$ q) N( H1 o2 ?& ?" v$ L) B4 r
$ W6 Q' _# M. L* M# k冲突二:计划自己开发,却不是专业人士) R% m, z% I' X
为什么说这个想法大胆呢?因为我虽然是一名搞技术的工程师,但仅限于机械行业的。我所接受的完整编程教育仅是在大学期间的《C语言程序设计》。所以对事情一无所知,严重缺乏相关知识储备,除了大胆,我也不知道怎么来形容这个想法了。- H' |) s3 L- N: N; X8 Z2 V
但有句古话叫无知者无畏,而且作为理工男,我始终相信任何问题都有办法解决,只要你能够把问题描述得足够清楚。0 l9 T6 s4 Y  e$ N' C
因此这个想法一出现,我立马觉得应该去试试,结果怎样不重要,起码先行动起来。/ {! X! J* Y6 l/ C( a( t/ m
9 z/ o  o! k' ^
行动:
7 B. b3 p5 y! N% W, Z先把问题描述清楚,我的目标是开发一个学英语的App,这款App应该功能简单,不能太过复杂。把它分解成两个问题:
- a0 E0 Q6 U7 P8 `, L. _1-怎样开发一个App?2 h1 X" E: ~' Z% ?# O
2-应该具备什么功能才能用来学英语?
. p( l1 D- ]+ g  ^5 U% H  h9 }' ?
先来思考第一个问题:怎么开发一个App?
: N* C' I/ U6 y. _我把问题进行细分:! @: `; i& L- B2 p: O; x% T6 o! F
1- 什么是App? 9 Z) s* `  o4 v) l9 t  ]" p
2- 需要哪些知识储备?# B' t4 B, m+ ]/ E
3- 如何做?需要什么工具?
, a3 N) t* a. U1 V; N9 u4- 有没有简单的方法实现?% Y- j4 v+ R% p4 M2 R5 ]  ~
经过一番搜索、学习、请教、记录和总结,这些问题渐渐有了答案。
; q. ^4 {( v+ m) w; ^% f  N
. L$ [1 [! H1 e( ^. k# G5 p+ r* p1-what:什么是App?! @0 ?3 [% g, P; {7 ~* G
App是应用application的简称,我这里说的App是指手机端的App。
8 o% l4 U2 _  ~* N根据开发模式,目前的手机App可分为3种类型:原生、H5、Hybrid。它们有各自的优劣势:
% x5 w5 v; n- W/ r" M" p            
类别
" u7 S% j! c: |' w0 K  x
概述7 i# n$ V0 h- ~8 c9 [
优势) K. p) |0 h) E4 Z6 k" i0 ^+ V7 |
劣势& r: H2 \+ |3 @0 R" c; k" j
原生应用 (Native1 h3 V$ ^% j1 V, h/ C2 x2 u
  App)0 O8 ^7 W' p6 I4 t
原生App就是利用Andriod、ios平台官方的开发语言、开发类库、工具进行开发。比如安卓的java语言,ios的Swift语言。在应用性能上和交互体验上应该是最好的.* V! z' d0 p1 w: a0 y% D+ P
1-可以访问手机所有功能、可实现功能最齐全;
' S4 [: I  x0 v( X2-运行速度快、性能高,绝佳的用户体验;
& C8 p; o# u# ~; }  |( a3-支持大量图形和动画。不卡,反应快;7 h! P. J  v) L0 ?0 W
4-比较快捷的使用设备端提供的接口,处理速度上有优势;) ]4 M2 m. p+ O. Y. \* Y
1-开发成本高、周期长,Android和ios都需要单独的开发;
1 s2 ?" q8 i$ I% ~/ |2-更新版本需要重新下载安装包;
3 L7 N3 ^8 r% H' H, s& g
H5应用 (Web App)6 V( O( i6 g5 v1 y9 J
用普通web开发语言开发的,通过浏览器运行。
/ w0 v) {* `# v& a; A8 [+ n
1-使用web语言,开发门槛低、周期短;4 [0 j, F9 t! ?7 Q4 W) r
2-支持多种浏览器,兼容性好;
) S# Z2 J! P; T6 m* L3-免安装,使用浏览器打开,更新无需用户参与;
: J3 H: K4 a$ H. H7 N1 M2 I
1-对联网要求高,离线不能承载太多东西;$ D* W6 S9 q' U$ k8 R) G, y
2-功能有限;; y! u; U6 Y3 ~9 g- {- k
3-运行速度慢,页面不能承载太多东西;
2 _9 R3 ?+ N. R$ n. A; T4-图片和动画支持性不高;# D' @1 a" G$ T* J9 [. r
5-体验感不如原生和混合App;" A1 N' f. u" x. R; c# k# {, z0 O
混合版应用 (Hybrid
% c( w. }* S: `  App)
/ g) Q5 R2 g$ [9 o- f7 v# [, ~& p! ~
既利用了原生APP开发技术还利用了HTML5开发技术,是原生和HTML5技术的混合应用。混合比例不限。目前市面上流行的小程序和快应用就是采用Hybrid技术。
, `$ d  ~' H4 J
1-运行速度比Web  App快,可调用部分设备端口;$ M6 _! \2 k$ j/ g; F9 X' }$ z0 ~
2-开发周期比原生App短;
8 {( M( }  ?% s* E$ p3-可以跨平台,Android和ios不需要单独的开发;
5 b5 H0 O; Y8 Q! m# A# Q% Q4-免安装,打开就能用,更新无需用户参与;
1 _) v/ g# w" b* J/ _
1-功能接口受限于原生App的支持程度;
5 X  \% T) ~& y. l% _- W% O  i2-体验感优于Web App,但差于原生App;
2 d/ ~0 m6 `9 b4 v. Y

/ S: W9 O. J: H& w! @          I$ y( l3 r3 M3 p8 f
4 M, E3 s5 t/ C, ^
2-why:需要哪些知识储备?* J4 }0 R& |2 D0 x6 W5 y
App开发的流程大概分为几个阶段:需求分析-->架构设计-->后端开发-->前端开发-->测试。每个阶段都需要相应的知识。0 }6 J& d% f, \+ P! b9 F: s0 N5 ~

  a* _# H. [' q7 U3 m. g
2 o9 G$ }' q( C* V) S需求分析:
$ Q  ^4 S# P" I( n需求分析也称为软件需求分析,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。这是软件工程专业的相关知识。* h* C' U) }, A" i" A' b0 \

) O# Q2 T( x" q8 b2 w& d9 o
. D* D/ L$ G7 @' K0 x6 s# _

/ }5 X; t: u1 {) a0 f* n1 k架构设计:3 p6 A+ ~, f4 z# z9 U
需要架构设计是将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构设计是软件设计过程的早期阶段,它把需求分析和设计流程连接在一起。需要对开发技术(包括前端和后端)有深入的了解。. f3 X4 I' M, g; F# [

8 d9 T- R8 z( j6 w5 q! S
2 F- p- O5 }$ h' Z% n
# Q2 n0 T, |" P7 E: H. S
后端开发:
7 [9 n) h1 h! a& D# T3 D后端是指服务器相关的统称,包含服务器、数据库。( @5 J/ N# n0 C& X7 ]
服务器搭建与开发,常用语言和工具:Nginx、Java、Shell、Python、PHP、node.js等;$ u3 \' d2 i- q# G" w4 Q
数据库开发,常用知识:关系型数据库mySQL,非关系型数据库MongoDB;
0 {2 G# f. a& \6 `8 o% ~0 w) b2 v: [) M$ F
+ H5 {# c3 l+ a2 r) E

6 A& V& h, `2 E; z6 G2 e前端开发:% p/ O: I  U% \0 ^! R6 i. h
前端是手机端的开发,包括UI界面、响应逻辑、数据的请求。
* P4 L$ ]5 k4 z8 J% \前端三大基础技术:HTML5、CSS、JavaScript;4 V+ u! o2 }% o# p2 j
流行的前端框架:Angular、vue.js、React;4 _) |2 f5 x( I$ }) T6 A& d' h
原生App开发语言:Swift(iOS平台);Java(Android平台);
9 u6 E2 \" w, p( F( y$ Y9 ^; b6 T7 j2 x

& b6 P8 [2 `# U: Q$ h  T' e; z  N7 @  W7 }5 z3 g2 R6 t: ^, ^
$ F, u. g4 v& h$ k( ^& |0 U: r( F
测试:
( H! I) e/ O9 W' z- j( ^) N包括功能测试、性能测试、压力测试等。
/ T' i1 P  Q9 F  l
7 k4 C' a0 L, Q, E( k
; f! d2 t& `% {3 C: [

) W8 ]& W9 y2 |& Y2 |' k) K) K3-how:怎么做?需要用到什么工具?+ H. g# c' o, P/ D( U
看书、看视频教程、看开发文档、模仿实践;
+ C$ g  p' ?2 y" A基本上各种语言都有各自的开发工具(IDE),学到哪个就用哪个。
  ?) ?$ ?4 F: L1 U/ F' n4 P! {% X8 R" A/ n
4-how good:有没有简单的方法实现?, Y3 r2 h5 o7 [
随着了解的越深入,越发现这个事情没有想象中那么简单。这是一个系统工程,涉及太多的知识,需要不同岗位的人配合,就好比开发一台设备,需要机械工程师、电气工程师、工艺工程师、采购工程师等一起合作才能完成。1 s* Y% p3 s# G: o5 F! [- d7 p
难道一个人就真的不可能完成?我开始动摇,直到后来看到了“全栈开发”这个名词,眼前一亮,信心立马恢复。全栈开发是指一个人搞掂前端和后端。随着技术的发展,市面上有很多现成的框架,借助这些框架来实现一个小项目这个可能还是有的。/ L# _1 ~5 Y" M- z: s. V

' A: T! |" V9 g- H2 u那么接下来就是确定开发的模式:& d, ?! w- t$ m- {8 }! f! d
首先排除开发原生应用,难度实在太大,不符合我的情况。只能在H5和Hybrid之间选择,H5是门槛最低的,但我预计后期会用到手机摄像头和话筒这些硬件,这些是H5的劣势。那么目前看来Hybrid是最合适的选择,而且此时微信小程序开始火起来,各种开发教程和案例都丰富起来。于是,我最终确定做微信小程序。后来,微信小程序推出了云开发,妈呀,我感动得快要哭了,腾讯真的太照顾我了,这样又帮我解决了后端开发的问题。; d$ A; v  ^* d  x9 ]
关于开发的问题,确定开发模式后,剩下的就是恶补微信小程序的相关知识。
& q$ z! s$ _2 [4 ]# L
+ p& B+ i! E* t3 K( U0 j第二个问题是APP应该具备什么功能才能用来学英语?后面继续记录。。。。
* _- G) e  A8 g) h$ b6 V. ]! t" s( ^8 F7 U% H3 m

评分

参与人数 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 | 显示全部楼层
确定开发微信小程序后,那后面所有的工作就以这个展开。  S4 b2 ~3 j* Y; @
/ {" p0 H! Z# c0 V& n% C
我把这事分成三个步骤:+ l& i0 O$ ~6 l& e" `& ~
1-先学习前端三大基础知识:HTML5、CSS、JavaScript,了解vue.js;% I- k% q1 K% b; P& q+ g
2-学习小程序的开发教材及案例:官方的开发文档和教程、优秀大咖的课程;
0 d- W/ V. `1 [/ r5 |) y( m2 v3-以实际需求为驱动,开始写程序,边写边学;
' X- V4 E9 N+ b+ V3 V. H) k+ O0 O% y$ C. v& L3 @( I  S: d
! ^. @4 ~, i8 o
学习过程中找了很多学习资料,经过学习和筛选,我认为最有用的有以下几个,如果各位社友感兴趣可以去了解:
7 s3 M& @3 L4 o0 X* E; H1-菜鸟教程:7 E* g5 S8 L+ g& `- V
此网站有详细的教程资料,包括前端三大技术、服务器、数据库等,非常详细。3 x: ]5 g, q3 M$ j( r! w+ l: j7 t) I1 e8 {

" E8 b: E% G: r4 ^  S
6 e3 X' b' g- z# e) t" p3 O9 o* p2 ]2-官方文档:9 n- e$ k: ^+ j; N8 |
小程序的官方开发文档,可以先粗略阅读一遍,在写代码时再查找具体的组件或者API。
2 m3 i* W; I- o  c( y  a% ]# N( R# ~) ~0 K& O, X' @9 |! @0 V, Q
% v8 z5 Q2 F5 n9 \
3-官方视频教程:
3 c; e1 b% D- }2 f2 u/ }分类三个阶段,包括小程序开发、小程序云开发、小程序项目,可以反复观看。/ E( p  y% u4 K$ k) ?5 z

8 H4 F, W3 Z- J1 h7 t
- ]+ Z' z* z% h0 R' [8 P, o4-CSDN:
; t. U4 O6 ?9 ^. I! o/ K% z& p一个程序员的社区,只要遇到疑问,90%可以在这个地方找到答案。
( R: |, U( c1 V6 R- P  u2 ^& G- r* f8 N3 ]9 D9 G
& I) a) k5 t) N, _# V& D
5-B站:3 L- [* w  j7 \" {3 z; L
一个包罗万有的社区,有大量的视频教程,包括HTML5、CSS、JavaScript、小程序开发。$ p( i1 y) n! V0 V: E, A' m) I- v
: E1 U2 T' B; \+ i( ~! a7 a
备注:由于我没有权限发表包含URL地址的信息,所以无法贴上链接。以上的资料都可以百度找到。如果实在找不到,有兴趣的可以私信我。
) ^5 s& }( A; a, ]6 N! w学习过程中,也走过一些弯路:+ T5 d6 J$ o, ^
1- APICloud,一个低代码开发平台,需要购买他的资源,私房钱不多,放弃;
( ?9 a! N4 M* ^0 C: `: y2- DCloud,一个可以一次开发,多端覆盖的开发框架,就自己一个人使用,就一个平台,不需要多端覆盖,放弃;: j( Y; I, {# c; N1 z  Y
7 S% y/ v* T) j  d: f3 p
# t/ _7 q8 M- K) \5 u: ?+ ]1 R

点评

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:053 J  B! u0 P0 j& n- G% W
楼主牛批,期待更新
1 v( _4 D! H( t4 S0 }8 ^
谢谢!不牛批,本人普通技术一枚,就是兴趣广一点,有一点点动手能力。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 07:10 , Processed in 0.072103 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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