日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

vue单文件props写法_vue开发中怎么按需加载需要被填入props和自定义事件的组件?...

發布時間:2024/10/8 108 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue单文件props写法_vue开发中怎么按需加载需要被填入props和自定义事件的组件?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這種場景你可能需要把模態框包裝成插件。vue插件開發和組件的區別 - 水秋玄?im.mkinit.com

vue插件和組件的區別

使用插件的方式包裝組件和直接注冊全局組件其實是一樣的,都是注冊組件。不同的是,一般組件我們是作為頁面的某一塊結構,按需引用,但是有些應用場景你可能會用到也可能用不到,總之就是你不知道什么時候會用到,總不能在每個頁面都引用吧。再一個,控制組件需要傳遞props,也就是說每次引用都需要寫方法才能達到控制的目的。

所以一般組件就不適合輕提示、加載動畫、模態框這種隨時需要的功能,所以需要把組件包裝成插件,直接添加到頁面上(一般是插入到body),再通過在vue的原型上添加全局功能,使用自定義的方法(api)來控制組件。

vue的組件就是組件,沒有其他。但是插件不僅僅限于組件,它也可以包裝過濾器、混入、自定義指令。這就是組件和插件的區別。

插件的開發(以輕提示為例子,同時也演示過濾器、混入、自定義指令)

不存在的目錄自行創建

1、首先創建一個單文件組件(src/plugins/js2-vuepluginsdemo/js2-vuepluginsdemo.vue)

這就是一個普通的組件

{{message}}

export default {

name:'toast',

data(){

return {

show:false,

message:''

}

}

}

.fade-enter-active, .fade-leave-active {

transition: opacity .5s;

}

.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {

opacity: 0;

}

.toast{

position:fixed;

z-index:100;

left:50%;

top:50%;

transform: translate(-50%,-50%);

padding:1em 2em;

background-color:rgba(0,0,0,.9);

color:#FFF;

}

2、創建一個暴露install方法的模塊(src/plugins/js2-vuepluginsdemo/js2-vuepluginsdemo.js)

這個插件包含了輕提示組件、混入、過濾、自定義指令這幾個基本功能,都可以全局使用。

import toast_component from './js2-vuepluginsdemo.vue'

export default {

//插件需要暴露一個install方法作為回調函數,接收Vue和配置參數

install: (Vue, options) => { //options 是use時可以傳遞的參數

console.log(options)

/*

* 定義一個全局混入,混入到所有組件中

*/

Vue.mixin({

methods: {

sayhi() { //所有組件都擁有該方法

console.log(this, 'sayhi');

}

},

mounted() { //所有組件都會輸出

this.sayhi()

}

})

/*

* toast 組件插件

*/

const component = Vue.extend(toast_component) //創建一個組件構造器

const toast = new component({

name:''

data: { //可通過構造時傳參初始化數據

'js2': '我是通過構造器傳遞的參數'

}

}) //實例化組件

toast.$mount()//$mount 如果沒有參數,模板將被渲染為文檔之外的的元素,必須使用原生 DOM API 把它插入文檔中。

document.body.appendChild(toast.$el)//手動插入到body

Vue.prototype.$toast = (msg, duration = 1500) => {//在Vue的原型上創建一個方法作為全局方法,操作的是組件中的data數據

toast.message = msg;

toast.show = true;

setTimeout(() => {

toast.show = false;

}, duration);

}

/*

* 定義一個全局指令

*/

Vue.directive('focus',{

inserted(ele){

ele.focus()

}

})

/*

* 定義一個全局過濾器

*/

Vue.filter('length',value=>{

return value.length

})

}

}

3、注冊插件

在入口文件(main.js)中導入并注冊插件:

import toast from './plugins/js2-vuepluginsdemo/js2-vuepluginsdemo.js'//導入插件

//import toast from 'js2-vuepluginsdemo'//通過npm下載的包這樣引入

Vue.use(toast,{option:'我是通過use傳入的參數'})//注冊這個插件

4、在任何組件中都可以使用插件中的功能

在組件的mounted中調用提示:this.$toast('Welcome to Your Vue.js App',3000)

使用過濾:{{ msg | length }}

使用指令:

總結

以上是生活随笔為你收集整理的vue单文件props写法_vue开发中怎么按需加载需要被填入props和自定义事件的组件?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。