HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

numbox 数字输入框 设置 data-numbox-min 大于 0 按减键到最小值获取不到值的问题

numbox 数字输入框

今天用了下 mui 自带的 numbox 数字输入框,发现设置了最小值 data-numbox-min=“1”,然后测试点击减键到最小值时获取不到值,但是 input 的值有正常改变,而减键也正常灰色被 disabled 了,却无法获取到改变后的值。
于是,想了想,还是去分析下 mui.js ,发现了这段代码:

                if (self.options.min != null && !isNaN(self.options.min) && val <= parseInt(self.options.min)) {  
                    val = self.options.min;  
                    self.minus.disabled = true;  
                } else {  
                    self.minus.disabled = false;  
                }

看似这段代码没有问题。val = self.options.min; 是已经等于新值了,而且 val <= parseInt(self.options.min) 时也 self.minus.disabled = true; 正常屏蔽减键了。于是又想了下,是不是 self.minus.disabled = true; 速度太快导致 self.input.value = val; 没有优先获取到值呢?
突发奇想,将 self.minus.disabled = true; 延迟设置:

                if (self.options.min != null && !isNaN(self.options.min) && val <= parseInt(self.options.min)) {  
                    val = self.options.min;  
                    setTimeout(function (){  
                        self.minus.disabled = true;  
                    }, 100); //怕没效果,可适时加大延迟时间  
                } else {  
                    self.minus.disabled = false;  
                }

凭着试一试的心理,然后测试了下,结果...OK!菜鸟的方法,分享给大家。

继续阅读 »

今天用了下 mui 自带的 numbox 数字输入框,发现设置了最小值 data-numbox-min=“1”,然后测试点击减键到最小值时获取不到值,但是 input 的值有正常改变,而减键也正常灰色被 disabled 了,却无法获取到改变后的值。
于是,想了想,还是去分析下 mui.js ,发现了这段代码:

                if (self.options.min != null && !isNaN(self.options.min) && val <= parseInt(self.options.min)) {  
                    val = self.options.min;  
                    self.minus.disabled = true;  
                } else {  
                    self.minus.disabled = false;  
                }

看似这段代码没有问题。val = self.options.min; 是已经等于新值了,而且 val <= parseInt(self.options.min) 时也 self.minus.disabled = true; 正常屏蔽减键了。于是又想了下,是不是 self.minus.disabled = true; 速度太快导致 self.input.value = val; 没有优先获取到值呢?
突发奇想,将 self.minus.disabled = true; 延迟设置:

                if (self.options.min != null && !isNaN(self.options.min) && val <= parseInt(self.options.min)) {  
                    val = self.options.min;  
                    setTimeout(function (){  
                        self.minus.disabled = true;  
                    }, 100); //怕没效果,可适时加大延迟时间  
                } else {  
                    self.minus.disabled = false;  
                }

凭着试一试的心理,然后测试了下,结果...OK!菜鸟的方法,分享给大家。

收起阅读 »

关于离线打包的基本权限问题

权限配置

本来做的APP不需要很多权限,结果离线打包出来还是提示一堆权限,前前后后调试了一整天,发现lib.5plus.base-release.aar这个基本包居然已经包含了读取通话记录,发送短信,读取联系人,录音,相机等权限,而把项目提交到dcloud的云打包则没这个问题,说实话MUI入门简单,但是很多地方给开发者的印象很不友好,比如hbuider云打包默认选择了加入广告联盟,不小心点错了想退出还得实名认证,退出还有时间限制。。。简直无语,这样的营销和技术只能做三四流APP的技术选型,格局太小。

继续阅读 »

本来做的APP不需要很多权限,结果离线打包出来还是提示一堆权限,前前后后调试了一整天,发现lib.5plus.base-release.aar这个基本包居然已经包含了读取通话记录,发送短信,读取联系人,录音,相机等权限,而把项目提交到dcloud的云打包则没这个问题,说实话MUI入门简单,但是很多地方给开发者的印象很不友好,比如hbuider云打包默认选择了加入广告联盟,不小心点错了想退出还得实名认证,退出还有时间限制。。。简直无语,这样的营销和技术只能做三四流APP的技术选型,格局太小。

收起阅读 »

郑州app制作公司开发app软件的攻略是什么

