zoukankan      html  css  js  c++  java
  • Vue基础笔记3

    插槽指令

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>插槽指令</title>
        <style>
            body {
                font-size: 30px;
            }
            li:hover {
                color: orange;
                cursor: pointer;
            }
            .del:hover {
                color: red;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <p>
                <input type="text" v-model="info">
                <button @click="add_msg">留言</button>
                <ul>
                    <msg-tag :msg="msg" v-for="(msg, i) in msgs" :key="msg">
                        <!--template通过v-slot绑定子组件内部slot插槽标签的name属性值-->
                        <template v-slot:del_btn>
                            <span @click="del_fn(i)" class="del">x</span>
                        </template>
                    </msg-tag>
                </ul>
            </p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let msgTag = {
            props: ['msg'],
            template: `
            <li>
    			<!--slot标签是在子组件中占位,父组件模板中可以通过name名字来填充-->
                <slot name="del_btn"></slot>
                <span>{{ msg }}</span>
            </li>
            `,
        };
        new Vue({
            el: '#app',
            components: {
                msgTag
            },
            data: {
                info: '',
                msgs: JSON.parse(sessionStorage.msgs || '[]'),
            },
            methods: {
                add_msg() {
                    let info = this.info;
                    if (info) {
                        this.msgs.unshift(this.info);
                        this.info = '';
                        sessionStorage.msgs = JSON.stringify(this.msgs);
                    }
                },
                del_fn(index) {
                    console.log(index);
                    this.msgs.splice(index, 1);
                    sessionStorage.msgs = JSON.stringify(this.msgs);
                }
            }
        });
    </script>
    </html>
    

    环境

    1)安装node:官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/
    
    2)安装cnpm
    >:npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    3)安装脚手架
    >:cnpm install -g @vue/cli
    
    4)清空缓存处理(如果第2、3补出问题可以执行该条命令)
    >:npm cache clean --force
    

    创建项目

    项目目录介绍

    |vue-proj
    |	|node_modules  项目依赖
    |	|public
    |	|	| 图标、单页面.html
    |	|src
    |	|	|assets  静态文件(img、css、js)
    |	|	|components	 小组件
    |	|	|views  页面组件
    |	|	|App.vue  根组件
    |	|	|main.js  主脚本文件
    |	|	|router.js  安装vue-router插件的脚本文件 - 配置路由的
    |	|	|store.js  安装vuex插件的脚本文件 - 全局仓库 - 数据共享
    |	|配置文件们
    |	|README.md  关键命令说明
    

    main.js

    // import 别名 from '文件(后缀可以省略)'
    import Vue from 'vue'
    // import App from './App.vue'
    import App from './App'  // 导入时可以省略后缀
    import router from './router'  // .代表相对路径的当前路径
    import store from '@/store.js'  // @表示src绝对路径
    
    Vue.config.productionTip = false;
    
    // new Vue({
    //   router,
    //   store,
    //   render: h => h(App)
    // }).$mount('#app');
    
    new Vue({
        el: '#app',
        router: router,
        store,
        // render: (fn) => {
        //     return fn(App)
        // }
        render (fn) {  // 读取组件渲染给挂载点el
            return fn(App)
        }
    });
    

    组件 .vue 文件:模板(template) + 脚本(scpirt) + 样式(style)

    <template>
        <!--组件有且只有一个根标签-->
        <div id="app">
            <h1 @click="btnClick">{{ title }}</h1>
        </div>
    </template>
    
    <script>
        // 组件内部导出,其它文件才能import导入该组件
        export default {
            name: "App",
            data() {
                return {
                    title: '主页'
                }
            },
            methods: {
                btnClick() {
                    console.log(this.title)
                }
            }
        }
    </script>
    
    <!--scoped样式组件局部化-->
    <style scoped>
        h1 {
            color: red;
        }
    </style>
    
  • 相关阅读:
    命令行工具--netstat
    Man手册--nmap
    bc -l 对于 %取模计算出错
    离散对数和原根 欧拉定理证明
    bc-win32-power-echo-vim-not-work
    2010版EXCEL下方sheet工作表隐藏了
    word多出空标题,样式是列出段落
    plantuml
    久石让《龙猫》豆豆龙 钢琴视奏版
    神奇校车 = topsage
  • 原文地址:https://www.cnblogs.com/plf-Jack/p/11444567.html
Copyright © 2011-2022 走看看