HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

用MUI做的影视APP对接苹果CMS

用的技术是mui、H5+、jQuery,数据是对接苹果cms,用户后台是springboot、利用web-view进行视频播放
功能介绍:运营模式(免费、免费需登录、收费)、邀请下级双方获取会员、多条视频解析、播放记录,搜索、分享、意见反馈等功能

用的技术是mui、H5+、jQuery,数据是对接苹果cms,用户后台是springboot、利用web-view进行视频播放
功能介绍:运营模式(免费、免费需登录、收费)、邀请下级双方获取会员、多条视频解析、播放记录,搜索、分享、意见反馈等功能

overrideUrlLoading 拦截web-view打开APP match

wv.overrideUrlLoading({mode:'reject',match:'tbopen://.*'}, function(e){
console.log('reject url: '+e.url);
});

wv.overrideUrlLoading({mode:'reject',match:'tbopen://.*'}, function(e){
console.log('reject url: '+e.url);
});

微擎项目适配转换uni-app项目私活经验分享

小程序转uni_app 微信小程序 uniapp

> 1. 微擎项目在市场上广受欢迎,功能丰富,因此很多人想要将其转化为uni-app项目,以实现多平台运行的能力。
> 2. 在转换过程中,我们确实遇到了不少挑战,但得益于uni-app平台强大的基础能力支持,我们最终都成功解决了这些问题。
> 3. 下面我将分享我们在适配转换过程中的一些思路和经验,希望能对大家有所帮助。

代码结构迁移步骤

  • 我们以适配一个名称为“type”的页面,进行全面讲解
  • 微信小程序页面:type.js type.json type.wxss type.wxml
  • uniapp页面:只需要新建一个页面type.vue,目录层级和小程序保持一致即可。新建页面后,页面中会有三部分template,script,style,系统会自动生成这三部分。
  • 页面映射关系如下
  • 页面迁移结束后,就是进行标签的替换了,小程序的一些标签在uni-app是不识别的,但是整体还是比较简单的,参照下面的表格进行替换就可以了
  • 按照上面的标签替换方案替换完成后,页面基本上就可以进行展示了,再进行页面细节的调试,一个页面基本上就可以出来了,大概平均调试一个页面30分钟左右(根据页面复杂程度定)

迁移过程中遇到的一些“坑”,一起共勉

  • 取页面data值时由“this.data” 改成 “this._data”(备注:具体原因未知,期望知道的大佬讲解下,不胜感激,当初排查这个问题足足花费了3天左右的时间才定位到这个问题)
  • uniapp要求所有data变量提前定义,而微信小程序没有此要求,这块容易出问题。

关于我们

经典文章分享

继续阅读 »

> 1. 微擎项目在市场上广受欢迎,功能丰富,因此很多人想要将其转化为uni-app项目,以实现多平台运行的能力。
> 2. 在转换过程中,我们确实遇到了不少挑战,但得益于uni-app平台强大的基础能力支持,我们最终都成功解决了这些问题。
> 3. 下面我将分享我们在适配转换过程中的一些思路和经验,希望能对大家有所帮助。

代码结构迁移步骤

  • 我们以适配一个名称为“type”的页面,进行全面讲解
  • 微信小程序页面:type.js type.json type.wxss type.wxml
  • uniapp页面:只需要新建一个页面type.vue,目录层级和小程序保持一致即可。新建页面后,页面中会有三部分template,script,style,系统会自动生成这三部分。
  • 页面映射关系如下
  • 页面迁移结束后,就是进行标签的替换了,小程序的一些标签在uni-app是不识别的,但是整体还是比较简单的,参照下面的表格进行替换就可以了
  • 按照上面的标签替换方案替换完成后,页面基本上就可以进行展示了,再进行页面细节的调试,一个页面基本上就可以出来了,大概平均调试一个页面30分钟左右(根据页面复杂程度定)

