HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

swiper组件是怎么自适应高度

新闻/资讯应用模板的swiper组件是怎么自适应高度的?我用HBuilder X 2.7.9 用内置uni-ui的项目模板生成 的项目,使用swiper组件高度无法自适应?????????????

内置uni-ui的项目模板的swiper

新闻/资讯应用模板的swiper

继续阅读 »

新闻/资讯应用模板的swiper组件是怎么自适应高度的?我用HBuilder X 2.7.9 用内置uni-ui的项目模板生成 的项目,使用swiper组件高度无法自适应?????????????

内置uni-ui的项目模板的swiper

新闻/资讯应用模板的swiper

收起阅读 »

uni-app集成leaflet

最近想在uni-app上使用地图功能,不想用自带的地图组件,所以研究了下leaflet做移动端的地图,发现编译到手机上时出现“window.requestAnimationFrame”报错,地图无法呈现,查询了半天无结果,想想应该是uni-app限制了dom操作,便去看uni-app文档,发现需要引入renderjs才能使用,方便记录贴上代码,分享经验

继续阅读 »

最近想在uni-app上使用地图功能,不想用自带的地图组件,所以研究了下leaflet做移动端的地图,发现编译到手机上时出现“window.requestAnimationFrame”报错,地图无法呈现,查询了半天无结果,想想应该是uni-app限制了dom操作,便去看uni-app文档,发现需要引入renderjs才能使用,方便记录贴上代码,分享经验

收起阅读 »

高薪诚聘uniapp开发工程师

诚聘 uniapp开发工程师,
工作地点:深圳福田
工作内容:开发uniapp项目,商城类

有兴趣的可以联系Q:87240

正规公司,签订劳动合同,五险一金。

诚聘 uniapp开发工程师,
工作地点:深圳福田
工作内容:开发uniapp项目,商城类

有兴趣的可以联系Q:87240

正规公司,签订劳动合同,五险一金。

求IM应用专用的聊天列表组件或原生插件

聊天 Runtime 插件

例如微信QQ,在输入消息或收到消息后自动滚动到最后一条消息,下拉加载更多的历史消息,且保持当前的浏览位置,页面不闪动,目前uni-app提供的组件以及插件暂未发现符合IM聊天的专用列表(与普通列表相反的操作,普通列表为上拉加载,IM应用是下拉加载)

例如微信QQ,在输入消息或收到消息后自动滚动到最后一条消息,下拉加载更多的历史消息,且保持当前的浏览位置,页面不闪动,目前uni-app提供的组件以及插件暂未发现符合IM聊天的专用列表(与普通列表相反的操作,普通列表为上拉加载,IM应用是下拉加载)

H5 图片压缩

h5+ uniapp

最近把app转成h5后,发现图片不能自动压缩。现在手机像素高,拍照都是5m左右的,这样的图片上传速度极慢。在社区里找了好久,发现可用的不多,我专门研究了下,分享代码,当前测试点不多,不排除有bug。

test: function(){  
                uni.chooseImage({  
                    count: 1,  
                    sizeType: ['compressed'],   
                    sourceType: ['camera'],  
                    success: async function (res) {  
                        const tempFilePaths = res.tempFilePaths;  

                        let img = '';  
                        /* #ifdef H5 */  
                        img = await this.comprossImage(tempFilePaths[0])  
                        /* #endif */  

                        uni.uploadFile({  
                            url: server + '/....',   
                            filePath: img || tempFilePaths[0],  
                            name: 'file',  
                            success: (uploadFileRes) => {  
                                let json = JSON.parse(uploadFileRes.data);  
                                if(1 ==json.state){  
                                    // 上传成功  
                                }else{  
                                    // 上传失败  
                                }  
                            },  
                            fail: function(err) {  
                                //其它错误  
                            }  
                        });  
                    }  
                });  
            },  
            comprossImage: async function(imgSrc,maxWidth) {  
                if(!imgSrc) return 0;  
                return new Promise((resolve, reject) => {  
                    maxWidth = maxWidth || 1024;/*默认压缩成1024宽*/  
                    uni.getImageInfo({    
                        src: imgSrc,    
                        success(res) {  
                            if(res.width <= maxWidth){/*太小的图片就不压缩了*/  
                                resolve(imgSrc);  
                                return;  
                            }  
                    let img = new Image();    
                    img.src = res.path;    

                     let canvas = document.createElement('canvas');    
                    let scale = res.width / res.height;  

                    let ctx = canvas.getContext('2d');  
                    canvas.width = maxWidth;  
                    canvas.height = maxWidth / scale;  
                    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);  

                    /* 默认图片质量为0.7 */  
                    var quality = 0.7;  
                    /* 回调函数返回base64的值 */  
                    var base64 = canvas.toDataURL('image/jpeg', quality);  

                            resolve(base64);    
                        }    
                    });    
                })    
            },
