Vue第一章

一、什么是Vue.js?

来自官网的解释:

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

我觉得,说白了就是基于js的一个前端框架,,至于什么是渐进式框架,我是不懂,也希望有人能解答下。

vue快速入门

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/vue.js"></script>
</head>
<body>
<div id="app">
    <p>{{message}}<p/>
    <h4>{{name}}</h4>
</div>
<div> <!--没有交给Vue实例管理-->
    <p>{{message}}</p>
    <h4>{{name}}</h4>
</div>
<script>
    //声明式编程
    //Es6: let(变量) const(常量)
    let app = new Vue({
        el: '#app',  // 通过id,用于挂载要管理的元素
        data: {     //定义数据
            message: '吖吖',
            name: '你好,王辰'
        }
    })
</script>
</body>
</html>

这种方式可以做到,数据和界面完全分离

创建Vue实例,传入的是对象,{}中包含了el,data等属性,el决定了Vue实例要管理的元素,data是可以展示给页面的数据,数据可以来自网络,或者服务器加载

v-for遍历

<div id="app">
    <ul>
        <li v-for="item in movies">{{item}}</li>
    </ul>
</div>

<script>

    let app = new Vue({
        el: '#app',
        data: {
            movies: ['qwe','qwe','qwe','qwe']
        }
    })
</script>

一个简单的计数器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/vue.js"></script>
</head>
<body>
<div id="app">
    当前计数:{{counter}}
    <button v-on:click="ch(1)">+</button>
    <button @click="ch(-1)">-</button>
</div>

<script>

    const app = new Vue({
        el: '#app',
        data: {
            counter: 0
        },
        methods: {
            ch: function (num) {
                console.log("ch 被执行了")
                this.counter = this.counter + num
            }
        }
    })
</script>
</body>
</html>

methods: 用于zaivue中定义方法,中引用data中的属性,需要加上this. 这里面有一个proxy

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h4>{{message}}</h4><br>
    <h4 v-once>{{message}}</h4><br> <!--表示该指令只渲染一次,不会随着数据变化而变化-->
    <h4 v-html="url"></h4><br>
</div>
<script src="../js/vue.js"></script>

<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: '你好',
            name: 'd',
            url: '<a href="https://www.cnblogs.com/DF-fzh/p/5979093.html">博客园</a>'
        },
        methods: {
            gg: function () {

            }
        }
    })
</script>
</body>
</html>

为了让用户看不到 {{message}},使其更有好

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        [v-cloak]{
            display: none;
        }
    </style>
</head>
<body>
<div id="app">
   <h4 v-cloak> {{message}}</h4>
</div>
<script src="../js/vue.js"></script>
<script>
    setTimeout(function (){
        const app = new Vue({
            el: '#app',
            data: {
                message: '你好'
            },
            methods: {
                gg: function () {

                }
            }
        })
    },3000)
</script>


</body>
</html>

使用v-cloak指令, 当浏览器从上往下解析时,先执行v-cloak指令,的样式,然后执行script标签的vue代码后,会删除v-cloak指令.恢复样式

v-bind 动态绑定属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    {{message}}
    <img v-bind:src="imgUrl" alt="">
</div>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: '你好',
            imgUrl: 'https://imgconvert.csdnimg.cn/aHR0cHM6Ly9wMy10dC5ieXRlaW1nLmNvbS9vcmlnaW4vcGdjLWltYWdlL2JjN2E0MWE0MWUyMTQxMTE4ODg2NTA3M2UzNjJlY2U1?x-oss-process=image/format,png'
        },
        methods: {
            gg: function () {

            }
        }
    })
</script>
</body>
</html>

v-bind的语法糖写法

<div id="app">
    {{message}}
    <img :src="imgUrl" alt="">
    <a :href="a">b</a>
</div>
<script src="../js/vue.js"></script>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: '你好',
            imgUrl: 'https://imgconvert.csdnimg.cn/aHR0cHM6Ly9wMy10dC5ieXRlaW1nLmNvbS9vcmlnaW4vcGdjLWltYWdlL2JjN2E0MWE0MWUyMTQxMTE4ODg2NTA3M2UzNjJlY2U1?x-oss-process=image/format,png'
            ,a: 'https://www.cnblogs.com/isme-zjh/p/12018141.html'
        },
        methods: {
            gg: function () {

            }
        }
    })
</script>

v-model 来实现数据的双向绑定

posted @ 2020-10-11 22:45  且吃茶去  阅读(69)  评论(0编辑  收藏  举报