前端黑洞网 首页
资源下载

前端电子书

前端视频教程

前端小游戏

前端脚本

前端项目实战

其他资源

博客 问答 程序员的那些事
写博客 登录 注册

程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网: it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(2)

uniapp开发APP从开发到上架全过程(一) 使用uniapp进行APP开发的全过程,包含开发、测试、上架等一系列操作

发布于2023-03-17 03:18     阅读(1140)     评论(0)     点赞(14)     收藏(3)


前端时间受朋友委托帮他开发了一款APP,综合考虑了下,没有上原生,使用了uniapp这一套技术栈来进行开发

uniapp是dcloud推出的一套跨端前端解决方案,可以通过一套代码生成小程序、安卓、IOS、H5等代码,对于中小项目来说是一套绝对的效率利器

技术架构

前端采用uniapp

后端使用Thinkphp做后端管理和接口,用到了一套开源的后端管理系统easyadmin,之所以选用他是因为他能够通过一条命令自动生成curd管理页面,并且可以通过配置来快速实现字段表格、搜索等功能,可以说也是一个效率神器了。

数据库采用了最常见的mysql数据库这个没什么好说的

云存储使用了七牛云存储,因为项目中包含了大量的视频资源,因此将静态资源放置到云存储上是一个不错的选择

开发

uniapp的开发相对来说还是简单的,开发过Vue或者微信小程序的朋友几乎能无缝上手,只需要浏览下官方文档即可,其API与小程序的API的大同小异,基本将wx.xxx修改为uni.xxx就能直接用因其底层是基于Vue,因此开发模式也是数据驱动的模式,非常方便快捷。

在Dcloud( HBuilderX-高效极客技巧)官网下载他们官方的编辑器Hbuilder并安装即可开始开发,

在Hbuilder中选择“文件-新建-项目”,选在uni-app即可创建一个uniapp项目,uni还提供了一些页面模板供开发者快速入门

点击创建后会自动创建一个新项目并将初始化相关文件和目录

项目目录结构

pages目录即为我们编写APP页面的目录

static目录则是存放静态资源的目录,可以将一些图标icon等资源放在此处

页面构成

uniapp每个页面结构分为三部分,第一部分是由template标签包括的页面标签,就是HTML中的标签元素,不同的是普通HTML中使用的是<div>标签,而在uni中使用的是<view>标签,需要注意的是在template下只能包含一个view标签,其他标签则都包含在此标签下边。

第二部分是script包括的JS代码,使用export default 对象将JS中的代码导出,内部结构则是Vue的数据结构,包含了data(),methods()等方法和一些uni的生命周期函数。

第三部分则是style标签包裹的css代码,与HTML的css代码如出一辙。

  1. <template>
  2. <view>
  3. </view>
  4. </template>
  5. <script>
  6. export default {
  7. data() {
  8. return {
  9. }
  10. },
  11. methods: {
  12. }
  13. }
  14. </script>
  15. <style>
  16. </style>

页面配置

uni中编写的所有页面都需要在page.json中进行注册,未注册的页面则无法进行跳转和显示,在page数组中配置页面参数即可,也可以每个页面的对象下边配置style对象来定义页面的标题栏等信息

通过配置globalStyle对象可以实现APP全局相关参数的配置,具体配置项可以参考uniapp官方文档( uni-app官网)

另外也可以通过配置tabBar对象来实现自动生成APP的标签TAB

APP.VUE

app.vue是整个项目的主入口,在此处的onLaunch在APP初启动的时候会进行调用,可以在此处做一些APP初始化的相关操作

  1. <script>
  2. export default {
  3. onLaunch: function() {
  4. console.log('App onLaunch')
  5. },
  6. onShow: function() {
  7. console.log('App Show')
  8. },
  9. onHide: function() {
  10. console.log('App Hide')
  11. }
  12. }
  13. </script>

同样,在此页面编写的css也会对所有页面起作用,可以将一些全局的css放在此处,如主题色之类。

APP设置

manifest.json是整个项目的设置文件,涵盖了项目的AppId、应用名称、版本以及APP、小程序的相关设置,通过Hbuilder编辑器可以以可视化的方式对项目进行设置,也可以通过源码视图来对项目进行设置

请求封装

作为一款可以上线运营的APP,必然是要可以展示各类数据的,而展示数据就需要对接后端API来进行,为了方便开发和后边维护,可以将请求单独封装为一个文件来进行统一处理。

在项目根目录创建common文件夹,新建http.js文件,在uni中想要引用外部Js,同样需要使用export default 将方法导出,因此http.js中最后编写完的函数也要通过 export default { 变量名称 }的形式进行导出。