移动APP

  郑州app制作公司一般开发一款app的主要技能和开发攻略是什么呢?很多投资者因为不了解app开发流程,所以认为开发报价贵,那么下面就来跟大家详细的讲解一款app开发具体流程和主要技能吧。

  1、app开发第一式:要掌握良好的产品技能,和用户体验技能,拥有这些技能之后,才会画出来相关的产品原型,和用户的使用流程,因此也就是说,开发app第一步就是它的产品原型规划与形成。

  2、app开发第二式 : 要掌握网页设计的技能,通过第一招制作出来的产品原型,进行app主要功能的效果图设计,和其他主要界面构思与设计。

  3、app开发第三式:是策划和产品预估的技能,同样这也是一个不断构思与推敲的过程。在制作app之前,必须要前期进行沟通,初步表明此款app要实现的效果,以及从产品体验和用户体验两方面对制作工期进行评估。

  4、app开发第四式:app后台程序开发的技能,在项目评估结束后,就进入研发阶段。经过开发人员的研发。研发的同时还要把申请上线的时间留出来,这样就可以实现开发与运营同步进行。(由于我们今天主要讲的是开发的技能,所以运营不做过多的解释)

  5、app开发第五式:app开发测试技能。产品开发基本成型后,我们的app就将正式进入内部测试阶段。只有内部测试合格,并确认没有严重报错之后,才可以开始着手上线公测的相关工作。

  6app开发第七式:各大应用市场的提交下载技能,app选定好服务器以后app就可以正式上线。在提交app到各大市场时候值得注意的是,有些平台审核一般情况下需要一个星期左右时间,而大多数应用平台市场一般审核较快,大多需要3天左右的时间即可。

  开发一个好的app除了要有强大的资金实力外,还要有产品,设计、策划、开发、测试、分析、提交下载等七项技能,只有熟练掌握这七项技能,我们才能开发出来一个不论功能、界面、还是用户体验都非常完美的app产品。
本文由专业的郑州app开发公司燚轩科技(appsaa.com)整理发布,如需转载请注明出处。

继续阅读 »

  郑州app制作公司一般开发一款app的主要技能和开发攻略是什么呢?很多投资者因为不了解app开发流程,所以认为开发报价贵,那么下面就来跟大家详细的讲解一款app开发具体流程和主要技能吧。

  1、app开发第一式:要掌握良好的产品技能,和用户体验技能,拥有这些技能之后,才会画出来相关的产品原型,和用户的使用流程,因此也就是说,开发app第一步就是它的产品原型规划与形成。

  2、app开发第二式 : 要掌握网页设计的技能,通过第一招制作出来的产品原型,进行app主要功能的效果图设计,和其他主要界面构思与设计。

  3、app开发第三式:是策划和产品预估的技能,同样这也是一个不断构思与推敲的过程。在制作app之前,必须要前期进行沟通,初步表明此款app要实现的效果,以及从产品体验和用户体验两方面对制作工期进行评估。

  4、app开发第四式:app后台程序开发的技能,在项目评估结束后,就进入研发阶段。经过开发人员的研发。研发的同时还要把申请上线的时间留出来,这样就可以实现开发与运营同步进行。(由于我们今天主要讲的是开发的技能,所以运营不做过多的解释)

  5、app开发第五式:app开发测试技能。产品开发基本成型后,我们的app就将正式进入内部测试阶段。只有内部测试合格,并确认没有严重报错之后,才可以开始着手上线公测的相关工作。

  6app开发第七式:各大应用市场的提交下载技能,app选定好服务器以后app就可以正式上线。在提交app到各大市场时候值得注意的是,有些平台审核一般情况下需要一个星期左右时间,而大多数应用平台市场一般审核较快,大多需要3天左右的时间即可。

  开发一个好的app除了要有强大的资金实力外,还要有产品,设计、策划、开发、测试、分析、提交下载等七项技能,只有熟练掌握这七项技能,我们才能开发出来一个不论功能、界面、还是用户体验都非常完美的app产品。
本文由专业的郑州app开发公司燚轩科技(appsaa.com)整理发布,如需转载请注明出处。

收起阅读 »

hbuilder不能识别真机

我都服了,新版的hbuilderx不能正常识别真机;而老版hbuilder能够识别真机,啥情况,hbuilderx就是不能真机调试吗?

我都服了,新版的hbuilderx不能正常识别真机;而老版hbuilder能够识别真机,啥情况,hbuilderx就是不能真机调试吗?

MUI APP基于mui-scroll区域滚动的上滑顶部悬停IOS&Android不完全解决方案

scroll

前言:该解决方案是针对于需要实现顶部菜单上滑悬停且使用mui-scroll区域滚定无法获取到scroll.y或者scroll.y=0的情况,目前在安卓8以及IOS11系统上测试通过,性能表现良好。

贴码如下:

CSS

.brand-store-bar.dock-header-bar{position: fixed;top: 44px;z-index: 99;margin-top: 0;}  
.brand-bar-wrapper{height: 40px;}

HTML DOM结构

