如何使用uniapp快速搭建跨平台多端项目教程

2026-02-08 0 573

小程序开发中,存在一种基于Vue的编写方式,这种写法与小程序规范相吻合。其中,有许多值得深入研究的细节。

基于Vue的语法配合小程序需求

// 创建.gitlab-ci.yml文件,便于上传执行
stages:
    - deployDonate
    - deploy
deployDonate:
    stage: deployDonate
    script:
        - ssh 服务器ip 'cd 存放文件的根目录 && git pull && cd 存放文件根目录下的需要打包文件 && npm i && npm run build'
    only:
        - master  
deploy:
    stage: deploy
    script:
        - ssh 服务器ip 'cd 存放文件的根目录 && git pull && cd 存放文件根目录下的需要打包文件 && npm i && npm run build'
    only:
        - production  

现在采用的开发方式,在语法上是以vue的写法为基础。比如,在排版上会遵照小程序的规定,不仅包含vue的标准格式,还加入了小程序独有的元素,例如触底事件等。这样做可以使得小程序的生命周期操作更加顺畅。对于熟悉vue的开发者来说,这样可以更快地掌握。但是,同时也要考虑到小程序的特殊性,测试时可能会遇到不兼容的问题。在具体操作时,还需针对不同平台进行调整,比如在使用小程序开发平台和其他平台时,可能需要采取不同的处理手段。

// .env.development
VUE_APP_URL= ''
// .env.production.example
VUE_APP_URL= ''

这种做法的优势在于将Vue的特性与小程序的特色相结合。然而,在借鉴小程序的独特之处时,可能会遇到一些兼容上的难题。因此,开发者需提前了解并做好相应的应对措施。

// config.com
module.exports = {
  // 请求域名 格式: https://您的域名
  baseURL: process.env.NODE_ENV==\"development\"? 'http://www.baidu.com' : process.env.VUE_APP_URL, //本地 
  timeout: '5000',
};

项目文件的操作

import { baseURL, timeout} from '../config.js';
export default function request(api, method, data,loadup) {
	let DefaultOpts  = {
		url: baseURL + api,
		method: method || 'GET',
		timeout: timeout,
		data: data || '',
		header: {
			'content-type': 'application/json',
			//\"Content-Type\": \"multipart/form-data\", // 上传图片需要切换的歌声
			'Token': uni.getStorageSync('weiju_token'),
		}
	}
	return new Promise((resolve, reject) => {
		if(loadup) { // 当前为上传文件接口
			let upObj = {
				url: baseURL + api,
				filePath: data,
				name: 'file',
			}
			uni.uploadFile(upObj).then((res) => {
				resolve(JSON.parse(res[1].data))
			}).catch((response) => {reject(response)})
		} else { 
			uni.request(DefaultOpts).then((res) => {
				if(res[1].data.code == '401' || res[1].data.code == '402' ) {
					uni.showToast({
						icon:'none',
						title: '身份已过期,请重新登录',
						duration: 2000 
					});
					uni.navigateTo({
					    url: '/pages/tabar/login/login'
					});
					//尚未登录的逻辑处理
					return false
				}
				resolve(res[1].data)
			}).catch((response) => {reject(response)})
		}
		
	})
}
['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
	request[method] = (api, data,state) => request(api, method, data,state)
});

好的项目可以轻松复制到vue的src文件夹。若想在微信开发平台使用,需将src独立导入平台。操作时需留意文件路径等细节,例如不同环境下的域名指向需特别设置。在vue中,需配置两个根文件。同时,文件传输和部署时,要关注服务器操作。在服务器上,对上传到Git的代码执行特定命令,确保项目顺利运行和打包。

import request from './request.js'
export function addAddress(data) {
   return request.post('xxxx',data)
}

有时因操作不当或对流程不熟悉,项目执行可能会受阻。因此,必须对流程的每一步进行多次核对,以保证各个环节都不被忽视。

	components: {}
	data() {return {}}
	methods: {}
	onLoad() {} // 页面首次加载
	
	onPageScroll(res) {} // 滚动监听
	onShow() {} // 显示页面
	onReachBottom: function () {} // 页面上拉触底事件的处理函数
	onShareAppMessage(res) {} // 页面分享转发