继续阅读 »

最近把app转成h5后,发现图片不能自动压缩。现在手机像素高,拍照都是5m左右的,这样的图片上传速度极慢。在社区里找了好久,发现可用的不多,我专门研究了下,分享代码,当前测试点不多,不排除有bug。

test: function(){  
                uni.chooseImage({  
                    count: 1,  
                    sizeType: ['compressed'],   
                    sourceType: ['camera'],  
                    success: async function (res) {  
                        const tempFilePaths = res.tempFilePaths;  

                        let img = '';  
                        /* #ifdef H5 */  
                        img = await this.comprossImage(tempFilePaths[0])  
                        /* #endif */  

                        uni.uploadFile({  
                            url: server + '/....',   
                            filePath: img || tempFilePaths[0],  
                            name: 'file',  
                            success: (uploadFileRes) => {  
                                let json = JSON.parse(uploadFileRes.data);  
                                if(1 ==json.state){  
                                    // 上传成功  
                                }else{  
                                    // 上传失败  
                                }  
                            },  
                            fail: function(err) {  
                                //其它错误  
                            }  
                        });  
                    }  
                });  
            },  
            comprossImage: async function(imgSrc,maxWidth) {  
                if(!imgSrc) return 0;  
                return new Promise((resolve, reject) => {  
                    maxWidth = maxWidth || 1024;/*默认压缩成1024宽*/  
                    uni.getImageInfo({    
                        src: imgSrc,    
                        success(res) {  
                            if(res.width <= maxWidth){/*太小的图片就不压缩了*/  
                                resolve(imgSrc);  
                                return;  
                            }  
                    let img = new Image();    
                    img.src = res.path;    

                     let canvas = document.createElement('canvas');    
                    let scale = res.width / res.height;  

                    let ctx = canvas.getContext('2d');  
                    canvas.width = maxWidth;  
                    canvas.height = maxWidth / scale;  
                    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);  

                    /* 默认图片质量为0.7 */  
                    var quality = 0.7;  
                    /* 回调函数返回base64的值 */  
                    var base64 = canvas.toDataURL('image/jpeg', quality);  

                            resolve(base64);    
                        }    
                    });    
                })    
            },
收起阅读 »

uni-push谷歌推送FCM配置指南

fcm unipush

> 文档已迁移至新链接:https://uniapp.dcloud.net.cn/uni-push/google-fcm.html
> 如有疑问,可以单独发贴咨询。

继续阅读 »

> 文档已迁移至新链接:https://uniapp.dcloud.net.cn/uni-push/google-fcm.html
> 如有疑问,可以单独发贴咨询。

收起阅读 »

nvue使用uni-app编译模式引入字体文件

经验分享 引入字体
        created(){  
            const domModule = weex.requireModule('dom')  
            domModule.addRule('fontFace', {  
                'fontFamily': "iconfont",  
                'src': "url('../../static/font/font.ttf')"  
            });  
        }

在css中加入如下样式

.iconfont {  
    font-family: iconfont;  
}

使用方法

<text class="iconfont">&#xe62c;</text>
继续阅读 »
        created(){  
            const domModule = weex.requireModule('dom')  
            domModule.addRule('fontFace', {  
                'fontFamily': "iconfont",  
                'src': "url('../../static/font/font.ttf')"  
            });  
        }

在css中加入如下样式

.iconfont {  
    font-family: iconfont;  
}

使用方法

<text class="iconfont">&#xe62c;</text>
收起阅读 »

HBX Android真机不能运行

安卓真机运行第一次正常,之后真机不能运行

可能是文件相关的问题,就去找manifest.json相关配置,找到一个文件系统相关的权限

关掉之后一切正常
很迷
也不知道为啥
求解答

继续阅读 »

安卓真机运行第一次正常,之后真机不能运行

可能是文件相关的问题,就去找manifest.json相关配置,找到一个文件系统相关的权限

关掉之后一切正常
很迷
也不知道为啥
求解答

收起阅读 »

用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写了一个小程序,新手请大家指教。