<div class="mui-content mui-scroll-wrapper" id="refreshContainer">  
    <div class="mui-scroll">  
          ...  
              <div class="brand-bar-wrapper">  
        <div id="tab" class="brand-store-bar mui-slider-indicator mui-segmented-control mui-segmented-control-inverted mui-segmented-control-negative">  
            <a class="mui-control-item mui-active" >菜单项目1</a>  
            <a class="mui-control-item" >菜单项目2</a>  
        </div>  
    </div>  
</div>

JS

 var dockHeader = function(){  

                var wrapper         = mui('#refreshContainer')[0],  
                    barWrapper      = mui('.brand-bar-wrapper')[0],  
                    brandBar        = mui('#tab')[0],  
                    scroll          = mui('#refreshContainer').scroll();  

                //顶部悬停  
                var dock = function(){  
                    if (!brandBar.classList.contains('dock-header-bar')) {  
                        wrapper.appendChild(brandBar);  
                        brandBar.classList.add('dock-header-bar');  
                    }  

                }  

                //复原  
                var reset = function(){  
                    if (brandBar.classList.contains('dock-header-bar')) {  
                        barWrapper.appendChild(brandBar);  
                        brandBar.classList.remove('dock-header-bar');  
                    }  
                }  

                 //安卓停靠方式  
                var androidDock = function(){  
                    document.addEventListener('scroll', function(e) {  
                        window.pageYOffset > barWrapper.offsetTop ? dock() : reset();  
                    });  
                }  

                //IOS停靠方式  
                var iosDock = function(){  
                    wrapper.addEventListener('scroll', function(e) {  
                        scroll.y < -barWrapper.offsetTop ? dock() : reset();  
                    }, false);  
                }  

                //准备执行条件  
                var init = function(){  

                    if (mui.os.ios) {  
                        iosDock();  
                    }else{  
                        //安卓系统禁止系统滚动条  
                        document.body.addEventListener('touchmove', function (event) {  
                            event.stopPropagation();  
                        }, false);  
                        androidDock();  
                    }  
                }  

                init();  
            }
继续阅读 »

前言:该解决方案是针对于需要实现顶部菜单上滑悬停且使用mui-scroll区域滚定无法获取到scroll.y或者scroll.y=0的情况,目前在安卓8以及IOS11系统上测试通过,性能表现良好。

贴码如下:

CSS

.brand-store-bar.dock-header-bar{position: fixed;top: 44px;z-index: 99;margin-top: 0;}  
.brand-bar-wrapper{height: 40px;}

HTML DOM结构

<div class="mui-content mui-scroll-wrapper" id="refreshContainer">  
    <div class="mui-scroll">  
          ...  
              <div class="brand-bar-wrapper">  
        <div id="tab" class="brand-store-bar mui-slider-indicator mui-segmented-control mui-segmented-control-inverted mui-segmented-control-negative">  
            <a class="mui-control-item mui-active" >菜单项目1</a>  
            <a class="mui-control-item" >菜单项目2</a>  
        </div>  
    </div>  
</div>

JS

 var dockHeader = function(){  

                var wrapper         = mui('#refreshContainer')[0],  
                    barWrapper      = mui('.brand-bar-wrapper')[0],  
                    brandBar        = mui('#tab')[0],  
                    scroll          = mui('#refreshContainer').scroll();  

                //顶部悬停  
                var dock = function(){  
                    if (!brandBar.classList.contains('dock-header-bar')) {  
                        wrapper.appendChild(brandBar);  
                        brandBar.classList.add('dock-header-bar');  
                    }  

                }  

                //复原  
                var reset = function(){  
                    if (brandBar.classList.contains('dock-header-bar')) {  
                        barWrapper.appendChild(brandBar);  
                        brandBar.classList.remove('dock-header-bar');  
                    }  
                }  

                 //安卓停靠方式  
                var androidDock = function(){  
                    document.addEventListener('scroll', function(e) {  
                        window.pageYOffset > barWrapper.offsetTop ? dock() : reset();  
                    });  
                }  

                //IOS停靠方式  
                var iosDock = function(){  
                    wrapper.addEventListener('scroll', function(e) {  
                        scroll.y < -barWrapper.offsetTop ? dock() : reset();  
                    }, false);  
                }  

                //准备执行条件  
                var init = function(){  

                    if (mui.os.ios) {  
                        iosDock();  
                    }else{  
                        //安卓系统禁止系统滚动条  
                        document.body.addEventListener('touchmove', function (event) {  
                            event.stopPropagation();  
                        }, false);  
                        androidDock();  
                    }  
                }  

                init();  
            }
收起阅读 »

Doodoo.js 发布 1.1.0,Koa.js+ Nuxt.js 最佳实践

node node.js nodejs

