简单的聊聊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

相关推荐
F-2H25 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
gqkmiss1 小时前
Chrome 浏览器插件获取网页 iframe 中的 window 对象
前端·chrome·iframe·postmessage·chrome 插件
m0_748247553 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255024 小时前
前端常用算法集合
前端·算法
真的很上进4 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203984 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
NiNg_1_2344 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1235 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
洗发水很好用6 小时前
uniApp打包H5发布到服务器(docker)
uni-app
滚雪球~6 小时前
npm error code ETIMEDOUT
前端·npm·node.js