迁移过程中遇到的一些“坑”,一起共勉

  • 取页面data值时由“this.data” 改成 “this._data”(备注:具体原因未知,期望知道的大佬讲解下,不胜感激,当初排查这个问题足足花费了3天左右的时间才定位到这个问题)
  • uniapp要求所有data变量提前定义,而微信小程序没有此要求,这块容易出问题。

关于我们

经典文章分享

收起阅读 »

写了一个天气类的程序

用uniapp写了一个小程序,新手请大家指教。

用uniapp写了一个小程序,新手请大家指教。

有偿求打离线包 Wap2App 形式开发的。群号:47323557

有偿求打离线包 Wap2App 形式开发的 。

请加QQ群内说需求:47323557

有偿求打离线包 Wap2App 形式开发的 。

请加QQ群内说需求:47323557

分享一下自己写uniapp对接苹果cms的项目历程

uniapp

之前一直用mui写项目
自从uniapp除了以后一直没用过,这次第一次尝试用uniapp写项目,开发过程意外的轻松,而且还包含了weex原生渲染很强大
目前项目完成了98%左右,代码也有待精简和优化,我不分享源码只交流心得,所以伸手党自重
感谢dcloud
感谢ColorUI-UniApp
感谢极简登录注册模板
感谢DLNA投屏,支持IOS和安卓
感谢酷站ui设计师囡囡的楠
下面是演示图

剩下的基本是用户逻辑功能和杂七杂八的页面
最主要的要是下载缓存视频的功能暂且没有思路

继续阅读 »

之前一直用mui写项目
自从uniapp除了以后一直没用过,这次第一次尝试用uniapp写项目,开发过程意外的轻松,而且还包含了weex原生渲染很强大
目前项目完成了98%左右,代码也有待精简和优化,我不分享源码只交流心得,所以伸手党自重
感谢dcloud
感谢ColorUI-UniApp
感谢极简登录注册模板
感谢DLNA投屏,支持IOS和安卓
感谢酷站ui设计师囡囡的楠
下面是演示图

剩下的基本是用户逻辑功能和杂七杂八的页面
最主要的要是下载缓存视频的功能暂且没有思路

收起阅读 »

京东也出小程序了该跟上节奏了

京东小程序

京东也出小程序了,又要跟一波了吧

京东也出小程序了,又要跟一波了吧

电影视频app7.0案例展示分享

播放器

7.2今天发布了,顺便晒晒作品,其实uniapp还是很强大的
有兴趣可以来群里交流 扣扣群 343440607.

继续阅读 »

7.2今天发布了,顺便晒晒作品,其实uniapp还是很强大的
有兴趣可以来群里交流 扣扣群 343440607.

收起阅读 »

plus.BarCode 扫描条码识别率低的问题解决方案

Barcode

这个问题由来已久,可以追数到上世纪....

问题说明:

barcode支持很多类型,二维码和条码
条码的支持在低端手机上只能识别15位以内的条码。可能和相机有关系。

但最近项目里用20位工业条码时,在高配置PAD里会有识别乱码的问题,超过15位不识别。而手机里怎么试怎么好用。

最后解决方案:缩小DOM元素中的宽度和高度大小300px以内,可以提高扫描成功率。很奇葩的问题,百思不得其解。

继续阅读 »

这个问题由来已久,可以追数到上世纪....

问题说明:

barcode支持很多类型,二维码和条码
条码的支持在低端手机上只能识别15位以内的条码。可能和相机有关系。

但最近项目里用20位工业条码时,在高配置PAD里会有识别乱码的问题,超过15位不识别。而手机里怎么试怎么好用。

最后解决方案:缩小DOM元素中的宽度和高度大小300px以内,可以提高扫描成功率。很奇葩的问题,百思不得其解。

收起阅读 »

uni-app v3版本更新常见问题排查

uni_app

uni-app v3版本更新常见问题排查

组件不显示或者功能异常

原因:组件内使用了 onReady,onReady 是页面的生命周期,不应在组件中直接使用,组件中应该使用 mounted 生命周期

解决方法:onReady 改为 mounted

更新组件状态,视图不更新

原因:使用了 vue 无法观测的数组更新方式(如:this.array[0]=object),相关文档

