【易售小程序项目】后端部署、Uniapp项目Web部署

这篇具有很好参考价值的文章主要介绍了【易售小程序项目】后端部署、Uniapp项目Web部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Uniapp项目Web打包部署

为什么不部署小程序

因为小程序部署审核比较严格,还需要备案,而且我现在还没有完全开发完成(研究生开学之后,基本没有时间开发了),到时候再摸索一下吧。之所以还没有开发完成我就部署,是因为我那弱小的服务器已经时日不多了/(ㄒoㄒ)/~~,再不部署就白买了

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

Web打包前对项目进行调整

客户端的开发是基于uniapp,uniapp的一个优点是支持跨平台,一次开发可以多端适配,即开发一次可以打包成小程序、网站、安卓等程序,但并没有想象的这么简单,不同平台之间支持的组件、功能还是有所差距的,如下图所示。因为之前的开发是根据微信小程序来开发的,如键盘呼出事件的处理、websocket的连接方式、页面的导航条都需要调整

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

网站、小程序切换

对项目调整让其可以适配网站的前提是不能丧失原有对小程序的适配,因此不能直接修改项目的代码来适配网站,而是增加代码来完成对网站的适配,再增加一个切换开关来控制,这样在打包之前就可以控制是打包为小程序还是网站程序

增加constant.js来控制常量

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

// 类型 0:小程序 1:网站
const softType = 1;
// socket的ip:端口
const socketUrl = '23.23.147.200:8085';
// const socketUrl = '10.23.17.164:8085';

export default {
	softType,
	socketUrl
}
将js绑定到main.js的全局变量中

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

import Constant from "@/constant/constant.js"
Vue.prototype.Constant = Constant

后面直接使用this.Constant.softType来获取常量的值即可

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

WebSocket差异

【连接差异】

/**
 * 创建websocket连接
 */
initWebsocket() {
	// console.log("this.socket:" + JSON.stringify(this.$socket))
	// this.$socket == null,刚刚进入首页,还没有建立过websocket连接
	// this.$socket.readyState==0 表示正在连接当中
	// this.$socket.readyState==1 表示处于连接状态
	// this.$socket.readyState==2 表示连接正在关闭
	// this.$socket.readyState==3 表示连接已经关闭

	let socket = null;
	if (this.Constant.softType == 0) {
		socket = this.$socket;
	} else if (this.Constant.softType == 1) {
		socket = this.$store.state.ws;
	}

	if (socket == null || (socket.readyState != 1 && socket.readyState != 0)) {
		// --if--小程序类型
		let socketUrl = this.Constant.socketUrl;
		// console.log("socketUrl:" + socketUrl)
		if (this.Constant.softType == 0) {
			this.$socket = uni.connectSocket({
				url: "ws://" + socketUrl + "/websocket/" + uni.getStorageSync("curUser")
					.userName,
				success(res) {
					console.log('WebSocket连接成功', res);
				},
			})
			// 监听WebSocket连接打开事件
			this.$socket.onOpen((res) => {
				console.log("websocket连接成功")
				Vue.prototype.$socket = this.$socket;
				// 连接成功,开启心跳
				this.headbeat();
			});
			// 连接异常
			this.$socket.onError((res) => {
				console.log("websocket连接出现异常");
				// 重连
				this.reconnect();
			})
			// 连接断开
			this.$socket.onClose((res) => {
				console.log("websocket连接关闭");
				// 重连
				this.reconnect();
			})
		} else if (this.Constant.softType == 1) {
			// --if--网站类型
			socket = new WebSocket("ws://" + socketUrl + "/websocket/" + uni.getStorageSync(
					"curUser")
				.userName);
			// 网站类型
			//监听WebSocket连接打开事件
			let _that = this;
			socket.onopen = function() {
				console.log("websocket连接成功")
				// Vue.prototype.Constant.WebSocket = socket;
				console.log("常量socket:" + JSON.stringify(socket));
				store.commit("SET_WS", socket);
				// console.log("Vue.prototype.$socket:" + Vue.prototype.WebSocket)
				// 连接成功,开启心跳
				_that.headbeat();
			};
			socket.onmessage = function(msg) {
				console.log("接收到socket服务器的数据====" + JSON.stringify(msg))
			};
			// 连接异常
			socket.onerror = function() {
				console.log("websocket连接出现异常");
				// 重连
				_that.reconnect();
			};
			// 连接断开
			socket.onclose = function() {
				console.log("websocket连接关闭");
				// 重连
				_that.reconnect();
			};
		}
	}
},

【发送消息差异】

/**
 * 发送消息
 */
