简单的聊聊uniapp和uview组件库的开发

简单的聊聊uniapp和uview组件库的开发

uniapp是一个基于Vue.js的跨平台开发框架,可以同时开发H5、微信小程序、App等多个平台的应用。这样可以减少开发人员的工作量,提高开发效率。

官网:uniapp.dcloud.net.cn/

uView是uni-app生态专用的UI框架,uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码, 可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台(引言自uni-app网)。

官网:v1.uviewui.com/components/...

工具:Hbuilder X

一、安装uView组件库

使用下载的方式安装,能更方便阅读源码,但是每次升级都需要重新下载并覆盖uview-ui文件夹。

​ 在uni-app插件市场右上角选择使用HBuilder X 导入插件或者下载插件ZIP

​ 如果您的项目是由HBuilder X创建的标准uni-app项目,将下载后的uview-ui文件夹,复制到项目根目录。

​ 插件地址:ext.dcloud.net.cn/plugin?id=6...

然后就是按照官网进行样式的引入和组件的引入;

可以使用uview自带的http请求

二、Hbuilder X运行项目的时候,使用外部浏览器打开会出现跨域的问题。

在uniapp的目录里面找到manifest.json文件,找到源码视图,添加以下的代码

js 复制代码
"h5" : {
        "devServer" : {
            "disableHostCheck" : true,
			"proxy":{
				"/api":{
					"target":"http://127.0.0.1:8080",
					"ws": true,
					"changeOrigin": true,
					"secure": false,
					"pathRewrite": {
						"^/api": ""
					}

				}
			}
        }
    },

然后修改baseurl的配置

js 复制代码
process.env.NODE_ENV === 'development' ? '/api' : 'http://127.0.0.1:8080'

但是因为我使用了uview的组件库自带的http请求方式,在拦截配置里面修改,但是后面发现这个问题,会出现一个问题就是会导致Cookie不一样,从而导致接口报错会话过期!!!!!!!!!!!!

最后迫于无奈,只能使用内置的浏览器进行开发。

三、Set-Cookie的微信小程序不能自动带上的问题

在登陆成功之后,把Set-Cookie存在本地,然后请求的时候放到请求头部里面

uniapp有个判断方法来判断当前系统进行操作的,// #ifdef

ini 复制代码
// #ifdef MP-WEIXIN
	let sessionidStr = that.getSessionId(res.header['Set-Cookie'])
	let sessionid = "JSESSIONID=" + sessionidStr
	wx.setStorageSync('sessionid', sessionid); //保存Cookie到Storage
// #endif

上面的代码就是在登陆的成功之后,如果当前是属于微信小程序的话,就进行的操作。把Set-Cookie存到本地

然后在请求的拦截器里面添加到头部信息里面

js 复制代码
Vue.prototype.$u.http.interceptor.request = (config) => {
		// #ifdef MP-WEIXIN
			config.header.cookie =  wx.getStorageSync("sessionid");
		// #endif
	config.url = '/api' + config.url;
		return config;
		// 如果return一个false值,则会取消本次请求
		// if(config.url == '/user/rest') return false; // 取消某次请求
	}

四、css样式和本地图片失效

在运行到微信小程序上面的之后,会发现有不少的自己写的样式会失效的。建议就是使用组件库里面的自带的一些margin和padding的样式。

图片使用,最好是使用绝对路径,这样微信小程序就不会报错了

微信小程序图片报错

JS 复制代码
[渲染层网络层错误] Failed to load local image resource /uni_modules/uview-ui/static/image/videoCover.png 
 the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error) 
(env: Windows,mp,1.06.2307250; lib: 2.33.0)
js 复制代码
<u-image width="100%" height="230rpx" src="/static/image/videoCover.png"></u-image>

还有一种就是系统直接读取后端的图片的时候普遍都会有验证规则,比如我们就是会有cookie的认证,我们读取图片一般都是地址 + 图片ID模式来直接读图,在浏览器端没有问题,但是在微信小程序就会发现cookie不会自动加上,导致读取不了图片,所以可能还需要针对性让后端加一个无权限的读取图片的接口。微信小程序基本是安全的,大概率不存在被人批量泄露。

五、视频播放问题

我们使用了萤石云的播放,在萤石云的官网上面有关于uniapp和微信小程序进行开发的demo,我们可以按照demo的来进行开发。

但是引入的萤石云的js,比较大,相对于微信小程序的不能太大的包来说,有点难受,而且播放也是有些许问题的,所以使用微信小程序的最好方法就是使用引入微信小程序的半屏模式来播放视频,但是需要进行申请,具体操作可以看看官网

所以最后我们是通过跳转小程序来解决这个问题,至于对其他的m3u8的直播流视频,就直接使用video标签进行播放

官网地址:open.ys7.com/help/529

微信小程序播放:open.ys7.com/help/502

相关推荐
吕彬-前端11 分钟前
使用vite+react+ts+Ant Design开发后台管理项目(五)
前端·javascript·react.js
学前端的小朱14 分钟前
Redux的简介及其在React中的应用
前端·javascript·react.js·redux·store
guai_guai_guai23 分钟前
uniapp
前端·javascript·vue.js·uni-app
bysking1 小时前
【前端-组件】定义行分组的表格表单实现-bysking
前端·react.js
王哲晓2 小时前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
fg_4112 小时前
无网络安装ionic和运行
前端·npm
理想不理想v2 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云2 小时前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
微信:137971205872 小时前
web端手机录音
前端
齐 飞2 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb