AVUE极速开发

让我们一起用数据来驱动好伐?

apicloud基于html,css,js进行开发,代码写法上跟web写法差不多,jQuery这种库也可以用,但是体积大,频繁操作dom,而且开发速度慢,也不便于维护,所以搞一个aVue来提高一下开发体验,毕竟任务完成快才有时间学习嘛。

起手式

首先要考虑的是移动端的点击300ms的延迟,直接先简单粗暴引入一个fastclick.js,因为整体是要基于Vue的,所以也来下载一个vue.min.js,放在目录备用,接下来起锅烧油。

ES6真香操作

//使aVue继承Vue 以免对Vue源码直接扩展导致维护难度增大
class aVue extends Vue {}

把api方法拷贝到aVue上

//对原型扩展api的相关方法 使语法风格一致
for(let _apiItem in api){
    aVue.prototype[_apiItem] = api[_apiItem]
}

扩展一些基本的方法备用

//外部定义方法
const _avMethods = {
    //关闭窗口的方法
    _avCloseWin(winName){
        if(winName){
            this.closeWin();
        }else{
            this.closeWin({
                name: winName
            });
        }
    },

    //扩展options参数 --- listener
    _avEvent(item,fn){
        this.addEventListener({
            name: item
        }, function(ret, err){
            if( ret ){
                 fn(ret.value)
            }else{
                 api.toast( JSON.stringify( err ) );
            }
        });
    },

    _avSendEvent(item,data){
        this.sendEvent({
            name: item,
            extra: data
        });
    },

    //时间戳处理 yyyy-mm-dd hh:mm
    _avTimeEncode(time,type){
        let now = new Date(parseInt(time));
        let year = now.getFullYear();
        let month=now.getMonth()+1<10?'0'+(now.getMonth()+1):now.getMonth()+1;
        let day = now.getDate();
        let hour=now.getHours()<10?'0'+now.getHours():now.getHours();
        let minute=now.getMinutes()<10?'0'+now.getMinutes():now.getMinutes();
        return year+'-'+month+'-'+day+'  '+hour+':'+minute
    }

}

接下来做一下过滤器

进入正戏

压缩

将vue.js fastclick.js avue.js进行es5编译打包,生成avue.js 文件

使用方法

组件

这里只做了一个雏形,还有很多地方需要完善和优化,但是鉴于公司原来的写法写了太多东西,不会采用这种方式开发,所以这个也没继续更新了,就一般自己使,有时间的话再回头重新完善一下。

最后更新于