在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:uniapp-admin开源软件地址:https://gitee.com/twofloor/uniapp-admin开源软件介绍:uniapp-adminMuti-platform management system for uniapp, H5, Android, IOS, Min Program. 基于uni-app管理系统模板,支持H5、Android、IOS和小程序 uniapp-admin 2.0.0 重磅发布!
在线文档
代码地址一、前言uniapp-admin是基于uni-app开发的管理系统模板。该模板集成了如下的功能:
如果有欠缺的地方,或者有更好的想法,大家可以多多交流,文章最后可以加我。 二、开发环境和生产环境跨域方案
2.1 开发环境
"h5" : { "devServer" : { "port" : 9090, "disableHostCheck" : true, "proxy" : { "/ua/ua-service" : { "target" : "http://localhost:8080", "changeOrigin" : true, "secure" : false, "pathRewrite" : { "^/ua" : "" } }, "/ua-service" : { "target" : "http://localhost:8080", "changeOrigin" : true, "secure" : false } } }, "title" : "uniapp-admin", "router" : { "mode" : "hash", "base" : "/ua" }}
/** * ip地址或域名 */const ipAddress = 'http://localhost:8080'// 文件访问地址const fileAddr = 'http://localhost:8082/fileUpload/'/** * api前缀 */const apiPrefix = '/ua-service'/** * 针对不同平台的baseUrl */const getBaseUrl = () => { // #ifdef H5 return apiPrefix // #endif // #ifndef H5 return ipAddress + apiPrefix // #endif}export default { /** * 针对不同平台的baseUrl */ baseUrl: getBaseUrl(), fileAddr}
// 设置默认配置minRequest.setConfig((config) => { config.baseURL = globalConfig.baseUrl return config}) 2.2 生产环境
配置如下: # 前端访问代理location /ua { alias /root/ua; index index.html index.htm; try_files $uri $uri/ /index.html?/$request_uri;}# 服务端代理,对应开发环境proxylocation ~/ua/ua-service/* { rewrite ^/ua/(.*)$ /$1 break; proxy_pass http://service; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 360000s; proxy_read_timeout 360000s; proxy_send_timeout 360000s;}# 服务端代理,对应开发环境proxylocation ~/ua-service/* { proxy_pass http://service; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 360000s; proxy_read_timeout 360000s; proxy_send_timeout 360000s;} 其中*proxy_pass http://service*的service是配置在nginx的http{}下的后端服务 upstream service { server 127.0.0.1:8080 max_fails=1 fail_timeout=10s;} rewrite ^/ua/(.*)$ /$1 break;是路径替换,第一个参数是正则表达式,$1是正则表达式中第一个括号内容。 三、APP整包升级/更新方案参考文档,uni-app 整包升级/更新方案 ,另外也有,uni-app 资源在线升级/热更新 本项目是采用整包升级更新方案,如下: /** * app整包更新检测 */appUpgrade() { //#ifndef APP-PLUS uni.showToast({ title: '目前只支持Android版本软件更新', icon: 'none' }) //#endif //#ifdef APP-PLUS uni.getSystemInfo({ success: sysInfo => { let platform = sysInfo.platform plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => { // app版本字符串如:1.1.0 // this.appInfo.version = wgtinfo.version // app名称 // this.appInfo.name = wgtinfo.name let params = { appid: plus.runtime.appid, // app整数版本号,如110,一定要用versionCode做判断 version: wgtinfo.versionCode, platform: platform } this.$minApi.findUpgradeApp(params).then(appRes => { if (appRes.appid) { uni.showModal({ title: "下载更新提示", content: appRes.note, showCancel: false, confirmText: '确定', success: sucRes => { if (sucRes.confirm) { plus.runtime.openURL(appRes.url) // uni.downloadFile({ // url: appRes.url, // success: res => {} // }) } } }) } else { uni.showToast({ title: '已经是最新版本了。', icon: 'none' }) } }) }) } }) //#endif} 注意:一定要使用plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) =>()),回调函数返回的wgtinfo对象的versionCode做判断,wgtinfo.version是版本字符串,wgtinfo.name是app应用名称 四、API调用方案核心是调用uni.request,参考代码 request(options = {}) { options.baseURL = options.baseURL || this[config].baseURL options.dataType = options.dataType || this[config].dataType options.url = MinRequest[isCompleteURL](options.url) ? options.url : (options.baseURL + options.url) options.data = options.data options.header = { ...options.header, ...this[config].header } options.method = options.method || this[config].method options = { ...options, ...MinRequest[requestBefore](options) } return new Promise((resolve, reject) => { options.success = function(res) { resolve(MinRequest[requestAfter](res)) } options.fail = function(err) { reject(MinRequest[requestAfter](err)) } uni.request(options) })} 五、消息推送方案另见文章《uni-app消息推送方案》 六、问题解决6.1 怎么获取应用真正的名称和版本信息?一定要使用plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) =>()),回调函数返回的wgtinfo对象的versionCode做判断,wgtinfo.version是版本字符串,wgtinfo.name是app应用名称 6.2 APP端,模板中v-for不能调用方法,如:v-for="xxx in func(xxx)",这种情况下,func方法不会调用。具体原理不太清楚,还请大佬能解释一下不?解决办法:提前将数据格式化好,然后套上模板。 七、后续计划
大家也可以提出想要的模板或功能 八、效果开源不易,且用且珍惜赞助作者 |
请发表评论