uni-app 5+app加载nuve项目web版本出现意外效果
uni-app 5+app加载nuve项目web版本出现意外效果
产品分类
uniapp/App
示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title></title>
<script type="text/javascript">
document.addEventListener('plusready', function() {
window.location.href = "http://172.17.230.47:8085/mes/eamuni/index.html";
});
</script>
</head>
<body>
</body>
</html>
操作步骤:
- 用uvue+vue3创建的uniapp项目,打包成web版本;
- 放置在服务下(http://172.17.230.47:8085/mes/eamuni/index.html可访问)
- 创建5+app空项目,在根index.html中加载(window.location.href = “http://172.17.230.47:8085/mes/eamuni/index.html”;)
预期结果:
- 这种技术路线是不是可以?还是不应该,还是有更好的实现方式?
- 是工程化打包的项目,不能像mui那种每个页面进行拦截,有没有替代方式?
- 断网或者服务器端不能访问时,该怎么给一个提示,在网络恢复时直接进入到原来的页面(是hash打包成web的方式)
- 用5+app打包之后有没有更好的调试方式?
实际结果:
- 用平板中间的手势操作后退,是整个退出应用,原nvue版本的后退无效
- 扫码异常(现在已修改成plus.barcode.create(‘barcode’, [plus.barcode.QR]的方式可以扫码)
- 录音原有的api不可用(应该是需要修改为浏览器版本的录音功能)
- 自定义组件的弹窗
<template><uni-popup ref="popup" type="bottom" background-color="#fff"></uni-popup>
被遮挡,现在修改uni-view[name=‘content’]这个层级和宽度已修改好 - 在断网情况下,直接进入到一个大大自带的error页面而不是新加载的首页
bug描述:
需求背景:内部隔离网络下使用的app,想动态更新服务端的html即可,不想让员工频繁来技术部安装app
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
PC开发环境操作系统 | Mac | HBuilderX |
PC开发环境操作系统版本号 | macos | |
HBuilderX类型 | 正式 | |
HBuilderX版本号 | 4.44 | |
手机系统 | Android | |
手机系统版本号 | Android 8.1 | |
手机厂商 | 小米 | |
手机机型 | MI PAD 4 | |
页面类型 | nvue | |
vue版本 | vue3 | |
打包方式 | 离线 |
第一步:起一个5+空项目,在index.html中写入
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>WebView</title> <script type="text/javascript"> // 确保 plus 对象存在 if (window.plus) { plusReady(); } else { document.addEventListener('plusready', plusReady, false); } function plusReady() {
// 创建 WebView
var webview = plus.webview.create(
'http://192.168.100.102:9005/',
"targetWebview", // WebView ID
{
top: "0px",
bottom: "0px",
width: "100%",
height: "100%"
}
);
webview.show();
// 监听返回按钮事件
plus.key.addEventListener('backbutton', function() {
// 检查 WebView 是否可以返回
webview.canBack(function(e) {
if (e.canBack) {
webview.back(); // WebView 返回上一页
} else {
// 如果不能返回,提示用户是否退出应用
plus.nativeUI.confirm("确定要退出应用吗?", function(e) {
if (e.index == 0) {
plus.runtime.quit();
}
}, "提示", ["确定", "取消"]);
}
});
});
}
</script>
</head>
<body>
</body>
</html>
第二步:发型uniapp(nvue)项目成H5项目拿到项目地址,替换http://192.168.100.102:9005/
注意:需要替换plus环境,如果是纯h5浏览器端则需要换对应的js
扫码需要进行替换:new plus.barcode.Barcode或者plus.barcode.create
录音需要进行替换:在处理uni-app 5+ App加载nuve项目web版本出现意外效果的问题时,首先需要确保几个关键环节的配置和实现是正确的。以下是一个基本的代码示例和配置检查,帮助你定位和解决可能出现的问题。
1. 确认uni-app项目配置
确保manifest.json
中正确配置了5+ App的相关属性,特别是关于nuve的配置。例如:
{
"mp-weixin": {},
"app-plus": {
"usingComponents": true,
"distribute": {
"sdkConfigs": {
"nuve": {
"appid": "your-nuve-appid",
"version": "1.0.0"
}
}
}
}
}
2. 加载nuve项目web版本
在uni-app中加载nuve项目的web版本,通常是通过web-view
组件来实现的。确保web-view
组件的src
属性正确指向了nuve项目的web地址。
<template>
<view>
<web-view :src="nuveUrl"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
nuveUrl: 'https://your-nuve-project-url.com'
};
}
};
</script>
3. 检查网络请求和跨域问题
如果nuve项目的web版本涉及到与后端服务的交互,确保这些请求没有被uni-app或5+ App的安全策略阻止。你可能需要在manifest.json
中配置network
相关的权限。
{
"app-plus": {
"permissions": {
"Request": {}
}
}
}
4. 调试和日志
使用5+ App的开发者工具进行调试,查看控制台输出和网络请求日志,以定位问题所在。例如,检查是否有JS错误、资源加载失败或网络请求被拦截等问题。
5. 示例代码完整性检查
确保所有相关代码文件都已正确引入并初始化。例如,如果使用了Vuex或其他状态管理工具,确保它们已正确配置并在组件中引入。
结论
以上代码和配置示例提供了一个基本的框架,用于检查和解决uni-app 5+ App加载nuve项目web版本时可能出现的意外效果。如果问题依然存在,建议仔细检查nuve项目的web版本本身是否存在问题,或者考虑是否有必要更新uni-app和5+ App的开发框架到最新版本。此外,查阅官方文档和社区论坛也是解决问题的好方法。