Vue中将组件转换为插件

 Vue中将组件转换为插件

目的:通常我们要频繁复用一个组件,我们可以通过在其他组件中直接import引入要用的组件,但是这样如果多个组件都要用这个需要频繁复用的组件,那就需要在每个组件里都去引入这个高频组件(频繁复用的那个组件),此时我们可以想到的处理方案有:将高频组件注册为全局组件,这样就不需要在每个组件中都去import引入了,直接<gaopinzujian ref="gaopinzujian "/>,并且如果我们要使用这个高频组件中的方法,就需要this.$refs.gaopinzujian 中的方法,首先他还是需要在每个组件中使用高频组件(只不过不用引入了),可是我们还可以更加简化,就是将高频组件转换为插件挂在Vue的原型上,我们直接调用this.$xxxx就行了

对以上进行简单解释: 

1.高频组件(频繁复用组件)在每个组件中都import引入太麻烦

2.改用全局组件:虽然不用引入但是需要<gaopinzujian>的方式使用,并且调用其方法麻烦

3.改为插件:挂在Vue的原型上,直接调用原型上的方法即可


使用插件步骤如下:

  1. 写好插件的js代码,需要暴露一个对象,对象中包含install方法
  2. 在main.js中注册使用插件
  3. 在其他组件中使用插件

代码如下:

world.js:

// 引入要注册为插件的组件
import world from "./world.vue";

export default {
    //使用插件暴露的对象中需要有install方法
    install(Vue) {
        // 创建一个子类
        if (!Vue.prototype.$db) {
            Vue.prototype.$db = {};
        }
        //生成world组件构造器
        const worldConstructor = Vue.extend(world);
        //生成world组件实例
        const worldInstance = new worldConstructor();
        //生成的world组件实例此时没有$el(组件结构),,将其挂在到随意一个元素上后才会有
        console.log(worldInstance.$el);
        //将其插入到html
        document.body.appendChild(worldInstance.$el);

        //挂载到实例上
        Vue.prototype.$db.newdata = worldInstance;
    },
};

 world.vue:

<template>
    <div class="worldContainer" v-show="isshow">
        <h1>{{ testname }}</h1>
        <h2>我是弹窗</h2>
    </div>
</template>

<script>
export default {
    name: "SonCom",
    data() {
        return {
            isshow: false,
            testname: "嘿嘿",
        };
    },
    methods: {
        open() {
            this.isshow = true;
        },
        down() {
            this.isshow = false;
        },
    },
};
</script>

<style scoped></style>

other.vue:

<template>
    <div class="hellowWorldCOntainer">
        <h1>我是父组件{{ father }}</h1>
        <button @click="usePlugs">点击使用插件</button>
    </div>
</template>

<script>
export default {
    name: "HelloWorld",
    data() {
        return {
            father: "dad",
        };
    },
    methods: {
        usePlugs() {
            if (this.$db.isshow == false) {
                this.$db.open();
            } else {
                this.$db.down();
            }
        },
    },
};
</script>

<style scoped></style>

main.js:

import Vue from "vue";
import App from "./App.vue";

Vue.config.productionTip = false;

//使用插件
import world from "./components/_common/son.js";
Vue.use(world);

new Vue({
    render: h => h(App),
}).$mount("#app");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 中,你可以使用 `ffmpeg` 库将 AVI 格式的文件转换为 MP4 格式。下面是一个简单的示例代码: 1. 安装 `ffmpeg` 库: ```bash npm install --save @ffmpeg/ffmpeg ``` 2. 在 Vue 组件中引入 `ffmpeg` 库: ```javascript import { createFFmpeg } from "@ffmpeg/ffmpeg"; const ffmpeg = createFFmpeg({ log: true }); ``` 3. 创建一个异步函数来转换 AVI 文件为 MP4 文件: ```javascript async function convertAviToMp4(inputFile, outputFile) { // 初始化 ffmpeg 库 await ffmpeg.load(); // 读取输入文件 ffmpeg.FS("readFile", inputFile.name); // 转换文件格式 await ffmpeg.run("-i", inputFile.name, "-c:v", "libx264", "-preset", "slow", "-crf", "22", "-c:a", "aac", "-b:a", "128k", outputFile); // 读取输出文件 const data = ffmpeg.FS("readFile", outputFile); // 返回转换后的文件数据 return new Blob([data.buffer], { type: "video/mp4" }); } ``` 4. 在 Vue 组件中使用该函数: ```javascript // 获取输入文件和输出文件 const inputFile = document.querySelector("#inputFile").files[0]; const outputFile = "output.mp4"; // 调用转换函数 const convertedFile = await convertAviToMp4(inputFile, outputFile); // 将转换后的文件保存到本地 const downloadLink = document.createElement("a"); downloadLink.href = URL.createObjectURL(convertedFile); downloadLink.download = outputFile; downloadLink.click(); ``` 注意:上述示例代码仅供参考,具体实现可能需要根据项目需求进行修改。同时,由于 `ffmpeg` 库需要大量的计算资源,因此在处理大型文件时可能会导致性能问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值