+
95
-

vue怎么创建component组件插件?

vue
vue怎么创建component组件插件?

网友回复

+
16
-
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BFW NEW PAGE</title>
    <script id="bfwone" data="dep=vue.2.2.min|&err=0" type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/bfwone.js"></script>
    <script type="text/javascript">
        bready(function() {
            let like = Vue.extend({
                template: `
                <div>
                <h2>全局组件定义方法一</h2>
                <p>全局组件定义方法一内容</p>
                </div>
               ...

点击查看剩余70%

+
15
-

因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。

组件基础: 全局组件:可以在任何(根)实例中使用的组件; 局部组件:只能在某一实例中使用的组件: 一、定义全局组件和局部组件的两种方法: 方法一:定义一个全局组件和局部组件 全局组件: let like = Vue.extend({ template: `

全局组件定义方法一

全局组件定义方法一内容

` }); Vue.component('like-com', like); 局部组件: let like = Vue.extend({ template: `

局部组件定义方法一

局部组件定义方法一内容

` }); new Vue({ el: '#app1', components: { 'like-com': like } }); 方法二:定义一个全局组件和局部组件 全局组件: Vue.component('like', { template: `

这是一个全局组件

全局组件内容省略!

` }); 局部组件: new Vue({ el: '#app1', components: { 'love': { template: `

这是一个局部组件

布局组件内容同样省略!

` } } }); 方法三、使用template定义
Vue.component('my-love', { template: '#temp-com' }); 方法四、使用script定义
Vue.component('my-love', { template: '#temp-com' }); 方法五:在模块系统中局部注册 你使用了诸如 Babel 和 webpack 的模块系统。在这些情况下,我们推荐创建一个 components 目录,并将每个组件放置在其各自的文件中。 然后你需要在局部注册之前导入每个你想使用的组件。例如,在一个假设的 ComponentB.js 或 ComponentB.vue 文件中: import ComponentA from './ComponentA' import ComponentC from './ComponentC' export default { components: { ComponentA, ComponentC }, // ... } 现在 ComponentA 和 ComponentC 都可以在 ComponentB 的模板中使用了。 二、父子组件: let child1 = Vue.extend({ template: `

子组件child1

` }); let child2 = Vue.extend({ template: `

子组件child2

` }); Vue.component('like', { components: { 'child-com1': child1, 'child-com2': child2 }, template: `
` }); let child1 = Vue.extend({ template: `

子组件child1

` }); let child2 = Vue.extend({ template: `

子组件child2

` }); new Vue({ el: '#app1', components: { 'child-app1': { components: { 'child-com1': child1, 'child-com2': child2 }, template: `
` } } }); 三、父子组件通信:从父到子,用props属性绑定
Vue.component('my-comp', { props: ['username'], template: '

{{ username }}

' }); new Vue({ el: '#app', data: { nickname: '小七' } }) 五、平行组件传递数据:用空实例搭建桥梁
var Event = new Vue(); Vue.component('huahua', { template: `
我说:
`, methods: { on_change: function(){ Event.$emit('huahua-said-something', this.i_said); } }, data: function(){ return { i_said: '' } } }) Vue.component('shuangdan', { template: '
花花说:{{huahua_said}}
', data: function(){ return { huahua_said: '' } }, mounted: function(){ var me = this; Event.$on('huahua-said-something', function(data){ me.huahua_said = data; }) } }) new Vue({ el: '#app' }) 六、prop: 1、在 JavaScript 中对象和数组是通过引用传入的,所以对于一个数组或对象类型的 prop 来说,在子组件中改变这个对象或数组本身将会影响到父组件的状态。 2、prop 会在一个组件实例创建之前进行验证,所以实例的属性 (如 data、computed 等) 在 default 或 validator 函数中是不可用的。 七、is: 解析 DOM 模板时的注意事项 有些 HTML 元素,诸如