uni提供了一个请求数据的API,uni.request ( uni.request(OBJECT) | uni-app官网 (dcloud.net.cn))我们基于此API对请求进行封装,方便在调用接口的时候进行使用。

  1. const baseUrl = 'https://www.xxx.com/api/';
  2. /* 封装ajax函数
  3. * @param {string}opt.type http连接的方式,包括POST和GET两种方式
  4. * @param {string}opt.url 发送请求的url
  5. * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
  6. * @param {object}opt.data 发送的参数,格式为对象类型
  7. * @param {function}opt.success ajax发送并接收成功调用的回调函数
  8. */
  9. function getHeader() { //header头部
  10. return {
  11. "Accept": "application/json",
  12. 'Content-Type': 'application/json; charset=utf-8', // app header头
  13. //     'Content-Type': 'application/x-www-form-urlencoded', // h5 header头
  14. //     'ACCESS_TOKEN': `${token}`,
  15. };
  16. }
  17. const ajax = function(opt) {
  18. uni.showLoading({
  19. // title:"提交中"
  20. })
  21. opt = opt || {};
  22. opt.method = (opt.method && opt.method.toUpperCase()) || 'POST';
  23. opt.url = baseUrl + opt.url || '';
  24. opt.async = opt.async || true;
  25. opt.data = opt.data || null;
  26. opt.success = opt.success || function() {};
  27. opt.fail = opt.fail || function() {};
  28. opt.complete = opt.complete || function() {};
  29. uni.request({
  30. method: opt.method,
  31. dataType: 'json',
  32. url: opt.url,
  33. data: opt.data,
  34. header: getHeader(),
  35. success: (res) => {
  36. uni.hideLoading()
  37. // console.log(res)
  38. if(res.data.code == 200) {
  39. opt.success(res.data);
  40. }else {
  41. uni.showToast({
  42. title:res.data.message,
  43. icon:"none"
  44. })
  45. opt.fail(res);
  46. }
  47. },
  48. fail: (res) => {
  49. uni.hideLoading()
  50. console.log(res)
  51. uni.showToast({
  52. title:res.data ? res.data.message : '网络连接失败',
  53. icon:"none"
  54. })
  55. console.log(opt)
  56. opt.fail(res);
  57. },
  58. complete: (res) => {
  59. uni.hideLoading()
  60. opt.complete(res);
  61. },
  62. })
  63. }

为了统一管理,我将所有的后端API路径也都放在此处

  1. const bindAjax = function(data,success,fail) {
  2. ajax({
  3. url: 'xxx/xxx',
  4. method: 'POST',
  5. data: data,
  6. success: function(res) {
  7. if (res.code == 200) {
  8. success(res.data)
  9. }
  10. },
  11. fail:(e) => {
  12. fail(e)
  13. }
  14. })
  15. }

然后通过erxport将我们定义好的方法名暴露即可

  1. export default {
  2. ajax,
  3. bindAjax
  4. }

最后,想要在页面中调用,还需要在main.js中创建全局变量

  1. import http from './common/http.js';
  2. Vue.prototype.http = http;

这样我们就可以在页面中使用this来进行调用了

  1. this.http.bindAjax({
  2. a:1,
  3. b:2
  4. }(e) => {
  5. // 成功后返回的数据
  6. console.log(e)
  7. },(e) => {
  8. // 请求失败
  9. })

完整文件看这里  (1条消息) uniapp统一请求封装-Javascript文档类资源-CSDN文库 

插件引用

uniapp的另一个优点就是插件足够多,这样可以避免开发者重复造轮子,对于常用的插件开发者可以直接引用,极大的节省开发时间和成本。

访问Dcloud插件市场( DCloud 插件市场)即可以搜索需要的插件,如我们需要一块类似淘宝那样的搜索插件,就可以直接搜索“搜索插件”来进行检索

找到我们需要的插件后,可以直接在插件详情页右侧选择 使用HbuilderX导入插件,就可以将插件自动导入我们的项目中

需要注意的是,要注意插件的平台兼容性,许多插件是专门为某个平台如微信小程序获安卓APP等进行设计的,那个如果我们将此插件使用到其他平台上则可能会引发兼容问题

 接下来,我们就可以开始愉快的编码了~

下一篇,使用Hbuilder进行真机测试,敬请期待!


window属性:controllers

2022年最受欢迎的8大编程语言

为什么都说程序员找不到女朋友,但是身边程序猿的却没一个单身的

30岁以上你还死磕技术,别说拿高薪,可能你连饭碗都会保不住

程序员被开除,老板:“有你参与的项目全黄了!”

笑话:一个测试工程师走进一家酒吧

趣图:程序员头疼的4种原因

