江苏大学《移动互联 开发》汇 讲义
-
- 大纲
-
- 原生开发
- Web 技术栈开发移动端(基于浏览器)
- Web 技术栈开发移动端应用
- ReactNative 开发移动端
- Flutter 开发跨平台端
-
- 开发工具
- 介绍
- 开发案例
-
- 租房项目
- 博客项目
- 特别介绍:SwiftUI
-
- 消防项目
- ZYSwiftUIFrame
- 其他:GoMobile、Qt、JavaFX
- 编码建议
这是我在研究生期间,上的江苏大学的《移动互联 开发》课程做汇 时的讲义。
每次做汇 时,总是容易控制不住时间,不小心讲太多,哇哈哈
本科期间的汇 讲义:我的 络安全第三次实验汇
大纲
Web 技术栈开发移动端 页(基于浏览器访问)—> 旅游项目双端
Web 技术栈开发移动端应用软件(原生应用,需要安装才能使用)—> Hello uni-app
(以上两个主要是基于 Vue,然后简单提一下 ReactNative)
Flutter,重点,两个项目:
- 租房项目 – 手写一个登录界面(开发演示,开发工具、开发模式等)
- 博客项目 – 完整的实战项目(内容比较高级,不一定会讲)
SwiftUI,我的开源业务框架,简单提一下 —> 消防项目
…
原生开发
Android 原生:Java 或 Kotlin,开发的应用只能跑在 安卓平台
iOS 原生:OC 或 Swift,开发的应用只能跑在 iOS 平台
它最大的缺点:一套系统两次开发,浪费人力与财力 —> 消防项目
它最大的优点:性能很高(相比跨端),原生能力没有任何限制
上的很多资料对于这方面的总结也比较矛盾,无需硬要分个类,大致理解其概念即可
以下很多内容是根据自己的理解 + 开发经验总结出来的
Web 技术栈开发移动端(基于浏览器)
先展示 旅游的 Web 端,然后展示 旅游的 移动端。技术栈:Vue.js
(两者的迁移成本大概在 2 个小时以内)
这种项目需要借助浏览器来访问,好处是一套 页编写完以后,只需要改改样式即可。
(甚至可以在同一个项目中利用一些方法直接进行适配)
缺点也很明显,对一些移动开发的原生能力支持有限:
注意,是支持有限,并不是完全不行,往往通过一些第三方库进行桥接也是可以实现的
- 摄像头
- 视频播放
- NFC、蓝牙等
- …
应用场景:利用 页技术栈,通过浏览器实现的跨平台,十分脆弱,只能临时做一些快速开发与上线(偏展示性的内容,对设备原生能力支持比较差),完全不能起跨平台这个重任。
上面这个 Web 项目,可以直接打包成原生 App 吗p>
- 利用 Cordova 或 HBuilder 打包好像可以(未实践)
总结:说白了就是在开发 页…
一些框架例如:Vant(国产)、Quasar
这些本质上都是 “移动端的组件库”,没有提供原生能力访问,还是在开发 页而已
Web 技术栈开发移动端应用
我认为 “是否提供访问原生能力”,应当是 组件库 和 应用框架 的分水岭
Vue.js 是什么个 Web 开发技术栈!本身和移动端没有太大关系
前面一个并不是安装在手机上的软件,而这个,可以通过 Web 技术栈,开发出运行在不同平台的手机上的软件!
这也就是所谓的 H5 + 原生,利用 Web 技术栈,开发出移动端的软件。
ionic:Open-Source UI Toolkit to Create Your Own Mobile or Desktop Apps (本质上还是用了 Cordova)
再次强调,Vue.js 只是一个 Web 开发技术栈,很多其他 Web 技术栈也能开发出 App。
H5 + 原生:Cordova
仅 基于 Vue 技术栈的:uni-app(国产)— 大概剖析原理
总结:说白了就是用开发 页的思路与技术去开发移动应用
ReactNative 开发移动端
本质上也是属于 “Web 页技术栈”,和 Vue 是一个类型,只是开发方式和开发思想不同
其实移动端开发和前端开发在很大程度下是相通的,主要体现在以下几个方面:
- 绘制界面,用户操作接口
- 路由管理,控制项目各个页面的跳转逻辑
- 发送 络请求,获取动态数据,并显示在界面上
- 对一些通用组件进行封装
- …
Flutter 开发跨平台端
先把项目跑起来,编译时介绍一下开发工具
开发工具
Android Studio:强大,开箱即用,但耗费内存、吃机器性能(重量级)
Visual Studio Code:并不开箱即用,依靠插件可以变的强大(配置方便),轻量级
Vim:不开箱即用,完全由个人配置(有一定门槛),最轻量级的开发工具
介绍
特色:
- Flutter 中一切皆 Widget(包括结构、样式、布局)
- 嵌套地狱(但是开发工具的强势弥补了这个缺点)
- Dart 语言开发,JIT 模式开发效率高,AOT 运行效率高
- 编译速度快 + 热加载 (HOT RELOAD)
技术类型 | UI 渲染方式 | 性能 | 开发效率 | 代表框架 |
---|---|---|---|---|
H5 + 原生 | WebView 渲染 | 一般 | 高 | Cordova、Ionic |
JS + 原生 | 原生控件渲染 | 好 | 高 | RN、Weex |
自绘 UI + 原生 | 调用系统 API 渲染 | 好 | Flutter 高、QT 低 | QT、Flutter |
关于和 HTML 的比较思考:
HTML 是控制结构的、CSS 是控制样式的,那么布局是属于结构还是样式呢p>
- HTML 中布局属于样式
- Dart 中布局是布局,样式是样式,结构是结构,它们都属于 Widget(组件)
Flutter 项目目录:
具体的 lib 项目结构:
开发案例
租房项目
租房项目:界面构建 + 组件封装 的练手项目,对 络请求,路由管理,接口管理没有做太多封装
- 手写一个登录界面
博客项目
博客项目:完整的框架级别的项目,对上面提到的操作有良好的封装,使用起来很方便
https://github.com/jhflovehqy/flutter_bolg_manage
- 添加功能:给主页下的首页,添加一个 “回到顶部” 的按钮
ui/page/complex_module/main_page/main_page.dart
- 修复功能 BUG(不影响正常使用):修复搜索部分可以搜索空格的 BUG
ui/page/search_page/search_page.dart
- 修复软件 BUG(影响正常使用):退出登录会 错,根据查询接口文档,发现请求方式错误
http/request_repository.dart
-(无法演示)修复软件 BUG(影响正常使用):问题反馈,保存图片和选择图片有 BUG,未获取相册权限
ui/dialog/dialog_share_application.dart 文件中有两处可修改地方:
- 版本升级:升级 navigate_util.dart 中的 的使用方法
- 完善逻辑:util/file/file.dart 文件中,逻辑不完善
- 组件设计有漏洞:ToolBar 组件设计中 属性不合理(定义未使用)
发现 BUG 后的两种行为:
- 性能调优:对比 该项目与 租房项目 的 TabBar 切换状态。
这个项目的封装思想是非常值得学习的,这种项目不同于使用组件的教程,可以好好研究其中的架构、以及各种高级思想(依赖注入、状态管理、抽象封装等)
特别介绍:SwiftUI
这个跨平台不是我们理解上的跨平台,它跨的是苹果生态的平台,即 iOS、iPad、macOS、Apple Watch、Apple TV…
消防项目
ZYSwiftUIFrame
我的开源项目 ZYSwiftUIFrame
其他:GoMobile、Qt、JavaFX
这些均不是主流,了解即可
编码建议
注重整体的架构逻辑,细节学会查看文档
不做框架的奴隶,语言只是工具
对于编程语言的使用,达到:“得其神而忘其形” 的境界
(前提当然是有自己很熟悉的 2 门以上的语言)
多学习不同语言的高级特性,来了解编程的本质(了解汇编、C++ 等较底层的语言)
不要局限于完成功能,以更高维度的角度看待问题
代码的优雅整洁很重要
除非学习和自我提升,尽量不要重复造轮子,学会探索与使用开源项目
持续学习,保持热情
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!