Vue中mixin的使用和插件的使用

  • mixin(混入)

  • 当多个组件的方法、数据相同时。可以统一调用mixin。mixin用于保存组件们共同拥有的方法和数据。

  • 第一个组件和第二个组件有相同的method。用mixin.js进行封装

  • //------------------------第一个组件------------------------------
    <template>
      <div>
        <h2 @click="showName">姓名:{{ name }}</h2>
        <h2>地址:{{ address }}</h2>
      </div>
    </template>
    <script>
    import { mixin } from './mixin';
    export default {
      name: 'useSelect',
      data() {
        return {
          name: '猴哥',
          address: '花果山'
        }
      },
      mixins:[mixin]
    }
    </script>

  • 当第二个组件和mixin.js文件都设置了x,y属性。先调用组件的x,y。如果组件没有设置x,y属性,则调用mixin.js文件中的x,y

  • mounted()生命周期钩子,如果组件和mixin.js文件都设置mounted。两个的mounted都调用。不存在谁先谁后

  • //--------------------------第二个组件--------------------------------
    <template>
      <div>
        <h2 @click="showName">学生姓名:{{ name }}</h2>
        <h2>学生性别:{{ sex }}</h2>
        <h2>{{ x }}{{ y }}</h2>
      </div>
    </template>
    ​
    <script>
    // 导入mixin.js文件
    import { mixin,minxin2 } from './mixin';
    export default {
        data(){
            return {
              name:'张三',
              sex: '男',
              // 如果这里也有x,y那么用这里的x,y。没有则用mixin2中的x,y但生命周期钩子。不以谁为主,两边都写则都使用
              x: '3',
              y: '4'
            }
        },
        // 像props那样接收
        mixins:[mixin,mixin2]
    }
    </script>

  • 将mixin.js文件进行暴露

  • export const mixin = {
        methods: {
            showName() {
                console.log(this.name);
            }
        }
    }
    export const minxin2 = {
        data(){
            return {
                x:100,
                y:300
            }
        }
    }
    /* 当导出的方法只有一个时用默认导出
     const mixin = {
         methods: {
             showName() {
                 console.log(this.name);
             }
         }
     }
     export default minxin */
  • 全局配置mixin

  • 需要在vm中导入mixin.js

  • import Vue from 'vue'
    import App from './App'
    import {mixin,mixin2} from './components/mixin'
    Vue.mixin(mixin)
    Vue.mixin(mixin2)
    ​
    new Vue({
      el: '#app',
      router,
     render: h => h(App)
    })
     

插件

  • 插件的作用是为组件加buff

  • 下面定义了一个plugins.js的文件作为插件

  • export default {
        // install(){}为成功设置插件
        install(){
            // 全局过滤器
            Vue.filter('upDatetime', function (value) {
                return value.slice(0, 4);
            })
            // 全局v-fbind的自定义指令
            Vue.directive('fbing', {
                bing(element, bangding) {
                    element.value = bangding.value
                },
                inserted(element, bangding) {
                    element.focus()
                },
                update(element, bangding) {
                    element.value = bangding.value
                },
            })
            //给Vue原型上添加一个方法(vm和vc就能用了)
            Vue.prototype.hello = () => {alert('我时hello方法')}
        }
    }
  • 在main.js中引入plugins.js插件

  • import Vue from 'vue'
    import App from './App'
    import plugins from './components/plugins'
    ​
    // 使用use来使用插件
    Vue.use(plugins)
    new Vue({
      el: '#app',
      render: h => h(App)
    })
    ​
  • 在School组件中使用插件提供的功能

  • <template>
      <div>
       <h2>学校的名字:{{ name | upDatetime }}</h2>
       <button @click="test">点位测试以下hello方法</button>
      </div>
    </template>
    ​
    <script>
    export default {
        data(){
            return {
             name: '小猴子的玩具商'
            }
        },
        methods:{
          test(){
            this.hello()
          }
        }
    }
    </script>

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3使用WebSocket实现简易的自动回复对话可以按照以下步骤进行: 1. 首先,安装 `vue-native-websocket` 插件,它提供了WebSocket的封装和Vue的全局 mixin。 ```bash npm install vue-native-websocket ``` 2. 在你的Vue应用的入口文件(通常是 main.js)导入并使用插件: ```javascript import VueNativeSock from 'vue-native-websocket'; import Vue from 'vue'; Vue.use(VueNativeSock, 'ws://localhost:8080', { format: 'json', }); ``` 这里的 `'ws://localhost:8080'` 是WebSocket服务器的地址,你需要根据实际情况进行修改。 3. 创建一个WebSocket组件,用于处理WebSocket连接和消息收发: ```vue <template> <div> <div v-for="message in messages" :key="message.id"> <strong>{{ message.from }}:</strong> {{ message.content }} </div> <input v-model="inputMessage" @keyup.enter="sendMessage" placeholder="Type a message..." /> </div> </template> <script> export default { data() { return { messages: [], inputMessage: '', }; }, methods: { sendMessage() { this.$socket.send( JSON.stringify({ from: 'User', content: this.inputMessage, }) ); this.messages.push({ id: Date.now(), from: 'User', content: this.inputMessage, }); this.inputMessage = ''; }, }, created() { this.$options.sockets.onmessage = (event) => { const message = JSON.parse(event.data); this.messages.push(message); }; }, }; </script> ``` 上述代码,我们使用Vue 3 的 Composition API,并在 `created()` 生命周期钩子监听 WebSocket 消息的到达,并将其添加到消息列表。同时,我们通过 `sendMessage()` 方法将用户输入的消息发送给 WebSocket 服务器。 4. 在你的Vue组件使用WebSocket组件: ```vue <template> <div> <WebSocketComponent></WebSocketComponent> </div> </template> <script> import WebSocketComponent from './WebSocketComponent.vue'; export default { components: { WebSocketComponent, }, }; </script> ``` 这样,你就可以在浏览器访问你的Vue应用,并通过输入框发送消息,并实时接收到来自WebSocket服务器的自动回复。 当然,这只是一个简单的示例,你还可以根据需求进行更复杂的处理和逻辑编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值