doodoo.js发布1.1.0 -- 中文最佳实践Node.js Web快速开发框架,支持Koa.js, Express.js中间件。包含多项功能改进,及Bug修复。

更新内容:

1.【新增】新增支持.js7格式文件
2.【新增】新增支持redis密码设置
3.【更新】更新默认不连接mysql
4.【新增】新增支持mongodb数据库
5.【新增】新增支持设置api路由前缀
6.【移除】移除默认static静态服务器
7.【新增】新增static插件
8.【新增】新增自定义plugin
9.【新增】新增webhook插件,支持gogs,gitlab,github
10.【新增】新增方法获取环境配置项

使用手册
Doodoo.js使用手册:https://github.com/doodooke/doodoo.js/blob/master/docs/README.md

问题反馈
在使用中有任何问题,请使用以下联系方式联系我们

EMAIL: 786699892@qq.com
码云: https://gitee.com/doodooke/doodoo.js

官网
多多客Doodooke小程序:https://www.doodooke.com

继续阅读 »

doodoo.js发布1.1.0 -- 中文最佳实践Node.js Web快速开发框架,支持Koa.js, Express.js中间件。包含多项功能改进,及Bug修复。

更新内容:

1.【新增】新增支持.js7格式文件
2.【新增】新增支持redis密码设置
3.【更新】更新默认不连接mysql
4.【新增】新增支持mongodb数据库
5.【新增】新增支持设置api路由前缀
6.【移除】移除默认static静态服务器
7.【新增】新增static插件
8.【新增】新增自定义plugin
9.【新增】新增webhook插件,支持gogs,gitlab,github
10.【新增】新增方法获取环境配置项

使用手册
Doodoo.js使用手册:https://github.com/doodooke/doodoo.js/blob/master/docs/README.md

问题反馈
在使用中有任何问题,请使用以下联系方式联系我们

EMAIL: 786699892@qq.com
码云: https://gitee.com/doodooke/doodoo.js

官网
多多客Doodooke小程序:https://www.doodooke.com

收起阅读 »

力谱云:成功开发APP后,如何通过5大环节打通APP运营路

5+App开发

众所周知,移动互联网的流量犹如聚宝盆。许多用户,好不容易完成了> 手机APP开发制作**,却苦无APP运营经验,束手无策?如果您完全没有这方面的经验,那么跟着力谱云小编,咱们来学学如何通过5大步骤,包圆您的APP运营新手路吧!
首先,我们要明白APP就是一个流量入口,而我们所有的APP运营相关工作,都是为了“拉新、促活、留存”而存在的,简单地说,圈住用户是最大的目标!
其次,在这个基础上,你必须清楚定位自己的用户群。
而为了更好地完成这个目标,我们可以从内容、用户、活动、产品、数据等5大环节入手。
内容运营,引流增信赖
内容运营,是做APP运营中最为基础的一部分。这是一个内容付费时代崛起的时刻,这也意味着当前的内容价值,对互联网用户群的吸引力。因此,内容做得好,就是一个很好的引流工具,可以有效增长APP用户量。
而做内容运营,最大的关键点在于,你的内容必须有价值,而非单纯的推销与介绍。其中,情感类、价值观的引入,更能提高用户的信赖度与友善度,并平台品牌影响力。在形式方面,也需要花样百出,除了文字与图片类,目前,直播与短视频,在内容输出上,更是引流不少。
用户运营,建立桥梁
用户运营,主要需要弄明白用户想从你的APP中得到什么?简单地说,就是弄明白用户需求与痛点。那么,如何通过有效手段,持续性抓痛点,促进转化?
简单地说,可以通过建立用户社群、用户反馈渠道、追踪评价等方式,通过获知用户反馈,进行内容、产品、APP功能等方面的调整,进行进一步的优化提升。
活动运营,增粉见效快
活动运营经营的好,可以为线上APP运营,增粉不少。并且,一场让用户收获满满的活动,则可以为APP带来无数的粉丝与关注量。
而想要举办一场成功的活动,需要运营者对产品和用户有较深的理解,在贴合产品的基础上,重点打入用户痛点问题,才能抓住有效的可转化的用户。
产品运营,运营的根本
毫不夸张的说,APP运营必须是围绕产品运营进行展开的。产品不得用户心,那么APP运营得再好,也无法提升转化量,无法真正打开销售渠道。总体来说,产品运营要以用户体验为主,并且运营者对产品必须有清晰的定位认知。
数据运营,精准营销为王道首选
互联网时代,如果没有数据分析保驾护航,上一刻,流量可能冲到飞起,下一刻,用户就跑光也有很大可能。说了这么说,无非是告诉你,没有数据的运营,纯粹是瞎猫碰上死耗子,是瞎搞。
而基于APP用户群体数据,你可以了解到用户的性别、年龄、地域、手机型号等信息,甚至在此基础上可以描绘出用户画像,进而分析消费行为等,可以让你了解用户最喜欢在什么版块活跃,在哪个渠道的转化率更高,在支付过程中,哪个环节有卡顿?通过查看用户使用APP的活跃量、留存率等等,可以分析出用户是为什么离开你的APP,进而进行APP的优化、产品调整等。
漫漫运营路,力谱云陪您一路成长
想要做好线上APP运营,并非是一朝一夕的工作量。只要APP生命不息,运营工作也无法停息下来。目前,力谱云平台已向各大企业用户,提供了一站式的移动商业解决方案,从APP研发到APP运营,我们始终支持。
企业通过力谱云平台,可使用有效的营销功能(文章、拼团…),以及大数据分析能力,进一步精准化APP运营方针战略,也可以节省许多运营方面的人力成本与技术成本。让您的移动蓝海之行,更省钱、省心、省力,一直是力谱云服务企业用户的初衷。
期待,在漫漫APP运营长路之中,我们能与您一路同行,陪伴您一路成长。

