vue实用方法

161 阅读1分钟

vue全局配置loding

index.js

import Loading from "pub/components/loading/loading.vue";

class CreateLoading {
    constructor(Vue){
        this.instance  =null;
        this.LoadingC = Vue.extend(Loading);
        this.vue  = Vue
    }
    initInstance (){
          // 创建子类实例
          this.instance = new this.LoadingC({
            el: document.createElement('div')
        });
         // 插到body里
         document.body.appendChild(this.instance.$el);
         this.vue.nextTick(() => {
            instance.loading = true;
        });
    }
    show(){
        if (!this.instance) {
            this.initInstance();
        }
        this.instance.loading = true;
    }
    hide(){
        this.instance.loading = false;
    }
}

export default{
    install (Vue){
        Vue.prototype.$loading = new CreateLoading(Vue)
    }
}

loading.vue

<template>
  <div>
    <Spin fix v-if="loading">
      <Icon type="ios-loading" size="18" class="demo-spin-icon-load" />
      <div>Loading</div>
    </Spin>
  </div>
</template>

<script>
export default {
  name: "loading",
  data() {
    return {
      loading: false
    };
  }
};
</script>

<style lang="scss" scoped>
</style>

main.js

import Loading from '@/components/loading'
Vue.use(Loading)

同时启动多个项目的脚本文件的配置

https://www.npmjs.com/package/concurrently

子组件修改父组件的变量的方法

<parent :title.sync="title"><parent>
子组件中 this.$emit('update:title',val)

vw适配

安装插件

npm i postcss-loader postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano --S   

postcss.config.js的配置

module.exports = {
    "plugins": {
        "postcss-aspect-ratio-mini": {},
        "postcss-write-svg": {
            utf8: false
        },
        "postcss-px-to-viewport": {
            viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750 
            viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置 
            unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除) 
            viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw 
            selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名 
            minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值 
            mediaQuery: false, // 允许在媒体查询中转换`px` 
            exclude: /(\/|\\)(node_modules)|(upshelf)(\/|\\)/, //在node_modules文件里面的样式不转成vw
            //landscape: true, // 是否添加根据landscapeWidth生成的媒体查询条件 @media (orientation: landscape)
            //landscapeWidth: 2048 // 横屏时使用的视窗宽度
        },
        "postcss-viewport-units": {
            filterRule: rule => rule.selector.includes('::after') && rule.selector.includes('::before') && rule.selector.includes(':after') && rule.selector.includes(':before')
        },
        "cssnano": {
            autoprefixer: false,
            "postcss-zindex": false
        },
    }
}