平台运行限制与应对

小程序开发平台上的项目,未压缩前无法在手机上预览,必须发布到平台并压缩后才能查看。此外,每次构建小程序时,都需要在pages.json里设定文件路径。若采用vue技术,每设置一个路径,就得在两个文件里重复操作。这种重复且繁琐的工作,可以通过使用封装好的路由拦截方法来简化,这样不仅能减少操作步骤,还能提升开发速度。

\"subPackages\": [
	{
		\"root\": \"pages/tabar_page/homeIndex\",
		\"pages\": [
			{
				\"path\": \"business_index\",
				\"style\": {
					// #ifdef MP
						\"navigationBarTitleText\": \"商务合作\",
					// #endif 
					// \"navigationStyle\": \"custom\",
					\"app-plus\": {
						\"titleNView\": {
							\"type\": \"transparent\"
						}
					}
				}
			},
		]
	},
	{
	      \"root\": \"pages/apply/\",
	      \"name\": \"apply\",
	      \"pages\": [
	        \"partner/partner\",
	        \"business/business\",
	        \"pay/pay\"
	      ]
	 },
]

不采用这种封装方法,每次设置配置文件路径都会变得既耗时又容易出错。这种情况在大型项目或处理多个文件时尤为突出。

数据编辑与页面更新

uniCrazyRouter.beforeEach((to, from ,next)=>{
	next(); // 能符合条件的则继续执行
})

编辑地址列表并保存后,列表页数据可自动更新。小程序提供方法,能查询历史跳转页面及调用相应方法。此功能颇为实用,但开发时需保证数据更新流程准确无误。有时数据修改后,界面未能即时刷新,需采取特定措施解决。

如何使用uniapp快速搭建跨平台多端项目教程

在具体项目需求里,合理的数据处理和迅速的页面刷新对用户感受极为关键。一旦数据刷新与界面刷新不匹配,就可能引发显示混乱等负面效果。

/* #ifndef APP-NVUE */
	white-space: nowrap;
/* #endif */

微信支付与调用处理

// #ifdef %PLATFORM% 
   这些代码只在该平台编译
// #endif

小程序仅支持通过微信支付进行操作,并且必须获取特定信息。获取这些信息时,可以采取静默模式。但要注意,以防静默调用微信登录失败,我们需在关键位置额外调用一次。在执行uni.login时,应完整地抛出函数。确保这些步骤的顺序和逻辑正确,否则支付功能可能会出现异常。

小程序中支付功能极为重要,若此功能出现故障,小程序的商业价值或许会遭受损害。

APP-PLUS
APP-PLUS-NVUE
H5 
MP-WEIXIN	
MP-ALIPAY
MP-BAIDU
MP-TOUTIAO
MP-QQ
MP

兼容与操作注意事项

如何使用uniapp快速搭建跨平台多端项目教程

项目若支持小程序,需注意避免使用js直接操作DOM事件,诸如“.”或Vue的$refs来获取元素。若确实需要获取元素,可以尝试使用uni提供的节点信息功能。若自行开发类似功能而非使用现成方法,在多端打包后可能遇到兼容性问题。此外,在处理数据时,比如处理红色框自动生成的命名数量不确定的情况,应在data中先定义一个空数组来收集依赖,否则可能会出现数据更新上的问题。另外,在更新数组数据并同步视图时,除了使用$set方法处理添加数据的情况外,动态删除数据后置为空也可能导致视图未及时更新。

这警示开发者,在实现跨平台兼容时必须严格遵守操作规范。即便测试阶段未显现出兼容问题,一旦众多用户开始使用,问题可能集中显现,届时将变得相当难以处理。

uni.navigateBack({
	delta: 1,
	success: function(e) {
		var page = getCurrentPages();
		if (page == undefined || page == null) return;
		var pages = page[page.length - 2];
		pages.$vm._addressList(); // 调转到列表页重新请求列表数据
	}
});

在制作小程序的过程中,你是否也遭遇过一些棘手的问题?欢迎你在评论区分享你的经历,同时记得点赞并转发这篇文章。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 如何使用uniapp快速搭建跨平台多端项目教程 https://www.zuozi.net/75422.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务