send() {
	if (this.messageInput != '') {
		let message = {
			from: this.me.userName,
			to: this.you.username,
			text: this.messageInput
		}
		// console.log("this.socket.send:" + this.$socket)
		// 将组装好的json发送给服务端,由服务端进行转发
		if (this.Constant.softType == 0) {
			this.$socket.send({
				data: JSON.stringify(message)
			});
		} else if (this.Constant.softType == 1) {
			// 网站类型
			let socket = this.$store.state.ws;
			socket.send(JSON.stringify(message));
		}
		this.total++;
		let newMessage = {
			// code: this.messageList.length,
			type: 1,
			content: this.messageInput
		};
		this.messageList.push(newMessage);
		this.messageInput = '';
		this.toBottom();
	}
},

【接收消息差异】

/**
 * 接收消息
 */
receiveMessage() {
	if (this.Constant.softType == 0) {
		this.$socket.onMessage((response) => {
			// console.log("接收消息:" + response.data);
			let message = JSON.parse(response.data);
			let newMessage = {
				// code: this.messageList.length,
				type: 0,
				content: message.text
			};
			this.messageList.push(newMessage);
			this.total++;
			// 让scroll-view自动滚动到最新的数据那里
			this.toBottom();
		})
	} else if (this.Constant.softType == 1) {
		// 网站类型
		let socket = this.$store.state.ws;
		let _that = this;
		socket.onmessage = function(response) {
			console.log("接收消息:" + response.data);
			let message = JSON.parse(response.data);
			let newMessage = {
				// code: this.messageList.length,
				type: 0,
				content: message.text
			};
			_that.messageList.push(newMessage);
			this.total++;
			// 让scroll-view自动滚动到最新的数据那里
			_that.toBottom();
		};
	}
},

监听键盘呼出

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

onReady() {
	// 监听键盘高度变化,以便设置输入框的高度(适用于小程序,不适用于网站)
	uni.onKeyboardHeightChange(res => {
		if (this.Constant.softType == 0) {
			let keyBoardHeight = res.height;
			this.chatSuitable(keyBoardHeight);
		}
	})
},

methods: {
	/**
	 * 键盘呼出(适用于网站)
	 */
	keyboardUp(value, height) {
		if (this.Constant.softType == 1) {
			this.chatSuitable(height);
		}
	},
	/**
	 * 键盘呼出时,聊天框自适应缩短
	 */
	chatSuitable(keyBoardHeight) {
		this.scrollViewHeight = `calc(100vh - 20px - 44px - ${keyBoardHeight}px)`;
		this.scrollToView = '';
		setTimeout(() => {
			this.scrollToView = 'message' + this.messageList[this
				.messageList.length - 1].id;
		}, 150)
	},
}

导航条

使用安卓手机打开网页时,上面已经有导航标题了,因此可以隐藏掉小程序的标题,不然重复的标题显得多余。

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

uniapp自带的标题无法直接使用代码来隐藏,uniapp只提供了设置导航栏的颜色和内容的方法(可能是我没有找到)

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
因此我只能想到直接修改配置文件pages.json的方式,通过设置navigationStylecustom来实现,当需要切换成小程序来打包时,可以通过将custom替换为default来实现

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

打包

uniapp项目的打包h5程序较为简单,首先修改配置文件的运行的基础路径修改为./,作用是将程序运行的基础路径设为当前路径,而不是默认的根目录,使得程序在不同的环境中更加灵活,可以更方便地进行部署和迁移

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
修改完成之后,使用菜单栏下面的发行操作即可完成打包
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

部署

打包成功之后,将这两个文件拖入到服务器的文件夹中即可部署,我部署的方式使用宝塔面板,具体步骤可以学习SpringBoot+Vue 前后端分离 微服务项目 打包部署全流程(原始部署/宝塔部署)的前端部署下面的宝塔部署

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

后端项目打包部署

后端项目基于若依管理系统进行开发

打包前准备

创建两个配置文件来分别存储开发环境和生产环境的配置,application.yml可以用来存储开发环境和生产环境的公共配置,例如mysql、redis、rabbitmq这些中间件,开发时可能是使用的本地电脑进行开发,部署时使用的是云服务器,因为开发环境和生产环境中中间件的ip和端口有所不同,因此使用两个文件来进行区分,方便切换

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
在application.yml中可以指定使用dev还是prod文件,当然,在打包之前并不需要对其进行修改,因为在运行jar包的时候还可以二次指定jar包运行的端口、使用的内存、使用的配置文件……,如java -Xmx256M -Xms256M -jar sss-enterprise-0.0.1-SNAPSHOT.jar --server.port=6002 --spring.profiles.active=prod

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

打包

打包直接使用maven工具里面的cleaninstall命令即可,因为若依管理系统已经在pom.xml中内置了打包配置

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署
uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署

部署

本文使用的是若依的单机版本,并非微服务版本,因此只需要在服务器中启动admin的jar包即可,具体的操作步骤可以学习SpringBoot+Vue 前后端分离 微服务项目 打包部署全流程(原始部署/宝塔部署)

