• vue当中的mixin混入、插件使用


    1.mixin混入

    mixin混入的主要功能就是将一个众多组件公用的代码片段进行编辑使用,分局部混入和全局混入

    看下列示例代码即明白一切

    局部混入:

    src/mixin.js:

    1. export const mixin = {
    2. methods: {
    3. showName() {
    4. alert(this.name)
    5. }
    6. },
    7. mounted() {
    8. console.log("你好呀~")
    9. }
    10. }

    src/components/School.vue:

    1. <template>
    2. <div>
    3. <h2 @click="showName">学校姓名:{{name}}</h2>
    4. <h2>学校地址:{{address}}</h2>
    5. </div>
    6. </template>
    7. <script>
    8. //引入混入
    9. import {mixin} from '../mixin'
    10. export default {
    11. name:'School',
    12. data() {
    13. return {
    14. name:'尚硅谷',
    15. address:'北京'
    16. }
    17. },
    18. mixins:[mixin]
    19. }
    20. </script>

    src/components/Student.vue:

    1. <template>
    2. <div>
    3. <h2 @click="showName">学生姓名:{{name}}</h2>
    4. <h2>学生性别:{{sex}}</h2>
    5. </div>
    6. </template>
    7. <script>
    8. //引入混入
    9. import {mixin} from '../mixin'
    10. export default {
    11. name:'Student',
    12. data() {
    13. return {
    14. name:'JOJO',
    15. sex:'男'
    16. }
    17. },
    18. mixins:[mixin]
    19. }
    20. </script>

    src/App.vue:

    1. <template>
    2. <div>
    3. <School/>
    4. <hr/>
    5. <Student/>
    6. </div>
    7. </template>
    8. <script>
    9. import Student from './components/Student.vue'
    10. import School from './components/School.vue'
    11. export default {
    12. name:'App',
    13. components: { Student,School },
    14. }
    15. </script>

    这样子就实现了将多个组件公用代码片段的混入功能

    全局混入:

    src/main.js:

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. import {mixin} from './mixin'
    4. Vue.config.productionTip = false
    5. Vue.mixin(mixin)
    6. new Vue({
    7. el:"#app",
    8. render: h => h(App)
    9. })

    效果图:

     

    2.plugins插件

    什么都别说,先来看看示例代码

    先定义插件

    src/plugin.js:

    1. export default {
    2. install(Vue,x,y,z){
    3. console.log(x,y,z)
    4. //全局过滤器
    5. Vue.filter('mySlice',function(value){
    6. return value.slice(0,4)
    7. })
    8. //定义混入
    9. Vue.mixin({
    10. data() {
    11. return {
    12. x:100,
    13. y:200
    14. }
    15. },
    16. })
    17. //给Vue原型上添加一个方法(vm和vc就都能用了)
    18. Vue.prototype.hello = ()=>{alert('你好啊')}
    19. }
    20. }

    src/main.js:

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. import plugin from './plugin'
    4. Vue.config.productionTip = false
    5. //在这里就是要记住使用插件的方法就是Vue.use()
    6. Vue.use(plugin,1,2,3)
    7. new Vue({
    8. el:"#app",
    9. render: h => h(App)
    10. })

    src/components/School.vue:(使用插件当中的过滤方法)

    1. <template>
    2. <div>
    3. <h2>学校姓名:{{name | mySlice}}</h2>
    4. <h2>学校地址:{{address}}</h2>
    5. </div>
    6. </template>
    7. <script>
    8. export default {
    9. name:'School',
    10. data() {
    11. return {
    12. name:'尚硅谷atguigu',
    13. address:'北京'
    14. }
    15. }
    16. }
    17. </script>

    src/components/Student.vue:(使用插件当中的原型方法this.hello())

    1. <template>
    2. <div>
    3. <h2>学生姓名:{{name}}</h2>
    4. <h2>学生性别:{{sex}}</h2>
    5. <button @click="test">点我测试hello方法</button>
    6. </div>
    7. </template>
    8. <script>
    9. export default {
    10. name:'Student',
    11. data() {
    12. return {
    13. name:'JOJO',
    14. sex:'男'
    15. }
    16. },
    17. methods:{
    18. test() {
    19. this.hello()
    20. }
    21. }
    22. }
    23. </script>

    代码示例图解:

     plugins插件详解:

    插件:

    1. 功能:用于增强Vue

    2. 本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据

    3. 定义插件:

      1. plugin.install = function (Vue, options) {
      2. // 1. 添加全局过滤器
      3. Vue.filter(....)
      4. // 2. 添加全局指令
      5. Vue.directive(....)
      6. // 3. 配置全局混入
      7. Vue.mixin(....)
      8. // 4. 添加实例方法
      9. Vue.prototype.$myMethod = function () {...}
      10. Vue.prototype.$myProperty = xxxx
      11. }

             

           4.使用插件:Vue.use(plugin)

  • 相关阅读:
    深入了解 Postman 中的变量
    都是星光赶路人
    019 基于Spring Boot的教务管理系统、学生管理系统、课表查询系统
    JVM(十七)—— 垃圾回收(三)
    自动化工具:PyAutoGUI的鼠标与键盘控制,解放双手的利器
    【Qt】Qt界面美化指南:深入理解QSS样式表的应用与实践
    纯CSS3实现萧瑟深秋中律动的音乐之火
    微信一面:一致性哈希是什么,使用场景,解决了什么问题?
    华为ensp搭建习题
    删除数据表
  • 原文地址:https://blog.csdn.net/m0_68997646/article/details/127692421