继续阅读 »

众所周知,移动互联网的流量犹如聚宝盆。许多用户,好不容易完成了> 手机APP开发制作**,却苦无APP运营经验,束手无策?如果您完全没有这方面的经验,那么跟着力谱云小编,咱们来学学如何通过5大步骤,包圆您的APP运营新手路吧!
首先,我们要明白APP就是一个流量入口,而我们所有的APP运营相关工作,都是为了“拉新、促活、留存”而存在的,简单地说,圈住用户是最大的目标!
其次,在这个基础上,你必须清楚定位自己的用户群。
而为了更好地完成这个目标,我们可以从内容、用户、活动、产品、数据等5大环节入手。
内容运营,引流增信赖
内容运营,是做APP运营中最为基础的一部分。这是一个内容付费时代崛起的时刻,这也意味着当前的内容价值,对互联网用户群的吸引力。因此,内容做得好,就是一个很好的引流工具,可以有效增长APP用户量。
而做内容运营,最大的关键点在于,你的内容必须有价值,而非单纯的推销与介绍。其中,情感类、价值观的引入,更能提高用户的信赖度与友善度,并平台品牌影响力。在形式方面,也需要花样百出,除了文字与图片类,目前,直播与短视频,在内容输出上,更是引流不少。
用户运营,建立桥梁
用户运营,主要需要弄明白用户想从你的APP中得到什么?简单地说,就是弄明白用户需求与痛点。那么,如何通过有效手段,持续性抓痛点,促进转化?
简单地说,可以通过建立用户社群、用户反馈渠道、追踪评价等方式,通过获知用户反馈,进行内容、产品、APP功能等方面的调整,进行进一步的优化提升。
活动运营,增粉见效快
活动运营经营的好,可以为线上APP运营,增粉不少。并且,一场让用户收获满满的活动,则可以为APP带来无数的粉丝与关注量。
而想要举办一场成功的活动,需要运营者对产品和用户有较深的理解,在贴合产品的基础上,重点打入用户痛点问题,才能抓住有效的可转化的用户。
产品运营,运营的根本
毫不夸张的说,APP运营必须是围绕产品运营进行展开的。产品不得用户心,那么APP运营得再好,也无法提升转化量,无法真正打开销售渠道。总体来说,产品运营要以用户体验为主,并且运营者对产品必须有清晰的定位认知。
数据运营,精准营销为王道首选
互联网时代,如果没有数据分析保驾护航,上一刻,流量可能冲到飞起,下一刻,用户就跑光也有很大可能。说了这么说,无非是告诉你,没有数据的运营,纯粹是瞎猫碰上死耗子,是瞎搞。
而基于APP用户群体数据,你可以了解到用户的性别、年龄、地域、手机型号等信息,甚至在此基础上可以描绘出用户画像,进而分析消费行为等,可以让你了解用户最喜欢在什么版块活跃,在哪个渠道的转化率更高,在支付过程中,哪个环节有卡顿?通过查看用户使用APP的活跃量、留存率等等,可以分析出用户是为什么离开你的APP,进而进行APP的优化、产品调整等。
漫漫运营路,力谱云陪您一路成长
想要做好线上APP运营,并非是一朝一夕的工作量。只要APP生命不息,运营工作也无法停息下来。目前,力谱云平台已向各大企业用户,提供了一站式的移动商业解决方案,从APP研发到APP运营,我们始终支持。
企业通过力谱云平台,可使用有效的营销功能(文章、拼团…),以及大数据分析能力,进一步精准化APP运营方针战略,也可以节省许多运营方面的人力成本与技术成本。让您的移动蓝海之行,更省钱、省心、省力,一直是力谱云服务企业用户的初衷。
期待,在漫漫APP运营长路之中,我们能与您一路同行,陪伴您一路成长。

