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

2024-12-16 0 874

小程序开发中,存在一种基于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(); // 调转到列表页重新请求列表数据
	}
});

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

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

七爪网 行业资讯 如何使用uniapp快速搭建跨平台多端项目教程 https://www.7claw.com/2803155.html

七爪网源码交易平台

相关文章

发表评论
暂无评论
官方客服团队

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