笑话:面试官:请拿出一段体现你水平的代码。我: sudo rm -rf /*面试官:这体现了你哪方面能力?

网友说:做开发,不被领导喜欢怎么办?

前端精选:在 WPF 中实现融合效果



所属网站分类: 技术文章 > 博客

作者: 西门费雪

链接: http://www.qianduanheidong.com/blog/article/505426/5772c7d611fb6e3da0a0/

来源: 前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)




程序员的那些事(new)

window属性:controllers

2022年最受欢迎的8大编程语言

为什么都说程序员找不到女朋友,但是身边程序猿的却没一个单身的

30岁以上你还死磕技术,别说拿高薪,可能你连饭碗都会保不住

程序员被开除,老板:“有你参与的项目全黄了!”

笑话:一个测试工程师走进一家酒吧

趣图:程序员头疼的4种原因

笑话:面试官:请拿出一段体现你水平的代码。我: sudo rm -rf /*面试官:这体现了你哪方面能力?

网友说:做开发,不被领导喜欢怎么办?

前端精选:在 WPF 中实现融合效果

电子书(new)

CSS3学习必备书籍(CSS3 实战).pdf

CSS网站布局实录(第二版).pdf

CSS禅意花园.pdf

HTML5权威指南.pdf

HTML5移动Web开发指南.pdf

零基础学HTML+CSS [第三版].pdf 下载

数据结构与算法 JavaScript 描述.pdf

客户端存储技术.pdf 下载

前端100本高清pdf电子书打包下载

深入理解HTML5:语义、标准与样式 PDF 下载

脚本(new)

压扁小鸟小游戏

.美女拼图游戏源码

JavaScript按键控制坦克移动

JavaScript打地鼠游戏

HTML5实现抓怪物小游戏

网页版-别踩白块游戏

网页版扫雷

HTML5实现拼图游戏

网页版2048

HTML5箭头射击游戏代码

博客(new)

Web 页面之间传递参数的几种方法

uniapp安卓离线打包步骤

Vue--》深入理解 Vue 3 导航守卫,掌握前端路由的灵魂技能!

java图片转二进制流_java将文件转化成二进制流

个人简历html网页代码(使用chatgpt完成web开发课的实验)

【HTTP 协议】掌握 Web 的核心技术

Three.js指定路径漫游(站走切换、路径动画、展示路线、开始、暂停、继续、退出、镜头跟随)

完全卸载vscode

flex布局优化(两端对齐,从左至右)

【熬夜送书 | 第二期】清华社赞助 | 《前端系列丛书》

视频教程(new)

带你快速入坑ES6

0到1快速构建自己的后台管理系统

基于Element-UI二次封装业务组件-前端视频教程

基于WebAR实现3D任务书桌上跳舞

Tensorflow.js 实现垃圾分类

全方位入门git

六个案例学会响应式布局

Ajax实战案例之列表渲染

Phaser从0到1实战微信2D小游戏【钢琴方块】

元旦贺卡-前端视频教程

项目实战(new)

NodeJS+Express+MongoDB实战项目

打造仿小米电商网站

2020版uni-app项目实战

2020前端React项目实战

小程序全栈开发之喵喵交友

Vue实战项目之喵喵电影

实战项目之网易云

实战项目之头条

前端实战项目之幸福西饼

实战项目之拉勾网

问答(new)

居中网站内容 + 垂直导航栏

如何将项目左对齐(标题)

Nunjucks 嵌套变量

文本显示在图像上悬停

HTML/CSS - 按钮在另一个元素下排列

MathJax 库在公式中留下滚动条

如何在MVC5中用Razor将一行设为红色

在 Razor 页面 WebApplication 中将帖子从文本区域保存到数据库

响应式图像背景尺寸封面

将图像放入图像内

游戏(new)

jQuery坦克大战网页小游戏

JS俄罗斯方块游戏代码

Vue.js注意力大考验小游戏代码

HTML欢乐打地鼠小游戏

HTML5糖果消消乐闯关小游戏

扑克牌翻牌记忆小游戏

HTML翻牌小游戏代码

HTML5拉杆子过关小游戏代码

HTML5倾斜迷宫小游戏

HTML5五子棋小游戏

其他资源(new)

jQuery益智拼图游戏

HTML5制作的2048游戏

.小球撞击游戏源码

驴子跳跳网页游戏源码

.jQuery五子棋游戏

HTML5街头霸王游戏源码

.网页版台球小游戏

地图拼图游戏

HTML5中国象棋游戏

Maven+JSP+SSM+Mysql实现的音乐网站

PHP网站源码岳阳营销网站报价鹤壁SEO按天收费多少钱扬州关键词排名包年推广多少钱哈密seo网站推广公司吴忠百度网站优化排名多少钱开封网站优化按天计费公司北京推广网站多少钱新余模板网站建设哪家好布吉模板推广多少钱海口网页设计推荐迪庆阿里店铺托管报价南昌SEO按天计费多少钱泰州模板制作报价娄底营销网站推荐清远seo网站优化公司松岗关键词按天收费哪家好泰安网站制作设计平顶山网站搭建价格梧州网站优化排名哪家好杭州seo优化公司威海模板推广公司辽源网站建设设计多少钱苏州关键词按天收费报价百色企业网站设计德阳网络推广推荐十堰seo优化池州外贸网站制作多少钱宜昌网站优化按天计费报价桐城SEO按天收费报价郴州优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化