uniapp小程序部署,小程序开发,小程序,uni-app,前端,打包,部署文章来源地址https://www.toymoban.com/news/detail-766680.html

到了这里,关于【易售小程序项目】后端部署、Uniapp项目Web部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】

    之前已经在【UniApp开发小程序】小程序首页(展示商品、商品搜索、商品分类搜索)【后端基于若依管理系统开发】这篇文章中介绍了首页的实现,但是当时的实现并不是完善的,因为项目开发是一个持续的过程,也因为我是个人的第一次尝试开发这种类型的项目,很多细节没

    2024年02月10日
    浏览(40)
  • 【易售小程序项目】项目介绍与系列文章集合

    易售二手小程序主要用于校园中二手商品的交易,该系列文章会记录这个小程序前端的整个开发过程并提供详细代码,后台主要基于若依管理系统搭建,文章中也会提及后端关键部分的实现及代码。希望该系列文章可以帮助小白了解项目的开发流程和一个产品的迭代过程,如

    2024年02月10日
    浏览(44)
  • 【易售小程序项目】顶部导航栏和底部导航栏设置+iconfont图标引入

    在正式开发小程序的功能之前,首先需要确定小程序的主要框架。 我的小程序需要创建的页面是“首页”、“我想要”、“私信”、“我的”,“首页”已经存在于项目中,不需要重复创建。创建过程如下: 创建成功,不仅创建了 star.vue , Hbuilder 还自动帮助创建了 star 文件

    2024年02月10日
    浏览(42)
  • 前端uniapp+后端springboot 详细教程《实现微信小程序授权登录》(附完整前后端项目demo)

    微信小程序官方登录流程图: 参考微信小程序登录官网文档 1、前端技术栈 1.1、uniapp 使用uniapp构建一套代码多端使用的前端框架项目 1.2、前端封装工具 dateUtil.js: 功能: 1. 时间日期格式化 2. 传入日期是否和当前日期的比较 完整代码: requestUtil.js: 功能: 1. 定义公共的

    2024年02月14日
    浏览(59)
  • 陪诊小程序独立版| uniapp前端 |fastadmin后端

    基于FastAdmin + 原生微信小程序开发的陪诊陪护小程序,支持多运营区,陪护师、推广者等完整闭环功能,快速搭建陪护业务平台。 前端演示: 后端演示: https://tthz001.com/dkYNHvEfXu.php/index/login 介绍:

    2024年02月01日
    浏览(41)
  • uniapp 小程序实现微信授权登录(前端和后端)

    1.主要流程:先通过 uni.getUserProfile授权获取用户名称和头像等信息 在调用 uni.login 获取微信登录需要的临时code 2. 前端代码: 1.主要流程:在前端调用接口成功的将临时code 传递给后端时 ,后端通过调用微信的第三方接口拿到 openid, session_key 这两个参数,查询数据库是否有

    2024年02月16日
    浏览(45)
  • uniapp项目实战系列(1):导入数据库,启动后端服务,开启代码托管

    ✨ 原创不易,还希望各位大佬支持一下! 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! mysql8和mysql5的安装过程都有!!!超多图超详细保姆级教程最新教程新手小白轻松上手(点击跳转) mysql彻底卸载

    2024年02月11日
    浏览(34)
  • uniapp小程序订阅消息推送+Thinkphp5后端代码教程示例

    记录一下通过uniapp开发小程序消息推送的实例,配合后端tp推送,之前写的项目是微信小程序而且后端是原生php,这次通过项目记录一下 首先我们通过原生php代码回顾一下,不考虑模板参数的话,主要就是“ touser ”和“ ACCESS_TOKEN ” 上述代码大概就是基本流程,我们再看一

    2024年02月08日
    浏览(47)
  • uniapp微信小程序+echarts简单图表以及与后端交互

    效果图:   需要的两个主要文件就是  echarts.min.js   和  echarts.vue  1、 echarts.min.js 可以去官网定制 链接   ECharts 在线构建   或者直接去GitHub - Tawesome666/echarts: echarts 下载 (注意:我这个只有柱状图和折线图) 2、 echarts.vue  可以使用 Visual Studio Code  打开你的文件夹使用命

    2024年02月09日
    浏览(42)
  • 【UniApp开发小程序】私聊功能uniapp界面实现 (买家、卖家 沟通商品信息)【后端基于若依管理系统开发】

    本小程序在用户浏览首页的时候创建WebSocket连接,并将连接获得的WebSocket对象存储到全局变量中,方便其他页面来使用WebSocket 首先在项目的main.js文件中声明全局变量socket 对全局变量进行赋值 后续如果需要使用全局变量,直接使用 this.$socket 即可 下面的代码中有一个headbeat方

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包