首页 > 其他分享 >Vue 中 的 mixin 混入(合)

Vue 中 的 mixin 混入(合)

时间:2022-12-04 11:33:17浏览次数:58  
标签:混入 Vue name vue export mixin import

Vue 中 的 mixin 混入(合)


1:说明


/*
## mixin(混入)

1. 功能:可以把多个组件共用的配置提取成一个混入对象

2. 使用方式:

    第一步定义混合:

    ```
    {
        data(){....},
        methods:{....}
        ....
    }
    ```

    第二步使用混入:

    ​	全局混入:```Vue.mixin(xxx)```
    ​	局部混入:```mixins:['xxx']	```



*/



image

image


2:代码结构

image


3:代码内容


vue.config.js


const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave:false /*关闭语法检查*/
})



main.js

 //引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//关闭Vue生产提示
Vue.config.productionTip=false;
 //全局引用 minix
 import { mixinGlobalData ,mininGlobalData2} from "@/mixin";
 Vue.mixin(mixinGlobalData);
 Vue.mixin(mininGlobalData2);


// 创建Vm
const vm = new Vue(  {
        el:'#app',
        render: (h) => h(App)
   });



index.html

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <!-- 针对ie浏览器的一个特殊配置,含义是让ie浏览器以最高的渲染级别进行渲染界面 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- 开启移动端理想视口 -->
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!-- 配置页签的图标 -->
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <!-- 配置网页的标题:找 package.json文件里的 "name": "vue_test" 值 -->
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <!-- 如果浏览器不支持js,则该标签的元素里的内容将会被渲染 -->
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <!-- 容器 -->
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>





App.vue

 <!--

 -->

<template>
  <div>
    <hr/>
    <div class="divCss">
        <h1 class="h1Css">Vue中的 minix属性</h1>
        <hr/>
        <!-- 调用组件,传递数据 -->
        <School/>
        <hr/>
        <Student />
        <hr/>

    </div>

  </div>
</template>
<script>

    import School from './components/School.vue';
    import Student from './components/Student.vue';


    export default {
        name:'App',
        components:{
            Student,
            School
        },
    }
</script>

<style>
   .divCss{
        background-color: chocolate;
        margin: auto;
        padding: 20px;
   }
   .h1Css{
        font-size: 36px;
        color: white;
   }
</style>




Student.vue

<!-- --> <template> <div class="schoolClassStyle"> <h1 style="color:red">{{msg}}</h1> <h2 @click="showName">学生名称:{{name}}</h2> <h2>学生性别:{{sex}}</h2> </div> </template>

  <script>
      //引入一个混合 mixin
      import { mixin,mixinData } from '@/mixin';
      export default {
        name:'Student',
        data () {
          return {
            msg:'学生信息',
            name:'向北',
            sex:'男'
          }
        },
        //配置混合对象,可以配置多个
        mixins:[mixin,mixinData]

      }
  </script>
  <style>
    .schoolClassStyle{
      background-color: aquamarine;
    }
  </style>





School.vue

<!--

 -->
<template>
    <div  class="schoolClassStyle">
      <h1  style="color:red">{{msg}}</h1>
      <h2 @click="showName">学校名称:{{name}}</h2>
      <h2>学校地址:{{address}}</h2>
    </div>
</template>
  <script>
      //引入一个混合 mixin
      import { mixin ,mixinData} from '@/mixin';
      export default {
        name:'School',
        data () {
          return {
            msg:'学校信息',
            name:'华南',
            address:'广州市天河区中山大道西55号'
          }
        },
        //配置混合对象,可以配置多个
        mixins:[mixin,mixinData]

      }
  </script>
  <style>
    .schoolClassStyle{
      background-color: aquamarine;
    }
  </style>




minix.js


 export  const mixin ={
    methods: {
        showName(){
          alert(this.name);
        }
      },

}

export const mixinData={
    data () {
        return {
            x:100,
            y:100
        }
    }
}


export const mixinGlobalData={
    data () {
        return {
            g_x:100,
            g_y:100
        }
    }
}

export const mininGlobalData2={
    data () {
        return {
            g_m:100,
            g_n:100
        }
    }
}





4:执行效果

image


image

imageimageimageimage

标签:混入,Vue,name,vue,export,mixin,import
From: https://www.cnblogs.com/ios9/p/16949565.html

相关文章

  • vue_登录
    <template><!--根节点--><divclass="login-container"><divclass="login-form-wrap"><!--el-form表单组件每个表单项都必须......
  • 老板:你为什么要选择 Vue?
    大家好,我是Kagol,VueDevUI开源组件库和EditorX富文本编辑器创建者,专注于前端组件库建设和开源社区运营。假如你是团队的前端负责人,现在老板要拓展新业务,需要开发一个......
  • Vue-treeselect 实现下拉树懒加载,末节点不要箭头
    项目需要,可选择的下拉树,由于数据过多,显示要有层级感,所以使用了懒加载模式vue-treeselect官网:https://www.vue-treeselect.cn/1、前端代码1、下载依赖npminstall--sav......
  • Vue2(笔记16) - Vue核心 - 内置指令
    回顾下之前的指令:v-bind  :单向绑定解析表达式,可简写:xxxv-model:双向数据绑定;v-for   :遍历数组/对象/字符串v-on   :绑定事件监听,可简写 @v-if    :条件......
  • arco design vue 表单自定义验证
    不知道为啥,官方文档里竟然没写...直接上代码template里<a-form-itemfield="repeatPassword":rules="[{validator:validateRepeatPassword,trigger:'change'}]"......
  • Vue2(笔记15) - Vue核心 - 过滤器
    可学可不学,可用可不用过滤器需求:把一个时间戳格式化成可读的年月日时间;需要引入一个dayjs 的 JS库,专门用来处理时间的;​​dayjs在这可以下载​​<scriptsrc="./res/vue.......
  • jenkins 部署VUE
    一、安装nodejs插  在系统管理-》插件管理中安装nodejs插件 二、配置nodejs插件在jenkins全局工具配置中,配置nodejs,如下图  三、编写三、新建vue构建任......
  • Vue2(笔记14) - Vue核心 - 表单数据收集
    表单数据收集表单数据收集是最常用的逻辑;<divid="root"><[email protected]="demo">账号:<inputtype="text"v-model.trim="userInfo.account"><br><br>......
  • vue中单独封装elementui中的Dialog弹框组件
    一。在components文件中新建弹框组件<template><div><el-dialogtitle="提示":visible.sync="dialogVisible"width="30%"@close="handleClose"><span......
  • Vue3路由
    路由基础(页面跳转)下载vue-router,vue3对应的版本是4cnpminstallvue-router@4启动项目npmrundevrundev的由来组件Home、Blogrouter.jsimport{createRout......