收起阅读 »

uniapp与vue-i18n实现国际化多语言

i18n uniapp 国际化 多语言

踩了很多坑,终于捣鼓出来了。

main.js

import Vue from 'vue'  
import App from './App'  
import VueI18n from 'vue-i18n'  

Vue.use(VueI18n)  
Vue.config.productuinTip = false  

const i18n = new VueI18n({  
  locale: 'en-US',  
  messages: {  
    'en-US': {  
      index: {  
        invite: 'Invite',  
        game: 'Game'  
      }  
    },  
    'zh-CN': {  
      index: {  
        invite: '邀请',  
        game: '游戏'  
      }  
    }  
  }  
})  

Vue.prototype._i18n = i18n  
App.mpType = 'app'  

const app = new Vue({  
  i18n,  
  ...App  
})  
app.$mount()

uniapp 不支持在取值表达式中直接调方法,因此,$t方法不可用,所以通过计算属性的方式:

index.vue

<template>  
  <view class="uni-content">  
    <text>{{ i18n.invite }}</text>  
    <text>{{ i18n.game }}</text>  
  </view>  
</template>  

<script>  
export default {  
  computed: {  
    i18n () {  
      return this.$t('index')  
    }  
  }  
}  
</script>  

<style>  
</style>

更多国际化参考https://ask.dcloud.net.cn/article/35872

继续阅读 »

踩了很多坑,终于捣鼓出来了。

main.js

import Vue from 'vue'  
import App from './App'  
import VueI18n from 'vue-i18n'  

Vue.use(VueI18n)  
Vue.config.productuinTip = false  

const i18n = new VueI18n({  
  locale: 'en-US',  
  messages: {  
    'en-US': {  
      index: {  
        invite: 'Invite',  
        game: 'Game'  
      }  
    },  
    'zh-CN': {  
      index: {  
        invite: '邀请',  
        game: '游戏'  
      }  
    }  
  }  
})  

Vue.prototype._i18n = i18n  
App.mpType = 'app'  

const app = new Vue({  
  i18n,  
  ...App  
})  
app.$mount()

uniapp 不支持在取值表达式中直接调方法,因此,$t方法不可用,所以通过计算属性的方式:

index.vue

<template>  
  <view class="uni-content">  
    <text>{{ i18n.invite }}</text>  
    <text>{{ i18n.game }}</text>  
  </view>  
</template>  

<script>  
export default {  
  computed: {  
    i18n () {  
      return this.$t('index')  
    }  
  }  
}  
</script>  

<style>  
</style>

更多国际化参考https://ask.dcloud.net.cn/article/35872

收起阅读 »

为了在Mac下使用HBuilderX,终于把区分大小写的磁盘格式换成不区分的了。累死了。

bug待确认

HBuilderX 在区分大小写的格式下不能安装,今天累死累活,经过多次试验,终于无损地把APFS区分大小写的格式转换成不区分的了。终于可以美美地用上HBuilderX了。

顺便问一下,社区帐号在哪修改密码啊?设置里没找到。。。

HBuilderX 在区分大小写的格式下不能安装,今天累死累活,经过多次试验,终于无损地把APFS区分大小写的格式转换成不区分的了。终于可以美美地用上HBuilderX了。

顺便问一下,社区帐号在哪修改密码啊?设置里没找到。。。

android native判断是否有定位权限

Native.JS

/**  
 * 判断是否有定位权限  android在23之后有动态获取权限方法23之下需要抓异常去判断是否开启  
 */  
Utils.prototype.getLocationPermission = function () {  
  var main = plus.android.runtimeMainActivity();  
  var Build = plus.android.importClass("android.os.Build");  
  var Manifest = plus.android.importClass("android.Manifest");  
  var PackageManager = plus.android.importClass("android.content.pm.PackageManager");  
  //上面三个导入android的类  

  var Permission = Manifest.permission;  
  var VERSION = Build.VERSION;  
  var VERSION_CODES = Build.VERSION_CODES;  
  //Permission.ACCESS_FINE_LOCATION对应定位的权限。  

  var isCheck = Permission.ACCESS_FINE_LOCATION;  
  var pkName = main.getPackageName();  
  var packageManager = main.getPackageManager();  
  console.log(isCheck);  
  var GRANTED = '';  
  //android6.0以上可以动态判断是否开启权限 6.0对应的是android 23版本 VERSION_CODES.M  

  if (VERSION.SDK_INT >= VERSION_CODES.M) {  
    GRANTED = plus.android.invoke(main, 'checkSelfPermission', isCheck);  
    alert(GRANTED);  
    if (GRANTED == PackageManager.PERMISSION_DENIED) {  
      console.log('没开启定位权限');  
    } else {  
      console.log('启定位权限');  
    }  
  } else {  
    GRANTED = plus.android.invoke(packageManager, 'checkPermission', isCheck, pkName);  
    alert(GRANTED);  
    if (GRANTED == PackageManager.PERMISSION_DENIED) {  
      console.log('没开启定位权限');  
    } else {  
      console.log('启定位权限');  
    }  
  }  
}

