SOURCE

console 命令行工具 X clear

                    
>
console
let store = Vue.observable({ count: 0, name: '李四' });
let mutations = {
    setCount(count) {
        store.count = count;
    },
    changeName(name) {
        store.name = name;
    }
}

let mySlot = {
    template: `
        <div>
            <div>
                header:
                <slot name="header"></slot>
            </div>

            <div>
                main:
                <slot></slot>
            </div>

            <div>
                footer:
                <slot name="footer"></slot>
            </div>

            count: {{ count }}, name: {{ name }}
        </div>
    `,
    computed: {
        count() {
            return store.count;
        },
        name() {
            return store.name;
        },
    },
}

let todoList = {
    template: `
        <ul>
            <li v-for="todo in todos" :key="todo.id">
                <slot :todo="todo">
                </slot>
            </li> 
        </ul>
    `,
    props: {
        todos: {
            type: Array,
        }
    }
}

let App = {
    template: `
        <div>
            <todo-list :todos="todos">
                <template #default="{ todo }">
                    <span v-if="todo.isComplete"></span>
                    <span>{{ todo.text }}</span>
                </template>
            </todo-list>
            <my-slot>
                <template v-slot:header="{ name = '初始化' }">
                    我是header!{{ name }}
                </template>
                <button>主要button</button>
                <template #footer>
                    我是footer
                </template>
            </my-slot>
            <div>
                <button @click="setCount(count+1)">+1</button>
                {{ count }}
                <button @click="setCount(count-1)">-1</button>
                <button @click="changeName('213')">改变名字</button>
                {{ name }}
            </div>
        </div>
    `,
    components: {
        todoList, mySlot,
    },
    data() {
        return {
            todos: [
                {
                id: 0,
                text: 'ziwei0',
                isComplete: false
                },
                {
                text: 'ziwei1',
                id: 1,
                isComplete: true
                },
            ],
        };
    },
    computed: {
        count() {
            return store.count;
        },
        name() {
            return store.name;
        },
    },
    methods: {
        setCount: mutations.setCount,
        changeName:mutations.changeName,
    }
}

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

本项目引用的自定义外部资源