找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 43852|回复: 85

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

[复制链接]
发表于 2021-1-6 07:32:36 | 显示全部楼层 |阅读模式
开个贴子,记录这件有意思的事情!
  c- F2 Z# {5 J. W2 a0 X1 ?" V* |9 O6 K/ A  J# T( [6 z
背景:* n6 [6 ^2 u2 k5 i# Y
冲突一:想学习,却找不到好工具0 j$ n- p5 q* G  L2 m: W- s7 T% ~
今年春节遇上了疫情,我宅在家里,处于“失业”状态,作为有志青年,不想每天刷剧、刷抖音,想着装一下B,提高一下英语水平。" x. x0 |% v# ?7 c1 m. @! f

1 m2 d( F, d& S于是,在朋友圈疯狂的广告洗脑下,我下载了几个当时很火的App,很认真地投入学习。
) o# o" ~9 o3 E( u6 b然并卵,使用了一段时间之后,发现效果不太理想:首先,这些App记单词过程太过于复杂,很多都提供了多种助记的方法,除了常规的词根词缀、联想记忆以外,还有图片记忆、电影情节记忆、思维导图记忆等,这样的好处是当时很容易记住单词,坏处就是忘得也很容易,大量的助记材料无形中增加了记忆的工作量,增加了记忆的负担,从而偏离了记单词的初衷;其次,练听力的功能普遍都是提供新概念英语或者VOA、BBC、TED等听力材料,对于基础不好的我,感觉在听天书;( o* x3 W5 k+ {1 v6 ~% J! x
难道就没有一款适合我这种菜鸟的App吗?7 e, g) m" n( @# W: x' z- B
一个大胆的想法出现在我脑海里:自己开发一个App。- q* f6 [$ n6 e/ k3 K% M7 ~5 l

6 }( n* Q/ j( R9 L# W# K: R) \冲突二:计划自己开发,却不是专业人士
' y# K! v3 T$ K3 G5 g: x2 d为什么说这个想法大胆呢?因为我虽然是一名搞技术的工程师,但仅限于机械行业的。我所接受的完整编程教育仅是在大学期间的《C语言程序设计》。所以对事情一无所知,严重缺乏相关知识储备,除了大胆,我也不知道怎么来形容这个想法了。2 m5 }+ }! Z& x4 G) n: _1 a5 f
但有句古话叫无知者无畏,而且作为理工男,我始终相信任何问题都有办法解决,只要你能够把问题描述得足够清楚。
2 v0 Q. b) ]/ w; l) d因此这个想法一出现,我立马觉得应该去试试,结果怎样不重要,起码先行动起来。
9 ^1 N. u. ~* N8 Q; [# K7 l5 V" t/ v" {# F
行动:
. h( }( e2 c* z, u, ?& m( H先把问题描述清楚,我的目标是开发一个学英语的App,这款App应该功能简单,不能太过复杂。把它分解成两个问题:+ i( V- V/ b3 x$ X7 o: c2 U3 J5 P
1-怎样开发一个App?( Z2 c! T5 f% m
2-应该具备什么功能才能用来学英语?
, Y' |' T  k' r  u; K1 w6 n; Q' Q  w% }
先来思考第一个问题:怎么开发一个App?
8 I$ ?) E" U" }0 r' Z我把问题进行细分:. I: V+ u# H1 C! |
1- 什么是App? ! {7 i3 i1 N- n0 O. O  D
2- 需要哪些知识储备?
7 L% G2 k, }/ k. W* t" m7 x3- 如何做?需要什么工具?' ?$ {% g1 J1 l0 c3 u# }
4- 有没有简单的方法实现?
- G# r* P+ x% d7 D' Q: |经过一番搜索、学习、请教、记录和总结,这些问题渐渐有了答案。) F- T0 m- j8 A3 c% S- a/ d/ j

6 v7 v0 m2 n9 m6 b& |1-what:什么是App?& n% F: d& w. Y- E
App是应用application的简称,我这里说的App是指手机端的App。
4 X) b0 y/ G# |* g9 |: j3 o根据开发模式,目前的手机App可分为3种类型:原生、H5、Hybrid。它们有各自的优劣势:1 x6 \  }2 U* D- h5 j* ^
            
类别$ \" C& P9 ?/ a  v0 G% s
概述
  Z' \* v$ q. x, w0 Z
优势
, A7 r1 M( q9 L& h3 d  y
劣势- d& ?9 \, r0 |6 q# L
原生应用 (Native
) B9 d3 O8 X' V! y3 I  App)* O$ _  B4 R# o1 E( k
原生App就是利用Andriod、ios平台官方的开发语言、开发类库、工具进行开发。比如安卓的java语言,ios的Swift语言。在应用性能上和交互体验上应该是最好的.
* g5 v3 C7 P" D# W7 T4 ~
1-可以访问手机所有功能、可实现功能最齐全;" j4 \3 `5 i" F1 `
2-运行速度快、性能高,绝佳的用户体验;5 u1 V! R5 p5 E- v/ F. t6 D% ~* [
3-支持大量图形和动画。不卡,反应快;
' `' `4 ~- O! b2 N# Z. E: E4-比较快捷的使用设备端提供的接口,处理速度上有优势;) ?( I  Q$ `, T* [; ^
1-开发成本高、周期长,Android和ios都需要单独的开发;% K5 S; Q# l  y
2-更新版本需要重新下载安装包;& t  O& k! Q0 l% j0 d. k  y* g+ a  \
H5应用 (Web App)
& y3 i: R7 \: z) U( E
用普通web开发语言开发的,通过浏览器运行。* J9 |9 U, B% j# |5 N
1-使用web语言,开发门槛低、周期短;
) b, l6 H9 a) z+ w! ~4 h- x, X2-支持多种浏览器,兼容性好;
3 J' z6 ~8 R; V4 `: X+ b5 _3-免安装,使用浏览器打开,更新无需用户参与;
& O6 y' w. W7 W( \4 b) j
1-对联网要求高,离线不能承载太多东西;
$ ~' V- V! n% M8 H2-功能有限;; _4 d2 p$ ~, w3 Y! u- S$ u
3-运行速度慢,页面不能承载太多东西;1 e' ^" B7 I* w( y( ]+ Z. _  Y) O
4-图片和动画支持性不高;
+ x' P, _5 R1 h: C4 x2 e0 y2 T5-体验感不如原生和混合App;
7 j8 \; X4 F  I- v5 f5 k% I
混合版应用 (Hybrid
/ F4 F. e& ^& P. v8 ~3 [  App)1 v4 F7 ?" b9 Z5 O3 ]( j
既利用了原生APP开发技术还利用了HTML5开发技术,是原生和HTML5技术的混合应用。混合比例不限。目前市面上流行的小程序和快应用就是采用Hybrid技术。
) N2 P# F5 {# R
1-运行速度比Web  App快,可调用部分设备端口;
3 e! \* A) k; B% g- e0 N2-开发周期比原生App短;
& @# H: C! J! k# Z& p3-可以跨平台,Android和ios不需要单独的开发;
, y: b% E2 g9 Y8 z5 h4-免安装,打开就能用,更新无需用户参与;6 c+ j3 J1 c0 m% y
1-功能接口受限于原生App的支持程度;$ U$ L; {2 I1 [* F2 y0 j
2-体验感优于Web App,但差于原生App;% f" n0 e. r$ }0 B: l

2 x. Z. t: b( G8 S$ U: {7 T& j+ B        
5 H/ E# \$ \' E! j$ k% c$ O6 D2 f6 |! s8 g& p1 v- P
2-why:需要哪些知识储备?9 h2 L! M0 Z6 _7 T0 r5 v" a
App开发的流程大概分为几个阶段:需求分析-->架构设计-->后端开发-->前端开发-->测试。每个阶段都需要相应的知识。
5 d% N: C9 B( N9 H+ Z# T6 R& W' J9 [. y! D" B& r' _
1 q& Y: F. f- O! c0 L( \0 `0 N4 _
需求分析:2 e) h+ O  A+ ~% U7 i
需求分析也称为软件需求分析,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。这是软件工程专业的相关知识。
& m0 Y( m: Z* q" Z9 D
8 @" ]& Z8 k7 f7 O- q6 i4 p

) a9 `$ X" P: d! s! |. P2 m$ u& ^  f# d) e: O+ j
架构设计:0 d- u  \  u/ @- O
需要架构设计是将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构设计是软件设计过程的早期阶段,它把需求分析和设计流程连接在一起。需要对开发技术(包括前端和后端)有深入的了解。2 l# o' k) x- h8 c2 f

5 d" V# g1 x0 B

( v9 H2 o3 W" Z# ^7 q
/ b2 x1 K" Q$ w) ^: D4 d- @后端开发:
5 n+ {; k( H6 f8 A. q. w* b3 q后端是指服务器相关的统称,包含服务器、数据库。
6 E3 u0 I! }) N1 {4 A9 N服务器搭建与开发,常用语言和工具:Nginx、Java、Shell、Python、PHP、node.js等;
: n* Z6 ~1 \2 `* e% g/ e1 J* t" e数据库开发,常用知识:关系型数据库mySQL,非关系型数据库MongoDB;3 C5 ~  w9 ~# [+ y  b! J

. B" T& u1 J" C6 i8 X, p

8 @  B# \7 Y1 v. ^! X# S7 p' b1 a3 r% e
前端开发:
8 M# U. M9 \/ m  L( |+ l前端是手机端的开发,包括UI界面、响应逻辑、数据的请求。" O. S! i4 H% l
前端三大基础技术:HTML5、CSS、JavaScript;
! f3 X/ A+ e# g8 Y流行的前端框架:Angular、vue.js、React;
) X# L# V( A, e* p0 [% ^9 Z原生App开发语言:Swift(iOS平台);Java(Android平台);
& {4 [1 O5 E# F1 w
/ b4 ]1 o( G4 V5 D' V8 \
: Y5 B7 W1 _2 \# G4 {* @
  z+ H$ p/ I/ F" W
* d3 v7 n# I, l% D; k4 q
测试:. H5 O) O, y- f: [" S( l0 [! a
包括功能测试、性能测试、压力测试等。( r- W# f1 h* X5 ~
; O, ~1 Q4 }! p$ W! u2 |7 S' ]
" J1 j! |3 m0 t( v3 A3 e

% N( n+ w. j: [6 }( p( b6 G3-how:怎么做?需要用到什么工具?
9 r8 z+ I; I  T1 f$ {  W看书、看视频教程、看开发文档、模仿实践;" ~+ O2 ?2 ]) }9 r1 i7 [" s2 p; q
基本上各种语言都有各自的开发工具(IDE),学到哪个就用哪个。  }4 {: g8 q" ]& b

; n1 X9 ]4 C  L. F5 \, [/ }5 [4-how good:有没有简单的方法实现?+ L' c: p- F+ x
随着了解的越深入,越发现这个事情没有想象中那么简单。这是一个系统工程,涉及太多的知识,需要不同岗位的人配合,就好比开发一台设备,需要机械工程师、电气工程师、工艺工程师、采购工程师等一起合作才能完成。; B! r% L$ |7 Z1 {
难道一个人就真的不可能完成?我开始动摇,直到后来看到了“全栈开发”这个名词,眼前一亮,信心立马恢复。全栈开发是指一个人搞掂前端和后端。随着技术的发展,市面上有很多现成的框架,借助这些框架来实现一个小项目这个可能还是有的。6 j  m" O. ?/ O7 D; ^2 ]3 W
6 |7 R+ Y6 N4 q  c" s2 @( |
那么接下来就是确定开发的模式:2 U: |" A! s+ _( Z' g/ q
首先排除开发原生应用,难度实在太大,不符合我的情况。只能在H5和Hybrid之间选择,H5是门槛最低的,但我预计后期会用到手机摄像头和话筒这些硬件,这些是H5的劣势。那么目前看来Hybrid是最合适的选择,而且此时微信小程序开始火起来,各种开发教程和案例都丰富起来。于是,我最终确定做微信小程序。后来,微信小程序推出了云开发,妈呀,我感动得快要哭了,腾讯真的太照顾我了,这样又帮我解决了后端开发的问题。
& }4 p: M% p' V; @% E  k. o关于开发的问题,确定开发模式后,剩下的就是恶补微信小程序的相关知识。
8 U( x: M+ W- N2 z# @9 h
" `! q" ]- q3 ]) G4 g) z9 }# G第二个问题是APP应该具备什么功能才能用来学英语?后面继续记录。。。。
; I# B! J; T8 d4 X2 A! w
: Q3 }! i9 Z1 Y3 }

评分

参与人数 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 | 显示全部楼层
确定开发微信小程序后,那后面所有的工作就以这个展开。  \3 p" ^, e) V# D5 M

! |. ^4 W( ~" i我把这事分成三个步骤:% W$ t4 X3 P, H" H( F: f
1-先学习前端三大基础知识:HTML5、CSS、JavaScript,了解vue.js;
# u/ q% J% C1 `( O  ]5 p9 F/ A2-学习小程序的开发教材及案例:官方的开发文档和教程、优秀大咖的课程;
0 n4 D; ^/ ^# G. M5 g3-以实际需求为驱动,开始写程序,边写边学;
. ^" f0 a% X3 |3 [4 A5 C& \3 A; E# m4 o- F  H7 k: y

9 H/ B- T" \2 y$ X! K学习过程中找了很多学习资料,经过学习和筛选,我认为最有用的有以下几个,如果各位社友感兴趣可以去了解:
$ {2 C% j. [! R) t, V) F1-菜鸟教程:8 |" I( V( b# h  a
此网站有详细的教程资料,包括前端三大技术、服务器、数据库等,非常详细。$ x: _' q" |: }! z: w" g

1 K3 @0 \% t- a; M/ t! A% l+ l/ Z+ q9 P5 ^
2-官方文档:
1 M& y) ~; ^. x1 ^小程序的官方开发文档,可以先粗略阅读一遍,在写代码时再查找具体的组件或者API。7 k0 W0 Y# _- K1 e
- _; O4 f8 M! q; X) S- l

1 Y: F% G8 T- D$ [7 S7 m% V9 o3-官方视频教程:0 H8 c) X  h( R6 t; S6 L# }. Q
分类三个阶段,包括小程序开发、小程序云开发、小程序项目,可以反复观看。+ n: k7 f7 k8 v: e. t3 ?9 W
: d- e: s5 p. \8 _( N% C
; {# X% c5 v. a, c
4-CSDN:/ I3 q3 W! u* U% w5 v
一个程序员的社区,只要遇到疑问,90%可以在这个地方找到答案。
" G4 T9 w' D& b/ n3 B+ C$ D" Q: u$ M; m- b+ v( X" c4 C6 A

* \5 |4 z' p( }: Q9 ^5-B站:
0 B0 [* p0 }" L. p1 N8 i一个包罗万有的社区,有大量的视频教程,包括HTML5、CSS、JavaScript、小程序开发。
0 X5 e2 E% `0 T5 T9 i
# ]2 g  `8 t8 m- V! d) P备注:由于我没有权限发表包含URL地址的信息,所以无法贴上链接。以上的资料都可以百度找到。如果实在找不到,有兴趣的可以私信我。
( Q7 a* z9 [3 I学习过程中,也走过一些弯路:
( v' W. `8 y" R1 h, o; U1- APICloud,一个低代码开发平台,需要购买他的资源,私房钱不多,放弃;/ L( K0 @5 ]3 R9 M$ W
2- DCloud,一个可以一次开发,多端覆盖的开发框架,就自己一个人使用,就一个平台,不需要多端覆盖,放弃;
$ U) q. e8 h" B
* ?- [1 @' l1 x9 k- Z- `. _# u4 |

点评

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
6 F  C/ M$ D( |楼主牛批,期待更新
+ {/ y& L+ f, B& D4 B
谢谢!不牛批,本人普通技术一枚,就是兴趣广一点,有一点点动手能力。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-22 08:44 , Processed in 0.121145 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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