android代码

继续阅读 »

/**  
 * 判断是否有定位权限  android在23之后有动态获取权限方法23之下需要抓异常去判断是否开启  
 */  
Utils.prototype.getLocationPermission = function () {  
  var main = plus.android.runtimeMainActivity();  
  var Build = plus.android.importClass("android.os.Build");  
  var Manifest = plus.android.importClass("android.Manifest");  
  var PackageManager = plus.android.importClass("android.content.pm.PackageManager");  
  //上面三个导入android的类  

  var Permission = Manifest.permission;  
  var VERSION = Build.VERSION;  
  var VERSION_CODES = Build.VERSION_CODES;  
  //Permission.ACCESS_FINE_LOCATION对应定位的权限。  

  var isCheck = Permission.ACCESS_FINE_LOCATION;  
  var pkName = main.getPackageName();  
  var packageManager = main.getPackageManager();  
  console.log(isCheck);  
  var GRANTED = '';  
  //android6.0以上可以动态判断是否开启权限 6.0对应的是android 23版本 VERSION_CODES.M  

  if (VERSION.SDK_INT >= VERSION_CODES.M) {  
    GRANTED = plus.android.invoke(main, 'checkSelfPermission', isCheck);  
    alert(GRANTED);  
    if (GRANTED == PackageManager.PERMISSION_DENIED) {  
      console.log('没开启定位权限');  
    } else {  
      console.log('启定位权限');  
    }  
  } else {  
    GRANTED = plus.android.invoke(packageManager, 'checkPermission', isCheck, pkName);  
    alert(GRANTED);  
    if (GRANTED == PackageManager.PERMISSION_DENIED) {  
      console.log('没开启定位权限');  
    } else {  
      console.log('启定位权限');  
    }  
  }  
}

android代码

收起阅读 »

怎么利用PHP读取Excel文件信息及内容

  PHPExcel是什么?PHPExcel 就是一个用来操作Office Excel 文档的PHP类库。在编程技术开发中,我们经常要从程序中读取Excel文件内容,不过很多初学者都不太会,那么下面来详细为大家分析解答一下吧。比如说一个普通的个人信息表,我们利用PHPExcel类库将Excel表格内的信息内容读取出来,完整代码如下:

<?php
$fileName = "1.xls";
if (!file_exists($fileName)) {
return "文件不存在!";
}
// 引入PHPExcel
require_once "./PHPExcel/IOFactory.php";
// 载入当前文件
$phpExcel = PHPExcel_IOFactory::load($fileName);

// 设置为默认表
$phpExcel->setActiveSheetIndex(0);
// 获取表格数量
$sheetCount = $phpExcel->getSheetCount();
// 获取行数
$row = $phpExcel->getActiveSheet()->getHighestRow();
// 获取列数
$column = $phpExcel->getActiveSheet()->getHighestColumn();
echo "表格数目为:$sheetCount" . "表格的行数:$row" . "列数:$column";

$data = [];
// 行数循环
for ($i = 1; $i <= $row; $i++) {
// 列数循环
for ($c = 'A'; $c <= $column; $c++) {
$data[] = $phpExcel->getActiveSheet()->getCell($c . $i)->getValue();
}
echo "<pre>";
print_r($data);
}

  在上述代码中,先if判断Excel表格是否存在,再用require_once引入PHPExcel类库中IOFactory.php这个类,然后使用PHPExcel类库的一个方法载入Excel文件,这里将载入的Excel文件赋值于$phpExcel变量。

  然后再将$phpExcel变量通过分别指定相应的方法来获取Excel表格的数目、行数、列数以及通过setActiveSheetIndex(0)方法设置这个表格为默认(0表示默认)。

  此时输出表格的数目、行数、列数的结果就已经显示出来了,我们就可以发现表格的信息已经被正确的获取到了。如果大家在尝试的过程中出现错误或者还有不理解的地方,可以留言咨询。

  本文由专业的郑州app开发公司燚轩科技整理发布,原创不易,如需转载请注明出处!

