drinke9 发布的文章

介绍

在接触Docker之前,一直使用自建的开发环境来工作。

对于个人来说就是在换电脑的时候麻烦,换电脑了开发环境就得重新部署一次。差不得得要个半天时间...

对于公司团队来说更加麻烦了,每个同事部署的环境不一致,Windows系统与*nix系统的不兼容等.代码跑起来有差异。

Docker是一个类似于虚拟机的设计,一种新兴化的虚拟化方式。

特性Docker虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生弱于原生
系统支持量单主机支持上千个容器一般几十个

Docker有三个关键概念:镜像(images)、容器(container)、仓库(registry)。其中镜像与容器两者关系类似于面向对象设计中的实例一样

镜像是静态的定义,容器是镜像运行是的实体

镜像加速:官方Docker Hub拉取镜像网络不稳定,推荐两个镜像仓库


- 阅读剩余部分 -

在使用vee-validate验证表单中受限于默认规则不够用,于是查阅文档,记录下如何自定义验证规则.

格式:

const validator = {
  getMessage(field, args) {
    //定义默认错误提示
    //返回错误提示
  },
  validate(value, args) {
        // 返回一个 Boolean 值或者一个 Promise对象.
  }
};

使用 extend(name,validator)函数添加一个验证实例

Validator.extend('truthy', {
  getMessage: field => 'The ' + field + ' value is not truthy.',
  validate: value => !! value
});

列子:

const myCustomRule = {
  getMessage(field, args) {
      return field + '格式不正确'
  },
  validate(value, args) {
      return value.length == 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/.test(value)
  }
};

Validator.extend('isMobile',myCustomRule);

定义通过后台接口验证的规则:

Validator.extend('sku', {
    getMessage: field => field + '已存在!',
    validate: (value, args) => {
        return this.checkSku(value);
    }
}, {
    immediate: false    //是否实时验证
});

checkSku(val) {
    return this.$api.checkSku(val).then(res => {
        if (res.code == 200) {
            return true;
        } else {
            return false;
        }
    });
},

laravel中使用:

  • app.js中引入文件

    ...
    import VeeValidate, {Validator} from 'vee-validate';
    import zh_CN from '../locale/zh_CN';
    ...
    Validator.localize('zh_CN', zh_CN);
    Vue.use(VeeValidate, {
    locale: 'zh_CN',
    fieldsBagName: 'fieldBags',
    });
    //手机号验证规则(可在所有组件中使用)
    const isMobile = {
        getMessage: field => field + '格式不正确',
        validate: (value, args) => {
            return value.length == 11 && /^((13|14|15|17|18)[0-9]{1}\d{8})$/.test(value)
        }
    }
    Validator.extend('mobile', isMobile);
  • 在组件中自定义规则

    <template>
      <form>
        <div :class="{'has-error' : errors.has('name')}">
          <input type="text" name="name" v-validate="'myName'">
          <span class="help-block" v-show="errors.has('name')">{{ errors.first('name') }}</span>
        </div>
      </form>
    </template>
    
    <script>
    export default {
            created() {
                this.$validator.extend('myName', {
                    getMessage: field => field + '已存在!',
                    validate: (value, args) => {
                        return this.checkName(value);
                    }
                }, {
                    immediate: false
                });
            },
            methods:{
                checkName(val) {
                    return this.$api.checkName(val).then(res => {
                        return res.code == 200 ? true : false;
                    });
                },
            }
    }
    </script>

设定验证