3-Vue基本知识


本项目的前端使用VSCode编译器

VSCode的使用

  1. 在本地创建空文件夹

  2. 使用VSCode打开空文件夹

  3. 把文件夹保存为工作区(将工作区另存为)

ES6

es6如何定义变量?定义变量的特点?

<script>
    // js中定义变量:var a = 10;
    // 在es6中,定义变量使用let关键字
    // var声明的变量没有局部作用域
    // let声明的变量  有局部作用域
    // 1.创建代码块,定义变量
    {
        var a = 10;
        let b = 20;
    }
    // 2.在代码块外部输出变量
    console.log(a);
    console.log(b);
</script>

数组解构

<script>
    // 传统写法
    let a = 1, b = 2, c = 3;
    console.log(a,b,c);

    // es6的写法
    let [x,y,z] = [10,20,30];
    console.log(x,y,z);
</script>

对象结构

<script>
    // 定义对象
    let user = {name:"Helen",age:18}

    // 传统写法
    let name1 = user.name;
    let age1 = user.age;
    console.log(name1,age1);

    // es6
    let {name,age} = user   // 注意:结构的变量必须是user中的属性
    console.log(name,age);
</script>

模板字符串

<!--以后会经常在飘符号里取后端controller层传过来的值-->
<script>
    // 1.`可以实现换行
    let string1 = `Hey, 
    can you stop angry now?`
    console.log(string1);

    // 2.在`符号里使用表达式获取变量值
    let name = "Mike"
    let age = 27
    let info = `My Name is ${name},I am ${age + 1} years old next year.`
    console.log(info);

    // 3.在`符号里调用方法
    function f1(){
        return "hello f1"
    }
    let str = `demo,${f1()}`
    console.log(str)
</script>

声明对象

<script>
    const age = 12
    const name = "lucy"

    const p1 = {name,age}
    console.log(p1)
</script>

定义方法的简写方式

<script>
    // 传统方法
    const p1 = {
        syaHi:function(){
            console.log("Hi")
        }
    }
    p1.syaHi();

    // es6
    const p2 = {
        sayHi(){
            console.log("Hi")
        }
    }
    p2.sayHi()
</script>

对象拓展运算符

<script>
    // 对象拷贝
    let p1 = {name:"Amy",age:15}
    let someone = {... p1}
    console.log(someone)

    // 对象合并
    let age = {age:15}
    let name = {name:"Amy"}
    let p2 = {...age,...name}
    console.log(p2)
</script>

箭头函数

<script>
    // 传统
    let f1 = function(a){
        return a + 1;
    }
    console.log(f1(1))

    // es6
    let f2 = a => a + 1		// 左边的a对应参数,右边的a对应返回值
    console.log(f2(1))

    // 复杂一点的方法
    let f3 = (a,b) => {
        let res = a + b
        return res
    }
    console.log(f3(6,2))

    // 前面的代码相当于
    let f4 = (a,b) => a + b
    console.log(f4(6,2)) 
</script>

Vue.js

Vue是一套用于构建用户界面的渐进式框架

  1. 在VSCode中写感叹号,就会自动创建html骨架

  2. 引入vue的js文件,类似于jquery(可以使用压缩的:vue.min.js)

    <script src="vue.min.js"></script>
  3. 在html页面中创建div标签,div添加id属性

    <div id="app"></div>
  4. 编写vue代码,固定的结构

    <script>
        // 创建一个vue对象
        new Vue({
            el:'#app',  // 绑定vue作用的范围
            data:{      // 定义页面中显示的模型数据
                message:'Hello Vue!'
            }
        })
    </script>
  5. 插值表达式,获取data里面定义的值

    <div id="app">
        <!--插值表达式,绑定vue中的data数据-->
        {{message}}
    </div>
  6. 总体代码

    <body>
        <div id="app">
            <!--插值表达式,绑定vue中的data数据-->
            {{message}}
        </div>
        <script src="vue.min.js"></script>
    
        <script>
            // 创建一个vue对象
            new Vue({
                el:'#app',  // 绑定vue作用的范围
                data:{      // 定义页面中显示的模型数据
                    message:'Hello Vue!'
                }
            })
        </script>
    </body>

抽取代码片段

文件 → 首选项→ 用户片段 → 新建全局代码片段 / 或文件夹代码片段:vue-html.code-snippets

用如下代码替换:

{
    "vue htm": {
        "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: {",
            "                $1",
            "            }",
            "        })",
            "    </script>",
            "</body>",
            "",
            "</html>",
        ],
        "description": "my vue template in html"
    }
}

输入vue,就可以看到快捷键提示

vue指令 - 单向和双向绑定

<div id="app">
    <!--v-bind指令
       单向数据绑定
       这个指令一般用在标签属性中,获取值-->
    <!--在冒号前省略了 v-bind-->
    <h1 :title="message">
        {{content}}
    </h1>    
</div>

data: {
    content:'我是标题',
    message:'页面加载于 ' + new Date().toLocaleString()
}
<div id="app">
    <!--v-model指令
        双向数据绑定
        这个指令一般用在标签属性中,获取值-->
    <!--在冒号前省略了 v-bind-->
    <!--单向绑定-->
    <!--单向绑定的效果:在浏览器上,改变一个值,其他值不会跟着变-->
    <input type="text" v-bind:value="searchMap.keyWord"/>
    <!--双向绑定-->
    <!--双向绑定的效果:在浏览器上,改变一个值,其他值跟着一起变-->
    <input type="text" v-model="searchMap.keyWord"/>
    <p>{{searchMap.keyWord}}</p>
</div>

data: {
    searchMap:{
        keyWord:'谷粒学院'
    }
}

vue指令 - vue事件绑定

<body>
    <div id="app">
        <!--vue绑定事件-->
        <button v-on:click="search()">查询</button>

        <!--vue绑定事件简写-->
        <button @click="f1()">查询1</button>
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                searchMap:{
                    keyWord: '谷粒学院'
                },
                //查询结果
                result: {}
            },
            methods:{	// 定义多个方法
                search() {
                    console.log('search....')
                },
                f1() {
                    console.log('f1...')
                }
            }
        })
    </script>
</body>

条件渲染(v-if)

<body>
    <div id="app">
        <input type="checkbox" v-model="ok"/>是否同意
        <h1 v-if="ok">柚子</h1>
        <h2 v-else>柠檬</h2>
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                ok:false
            }
        })
    </script>
</body>

简单的列表渲染(v-for)

<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>
</div>

遍历数据列表(v-for)

<body>
    <div id="app">
        <table border="1">
            <tr v-for="user in userList">
                <td>{{user.id}}</td>
                <td>{{user.username}}</td>
                <td>{{user.age}}</td>
            </tr>
        </table>
    </div>
    <script src="vue.min.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                userList:[
                    {id:1,username:'helen',age:18},
                    {id:2,username:'peter',age:28},
                    {id:3,username:'andy',age:28}
                ]
            }
        })
    </script>
</body>

文章作者: Prannt
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Prannt !
评论
  目录