继续阅读 »

  PHPExcel是什么?PHPExcel 就是一个用来操作Office Excel 文档的PHP类库。在编程技术开发中,我们经常要从程序中读取Excel文件内容,不过很多初学者都不太会,那么下面来详细为大家分析解答一下吧。比如说一个普通的个人信息表,我们利用PHPExcel类库将Excel表格内的信息内容读取出来,完整代码如下:

<?php
$fileName = "1.xls";
if (!file_exists($fileName)) {
return "文件不存在!";
}
// 引入PHPExcel
require_once "./PHPExcel/IOFactory.php";
// 载入当前文件
$phpExcel = PHPExcel_IOFactory::load($fileName);

// 设置为默认表
$phpExcel->setActiveSheetIndex(0);
// 获取表格数量
$sheetCount = $phpExcel->getSheetCount();
// 获取行数
$row = $phpExcel->getActiveSheet()->getHighestRow();
// 获取列数
$column = $phpExcel->getActiveSheet()->getHighestColumn();
echo "表格数目为:$sheetCount" . "表格的行数:$row" . "列数:$column";

$data = [];
// 行数循环
for ($i = 1; $i <= $row; $i++) {
// 列数循环
for ($c = 'A'; $c <= $column; $c++) {
$data[] = $phpExcel->getActiveSheet()->getCell($c . $i)->getValue();
}
echo "<pre>";
print_r($data);
}

  在上述代码中,先if判断Excel表格是否存在,再用require_once引入PHPExcel类库中IOFactory.php这个类,然后使用PHPExcel类库的一个方法载入Excel文件,这里将载入的Excel文件赋值于$phpExcel变量。

  然后再将$phpExcel变量通过分别指定相应的方法来获取Excel表格的数目、行数、列数以及通过setActiveSheetIndex(0)方法设置这个表格为默认(0表示默认)。

  此时输出表格的数目、行数、列数的结果就已经显示出来了,我们就可以发现表格的信息已经被正确的获取到了。如果大家在尝试的过程中出现错误或者还有不理解的地方,可以留言咨询。

  本文由专业的郑州app开发公司燚轩科技整理发布,原创不易,如需转载请注明出处!

收起阅读 »

诚邀优秀前端加盟,一起打造uni-app框架

招聘

微信小程序火了
支付宝、百度、今日头条等厂家随之发布各自的小程序规范
加上之前的iOS、Android、H5平台
前端工程师即将淹没在多平台的适配工作中

拿什么拯救前端工程师?

那就是uni-app!

uni-app被定义为终极跨平台开发框架
真正实现“一套代码、多端发行”

想改变世界的你,还犹豫什么?
赶快投递简历,加入我们,一起完善uni-app!

任职资格:

  • 强烈的创业激情,优秀的团队协同能力
  • 3年以上HTML5/CSS3/JavaScript开发经验
  • 精通Vue.js框架,在实际项目中,有过Vue.js开发经验
  • 熟悉webpack/npm等辅助工具的使用
  • 有小程序开发经验者优先
  • 有uni-app开发经验者优先

坐标:北京海淀区皂君庙京果商厦
薪资:看聊的情况,对优秀的人绝不吝啬

其它福利:

  • 公司附近住房,每月2k住房补贴
  • 每日餐费实报实销,不限次数

有兴趣的同学,马上投递简历到 cuihongbao@dcloud.io

另,iOS、Android、QT工程师也在扩招中。
欢迎各位投简历或邀请朋友前来尝试。

继续阅读 »

微信小程序火了
支付宝、百度、今日头条等厂家随之发布各自的小程序规范
加上之前的iOS、Android、H5平台
前端工程师即将淹没在多平台的适配工作中

拿什么拯救前端工程师?

那就是uni-app!

uni-app被定义为终极跨平台开发框架
真正实现“一套代码、多端发行”

想改变世界的你,还犹豫什么?
赶快投递简历,加入我们,一起完善uni-app!

任职资格:

  • 强烈的创业激情,优秀的团队协同能力
  • 3年以上HTML5/CSS3/JavaScript开发经验
  • 精通Vue.js框架,在实际项目中,有过Vue.js开发经验
  • 熟悉webpack/npm等辅助工具的使用
  • 有小程序开发经验者优先
  • 有uni-app开发经验者优先

坐标:北京海淀区皂君庙京果商厦
薪资:看聊的情况,对优秀的人绝不吝啬

其它福利:

  • 公司附近住房,每月2k住房补贴
  • 每日餐费实报实销,不限次数

有兴趣的同学,马上投递简历到 cuihongbao@dcloud.io

另,iOS、Android、QT工程师也在扩招中。
欢迎各位投简历或邀请朋友前来尝试。

收起阅读 »