解决方法:改为可以观测的数组更新方式(如:this.array.splice(0,1,object))或者使用 $forceUpdate 强制更新视图(只支持当前组件的数据变更)

使用 setData 报错

原因:vue 不支持 setData 方法

解决方法:直接给数据赋值即可,如:this.setData({a:'a'})改为this.a='a'page.setData({a:'a'})改为page.$vm.a='a'

js 报错:TypeError: null is not an object (evaluating '_vm.xxx.xxx')TypeError: undefined is not an object (evaluating '_vm.xxx.xxx')

原因:模板内访问了未定义数据(null、undefined)的属性

解决方法:数据初始化为对象,或者模板内先判断对象是否存在(如:<test :data="object&&object.data"></test>),或者使用 v-if 判断(如:<test v-if="object" :data="object.data"></test>,不是:<test v-if="object.data" :data="object.data"></test>

js 报错:cid unmatched at view.umd.min.js

原因、解决办法 同上,一般出现这个错误之前会出现上一条错误提示。如果这一哥报错之前没有上一条错误提示,就排查下显示异常的组件,其导入方式是否错误(如:import { test } from './test.vue'

js 报错:Failed to mount component: template or render function not defined.

原因:删除了 main.js 文件内的 App.mpType = 'app'

解决办法:在 main.js 文件内补充上 App.mpType = 'app'

js 报错:undefined is not an object (evaluating 'this.$refs.xxx.xxx')

原因:在错误的时机(如:created 生命周期)获取子组件实例,且不加判断直接调用组件方法

解决办法:在正确的时机(如:mounted 生命周期)获取子组件示例,或者判断组件或者方法是否存在后再调用

js 报错:TypeError: page.onLoad is not a function

原因:获取页面对象后主动调用 onLoad 生命周期

解决方法:调用 vm 实例上的方法,如:page.$vm.xxx

js 报错:undefined is not an object (evaluating 'e.parentNode')

原因:main.js 文件内的 app.$mount 方法内填入了参数(如:app.$mount('#app')

解决方法:去除 app.$mount 方法参数,改回:app.$mount()

js 报错 uni.getUpdateManager is not a function

原因:非小程序端不支持 uni.getUpdateManager 方法

解决方法:使用条件编译包裹相关代码

js 报错 page.$vm.onLoad is not a function

原因:methods 内不能使用和内置生命周期相同的方法名,也不能直接获取到生命周期对应的方法

解决方法:在 methods 内将与内置生命周期同名的方法定义为其他名称

onShow 生命周期获取不到页面传入参数

原因:onShow 生命周期无参数传入

解决方法:改在 onLoad 生命周期获取

使用 uni.createSelectorQuery 报错:page is not ready

原因:在错误的时机(如:onShwo、onLoad)调用 uni.createSelectorQuery

解决方法:改在 onReady 生命周期后获取

图像不显示

原因:使用了 img 标签加载本地图像,img 不再自动转为 image 组件,在 App 目前不支持加载本地文件(后续会优化)

解决方法:将 img 标签改为 image 标签。

img、div 等标签样式异常

原因:template 中标签使用的 img、div 等,style 中写的是 image、view 等

解决方法:标签改为一致的,比如将 template 中的 img 标签改为 image 标签,div 改为 view 标签,或者 style 中统一使用 img、div 等。

横竖屏动态切换后组件或文字比预期显示的大或小

原因:r/upx 根据屏幕宽度计算,切换屏幕方向前后计算的大小不一致

解决方法:固定屏幕方向(相关文档),或者使用其他单位:百分比、rem、vw 等(相关文档

小程序组件库报样式错误

原因:小程序组件内部分压缩后的样式解析错误

解决方法:格式化报错的样式文件

小程序组件库不显示

问题:小程序组件内使用了 <import/><template/>

解决方法:手动修改对应的小程序组件去除 <import/><template/> 使用

组件内监听页面生命周期不生效

问题:组件内不支持直接监听页面生命周期(如:onPageScroll)

解决方法:使用js监听,参考

cover-view、cover-image 被原生组件覆盖

问题:App端 cover-view、cover-image 需要放到原生组件(video、map)内

解决方法: cover-view、cover-image 嵌套在原生组件(video、map)内:<map><cover-view></cover-view><map>

在 js 中导入 css 报错

原因:目前 App 端不支持在 js 中导入 css(后续会优化)

解决方法:改为在对应组件(或页面)的 style 中

使用 instanceof 判断 uni-app 接口返回的数据类型与预期不符

原因:uni-app 接口(如:uni.base64ToArrayBuffer)返回的数据不支持使用 instanceof 判断类型

解决方法:改用其他方式判断类型,如:arrayBuffer instanceof ArrayBuffer改为Object.prototype.toString.call(arrayBuffer)==='[object ArrayBuffer]'

继续阅读 »

uni-app v3版本更新常见问题排查

组件不显示或者功能异常

原因:组件内使用了 onReady,onReady 是页面的生命周期,不应在组件中直接使用,组件中应该使用 mounted 生命周期

解决方法:onReady 改为 mounted

更新组件状态,视图不更新

原因:使用了 vue 无法观测的数组更新方式(如:this.array[0]=object),相关文档

解决方法:改为可以观测的数组更新方式(如:this.array.splice(0,1,object))或者使用 $forceUpdate 强制更新视图(只支持当前组件的数据变更)

使用 setData 报错

原因:vue 不支持 setData 方法

解决方法:直接给数据赋值即可,如:this.setData({a:'a'})改为this.a='a'page.setData({a:'a'})改为page.$vm.a='a'

js 报错:TypeError: null is not an object (evaluating '_vm.xxx.xxx')TypeError: undefined is not an object (evaluating '_vm.xxx.xxx')

原因:模板内访问了未定义数据(null、undefined)的属性

解决方法:数据初始化为对象,或者模板内先判断对象是否存在(如:<test :data="object&&object.data"></test>),或者使用 v-if 判断(如:<test v-if="object" :data="object.data"></test>,不是:<test v-if="object.data" :data="object.data"></test>

js 报错:cid unmatched at view.umd.min.js

原因、解决办法 同上,一般出现这个错误之前会出现上一条错误提示。如果这一哥报错之前没有上一条错误提示,就排查下显示异常的组件,其导入方式是否错误(如:import { test } from './test.vue'

js 报错:Failed to mount component: template or render function not defined.

原因:删除了 main.js 文件内的 App.mpType = 'app'

解决办法:在 main.js 文件内补充上 App.mpType = 'app'

js 报错:undefined is not an object (evaluating 'this.$refs.xxx.xxx')

原因:在错误的时机(如:created 生命周期)获取子组件实例,且不加判断直接调用组件方法

解决办法:在正确的时机(如:mounted 生命周期)获取子组件示例,或者判断组件或者方法是否存在后再调用

js 报错:TypeError: page.onLoad is not a function

原因:获取页面对象后主动调用 onLoad 生命周期

解决方法:调用 vm 实例上的方法,如:page.$vm.xxx

js 报错:undefined is not an object (evaluating 'e.parentNode')

原因:main.js 文件内的 app.$mount 方法内填入了参数(如:app.$mount('#app')

解决方法:去除 app.$mount 方法参数,改回:app.$mount()

js 报错 uni.getUpdateManager is not a function

原因:非小程序端不支持 uni.getUpdateManager 方法

解决方法:使用条件编译包裹相关代码

js 报错 page.$vm.onLoad is not a function

原因:methods 内不能使用和内置生命周期相同的方法名,也不能直接获取到生命周期对应的方法

解决方法:在 methods 内将与内置生命周期同名的方法定义为其他名称

onShow 生命周期获取不到页面传入参数

原因:onShow 生命周期无参数传入

解决方法:改在 onLoad 生命周期获取

使用 uni.createSelectorQuery 报错:page is not ready

原因:在错误的时机(如:onShwo、onLoad)调用 uni.createSelectorQuery

解决方法:改在 onReady 生命周期后获取

图像不显示

原因:使用了 img 标签加载本地图像,img 不再自动转为 image 组件,在 App 目前不支持加载本地文件(后续会优化)

解决方法:将 img 标签改为 image 标签。

img、div 等标签样式异常

原因:template 中标签使用的 img、div 等,style 中写的是 image、view 等

解决方法:标签改为一致的,比如将 template 中的 img 标签改为 image 标签,div 改为 view 标签,或者 style 中统一使用 img、div 等。

横竖屏动态切换后组件或文字比预期显示的大或小

原因:r/upx 根据屏幕宽度计算,切换屏幕方向前后计算的大小不一致

解决方法:固定屏幕方向(相关文档),或者使用其他单位:百分比、rem、vw 等(相关文档

小程序组件库报样式错误

原因:小程序组件内部分压缩后的样式解析错误

解决方法:格式化报错的样式文件

小程序组件库不显示

问题:小程序组件内使用了 <import/><template/>

解决方法:手动修改对应的小程序组件去除 <import/><template/> 使用

组件内监听页面生命周期不生效

问题:组件内不支持直接监听页面生命周期(如:onPageScroll)

解决方法:使用js监听,参考

cover-view、cover-image 被原生组件覆盖

问题:App端 cover-view、cover-image 需要放到原生组件(video、map)内

解决方法: cover-view、cover-image 嵌套在原生组件(video、map)内:<map><cover-view></cover-view><map>

在 js 中导入 css 报错

原因:目前 App 端不支持在 js 中导入 css(后续会优化)

解决方法:改为在对应组件(或页面)的 style 中

使用 instanceof 判断 uni-app 接口返回的数据类型与预期不符

原因:uni-app 接口(如:uni.base64ToArrayBuffer)返回的数据不支持使用 instanceof 判断类型

解决方法:改用其他方式判断类型,如:arrayBuffer instanceof ArrayBuffer改为Object.prototype.toString.call(arrayBuffer)==='[object ArrayBuffer]'

收起阅读 »

uniapp结合安卓原生开发,实现全能扫描王的自动扫描文件边框、剪切纠偏以及二值化等处理

uniapp原生插件 图片加工

估计很多的开发者都会遇到在安卓、ios的app中去集成一些图片处理的功能,那么这篇文章就说明了如何在uniapp中去调用配置了opencv相关依赖的安卓原生方法,并且实现全能扫描王的基本操作,如自动扫描文件边框、剪切纠偏和二值化等处理。

一、目前实现以下功能:
1、在uniapp小程序中写页面,调用安卓原生的方法,将图片路径传递给安卓原生方法;
2、安卓方法取到图片路径后,结合opencv实现对图片的处理操作;
3、处理完成后将输出的图片路径返回给uniapp。

二、实现以上功能的步骤:
1、首先要学会如何在uniapp中调用安卓的原生方法:
这里我是参考的文章:https://ask.dcloud.net.cn/article/36065,仔细研究他的文章应该是能够解决问题的,感谢。
值得注意的是,可能有的开发者会和我一样在uniapp中本地打包后会发现没有pages这个文件夹

那是因为uniapp中需要有一个.nvue结尾的页面

2、然后需要解决在安卓项目中如何去配置opencv的相关依赖:
这里是我实现这个步骤参考的文章:https://blog.csdn.net/sakurakider/article/details/80470358,
好好研究这篇文章,基本也是能够解决问题的,感谢。

这其中可能你会遇到一个问题,那就是下载opencv相关的东西的时候,如果你没翻墙,真的是巨慢,
考虑到这些,我将百度网盘的资料也贴在这里:https://blog.csdn.net/oMoDao1/article/details/80276834,

3、如果现在你已经能够成功在uniapp中调用安卓原生的方法,并且将在你的安卓项目中配置好了opencv
的相关依赖,那么恭喜你,你可以来到第三步了。
这一步要做的工作是将图片处理的逻辑写入到你的安卓项目中,当然这个逻辑也不是很简单,所以还是老
办法,在这个贴子中:https://blog.csdn.net/rwzhang/article/details/85386428,已经实现了对图片的处理实现。

这个作者是用eclipse创建的maven项目实现的,不过没有关系,你可以直接将他的逻辑拷贝到你的安卓项目中,
至于怎么拷贝,那我想这是所有程序员应该都具备的技能了吧。

三、结尾
如果你有这方面需求,但是又觉得文章没有写清楚的可以直接在下面留言,看到了都会回的。
文章全部内容为亲自实现的经验,希望要采用的开发者们,一旦尝试就不要轻易的怀疑,因为实现过程肯定会遇到各种各样的问题的,稍微坚持一下可能问题就解决了,一旦怀疑就离绕路不远了。

app界面:

被处理图片:

处理后效果:

继续阅读 »

估计很多的开发者都会遇到在安卓、ios的app中去集成一些图片处理的功能,那么这篇文章就说明了如何在uniapp中去调用配置了opencv相关依赖的安卓原生方法,并且实现全能扫描王的基本操作,如自动扫描文件边框、剪切纠偏和二值化等处理。

一、目前实现以下功能:
1、在uniapp小程序中写页面,调用安卓原生的方法,将图片路径传递给安卓原生方法;
2、安卓方法取到图片路径后,结合opencv实现对图片的处理操作;
3、处理完成后将输出的图片路径返回给uniapp。

二、实现以上功能的步骤:
1、首先要学会如何在uniapp中调用安卓的原生方法:
这里我是参考的文章:https://ask.dcloud.net.cn/article/36065,仔细研究他的文章应该是能够解决问题的,感谢。
值得注意的是,可能有的开发者会和我一样在uniapp中本地打包后会发现没有pages这个文件夹

那是因为uniapp中需要有一个.nvue结尾的页面

2、然后需要解决在安卓项目中如何去配置opencv的相关依赖:
这里是我实现这个步骤参考的文章:https://blog.csdn.net/sakurakider/article/details/80470358,
好好研究这篇文章,基本也是能够解决问题的,感谢。

这其中可能你会遇到一个问题,那就是下载opencv相关的东西的时候,如果你没翻墙,真的是巨慢,
考虑到这些,我将百度网盘的资料也贴在这里:https://blog.csdn.net/oMoDao1/article/details/80276834,

3、如果现在你已经能够成功在uniapp中调用安卓原生的方法,并且将在你的安卓项目中配置好了opencv
的相关依赖,那么恭喜你,你可以来到第三步了。
这一步要做的工作是将图片处理的逻辑写入到你的安卓项目中,当然这个逻辑也不是很简单,所以还是老
办法,在这个贴子中:https://blog.csdn.net/rwzhang/article/details/85386428,已经实现了对图片的处理实现。

这个作者是用eclipse创建的maven项目实现的,不过没有关系,你可以直接将他的逻辑拷贝到你的安卓项目中,
至于怎么拷贝,那我想这是所有程序员应该都具备的技能了吧。

三、结尾
如果你有这方面需求,但是又觉得文章没有写清楚的可以直接在下面留言,看到了都会回的。
文章全部内容为亲自实现的经验,希望要采用的开发者们,一旦尝试就不要轻易的怀疑,因为实现过程肯定会遇到各种各样的问题的,稍微坚持一下可能问题就解决了,一旦怀疑就离绕路不远了。

app界面:

被处理图片:

处理后效果:

收起阅读 »

3年多前端开发经验,用mui+5+实战两年多时间,做过多款APP,对5+的问题还是有自己深刻的理解的,做过两年多5+ 的开发,从证书生成到打包app

招聘 求职

性别:男

目前已经搞了半年多flutter和UNI-app开发
目前正准备找一家主做app和网站开发的公司,个人偏向于移动端,兼职也行毕竟疫情期间
前端开发,有兴趣的可以加我1963534590

性别:男

目前已经搞了半年多flutter和UNI-app开发
目前正准备找一家主做app和网站开发的公司,个人偏向于移动端,兼职也行毕竟疫情期间
前端开发,有兴趣的可以加我1963534590