Vue(第一部分)

130 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

前言

大家好,我是掘金新用户小钻风头领,今天是我正式更文的第七天;

VsCode开发工具

1.基本的数据模型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- vue入门 -->
    <div id="app">
        <!-- 使用插值表达式获取数据 -->
        {{message}}

    </div>
    <script src="js/vue.min.js"></script>    
    <script>
        //创建一个vue对象
        new Vue({
            el:'#app',  //绑定vue作用的范围
            data:{      //定义页面中显示的模型数据
                message:'卧槽你好' 
            }
        })
    </script>
</body>
</html>

2. 公共代码抽取

VS Code:文件-首选项-用户片段

{
    "vuehtm": {
        "scope": "html",
        "prefix": "vuehtml",
        "body": [
            "<!DOCTYPE html>",
            "<html lang=\"en\">",
            "",
            "<head>",
            "   <meta charset=\"UTF-8\">",
            "   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",
            "   <meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\">",
            "<title>Document</title>",
            "</head>",
            "",
            "<body>",
            "           <div id=\"app\">",
            "",
            "           </div>",
            "<script src=\"vue.min.js\"></script>",
            "<script>",
            "       new Vue({ ",
            "               el: '#app',",
            "               data: {",
                            "",
            "               }",
            "           })",
            "</script>",
            "</body>",
            "",
            "</html>",
        ],
        "description": "Create vue template"
    }
}

3.基本语法(基本数据渲染和指令)

1.v-bind指令

<body>
    <div id="app">
        <!-- v-bind指令
            单向数据绑定
            这个指令一般用于在标签属性里,获取值
        -->
        <h1 v-bind:title="message">
            {{content}}
        </h1>
        <!-- 简写 -->
        <h2 :title="message">
            {{content}}
        </h2>
    </div>
    <script src="js/vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                content: '我是标题',
                message: '页面加载于' + new Date().toLocaleString()
            }
        })
    </script>
</body>

2.v-model指令 双向绑定指令

<body>
    <div id="app">
        <!-- v-model指令
           
        -->
        <input type="text" v-bind:value="searchMap.keyWord"/>
        <!--双向绑定 -->
        <input type="text" v-model="searchMap.keyWord" />

        <p>{{searchMap.keyWord}}</p>
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
               searchMap:{
                   keyWord: '孙尚香'
               }
            }
        })
    </script>
</body>

3.v-if指令

<body>
     <div id="app">
          <input type="checkbox" v-model="ok" />是否同意
          <!-- 当勾选同意的时候 显示好的
                        不勾选的时候显示抱歉
                -->
          <h1 v-if="ok">好的</h1>
          <h1 v-else>抱歉</h1>
     </div>
     <script src="vue.min.js"></script>
     <script>
          new Vue({
               el: '#app',
               data: {
                    ok: false
               }
          })
     </script>
</body>

4.事件操作

<body>
    <div id="app">
        <!-- vue绑定事件 -->
        <button v-on:click="search()">查询</button>
        <!-- 简写方式 -->
        <button @click="demo()">查询</button>
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                searchMap: '狗蛋'
            },
            //查询结果
            result: {},
            methods: { //定义多个方法
                search() {
                    console.log('search....')
                },
                demo() {
                    console.log('demo....')
                }
            }
        })
    </script>
</body>

5.修饰符

<body>
    <div id="app">
        <form action="save" v-on:submit.prevent="onSubmit">
            <input type="text" id="name" v-model="user.username" />
            <button type="submit">保存</button>
        </form>
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                user: {}
            },
            methods: {
                    onSubmit() {
                        if (this.user.username) {
                            console.log("提交表单")
                        } else {
                            alert("请输入用户名")
                        }
                    }
                }
        })
    </script>
</body>

6.循环

<body>
    <div id="app">
        <ul>
            <li v-for="n in 10">循环出来的数字:{{n}}</li>
        </ul>
        <ol>
            <li v-for="(n,index) in 10">循环出来的数字:{{n}} ,循环出来的下标:{{index}}</li>
        </ol>
        <hr />
        <!-- 循环数组对象 -->
        <table>
            <tr v-for="us in userList">
                <td>{{us.id}}</td>
                <td> {{us.username}}</td>
                <td> {{us.age}}</td>
            </tr>
        </table>

    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                userList: [{
                        id: 1,
                        username: '狗蛋',
                        age: 19
                    },
                    {
                        id: 2,
                        username: '铁柱',
                        age: 32
                    },
                    {
                        id: 3,
                        username: '翠花',
                        age: 23
                    }
                ]
            }
        })
    </script>
</body>

7. 组件

<body>
     <div id="app">
          <Navbar></Navbar>
     </div>
     <script src="vue.min.js"></script>
     <script>
          new Vue({
               el: '#app',
               //定义vue使用的组件
               components: {
                    //组件名称
                    'Navbar': {
                         //组件内容
                         template: '<ul><li>首页</li><li>管理</li></ul>'
                    }
               }
          })
     </script>
</body>

8.全局组件

<body>
        <div id="app">
                <!-- 全局组件的使用 
                        创建文件夹 放入JS文件
                        在使用的页面上导入使用标签即可
                 -->
                <Navbar></Navbar>
        </div>
        <script src="vue.min.js"></script>
        <script src="components/Navbar.js"></script>
        <script>
                new Vue({
                        el: '#app',
                        data: {

                        }
                })
        </script>
</body>

9.vue的生命周期

<body>
    <div id="app">  
        <!--  -->
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {

            },
            created(){
                //在页面渲染前执行
                console.log("created...")
            },
            mounted(){
                //在页面渲染之后执行
                console.log("mounted...")
            }
        })
    </script>
</body>