【Vue学习】基础语法(一)

基础语法(一)

一.Vue初体验

模板template:

	<div id="app">
        <h2>{{message}}</h2>     
    </div>

    <script src="./js/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                message : '你好啊',
            }
        })
    </script>

1.第一课(vue.js新方式)

  • 编程范式中属于声明式编程
  • 方便做到数据和界面分离,只需要更改data里面的数据即可改变全部要更改的数据
  • 当数据作出改变,界面会发生相应反应(响应式)
    <body>

    <!-- id为app的加双括号则可以打印msg的值,而下面这个只能显示{{msg}} -->
    <div>{{msg}}</div>
    <div id="app">
        {{msg}}
        <ul>  
            <li v-for="item in movies">{{item}}</li>
        </ul>
    </div>
    

    <script src="./js/vue.js"></script>
    <!-- 引入vue.js -->
    <script>
        //let(变量) const(常量)
        //编程范式中属于声明式编程
        const app = new Vue({ //创建一个Vue对象
            el: '#app',//用于要挂载要管理的程序
            data: {//定义数据
                msg : '你好啊,小傻瓜',
                movies : ['星际穿越','大话西游','少年派']
            }
        })
    </script>
</body>

通过app.movies.push(‘你好李焕英’) 就可以给数组添加元素,并返回新数组长度

2.而以前元素js的做法,在编程范式中属于命令式编程

步骤如下:
    1.创建div元素,设置id属性
    2.定义一个变量叫msg
    3.将msg变量放在前面的div元素中显示

3.计数器案例

    <div id="app">
        <h2>当前计数: {{counter}}</h2>
        <!--  <button v-on:click="counter++">+</button> -->
        <!-- <button v-on:click="counter--">-</button> --> 
        <button v-on:click="add">+</button>
        <button @click="sub">-</button>

    </div>

    <script src="./js/vue.js"></script>
    <script>
        const app = new Vue({
            el : '#app',
            data : {
                counter : 0
            },
            methods : {//定义方法
                add: function(){
                    console.log('add被执行');
                    this.counter++;//用this指向当前对象
                },
                sub: function(){
                    console.log('sub被执行');
                    this.counter--;
                }
            }
        })
    </script>

4.MVVM

  • MVVM 是vue实现 数据驱动视图双向数据绑定的核心原理,指的是Model,View和ViewModel.

  • 它把每个html页面都拆分成了三部分,Model表示当前页面渲染时所依赖的数据源;View表示当前页面所渲染的DOM结构(视图);而ViewModel表示vue的实例,是MVVM的核心,是它把当前页面的数据源和页面结构连接在一起.

5.插值操作 其它指令

  • v-once 后面无需跟表达式,表示元素和组件只渲染一次,不随着数据的改变而改变.
  • v-html 后面往往会跟上一个string类型,将string的html解析出来并渲染.
  • v-pre 跳过这个元素和它子元素的编译过程,直接显示原本的语法
  • v-cloak 用于隐藏浏览器可能会直接显示出为编译的Mustache语法

6. v-bind 动态绑定属性

  • 语法糖(简写): :

  • 动态绑定class

    • 动态绑定class(对象语法):

      1. 直接通过{}绑定一个类,如 class=“{‘active’: isActive}”
      2. 也可以通过判断,传入多个值,如 :class=“{‘active’: isActive, ‘line’:isLine}”
      3. 还可以和普通的类同时存在,并不冲突,如 class=“title” :class=“{‘active’': isActive, ‘line’:isLine}” 如果此时isActive和isLine都为true,那么此时三个类都存在
      4. 如果过于复杂,可以放在一个methods或者computed中,如class=“title” :class="classes"这里的classes是一个计算属性
     <h2 v-bind:class="active:true,line:false">
          <!--v-bind:属性名="类名1:boolean值,类名2:boolean值"  键值对  -->
         {{message}}
     </h2>
    
    • 动态绑定class(数组语法)

      1. class=“title” :class=“[active,line]” 此时的active和line是变量
      2. class=“title” :class=“getClasses()”
    <div id="app">
        <!-- 动态绑定class数组属性 -->
        <!-- 下面两个显示内容一样 -->
        <h2 class="title"  :class="[active,line]">{{message}}</h2>
        <h2 class="title"  :class="getClasses()">{{message}}</h2>
        
    </div>
   
    <script src="./js/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                message : '你好啊',
                active : 'aaaaa',
                line : 'bbbbbb'
            },
            methods: {
                getClasses: function(){
                    return [this.active,this.line]
                }
            }
        })
    </script>	
  • 动态绑定style css内联样式

      <h2 :style="{key(属性名): value(属性值)}">{{message}}</h2>
    
    • 动态绑定style(对象语法)

      1. 静态对象绑定(此时属性值’50px’的单引号不能省略,否则会当做一个变量去解析)
<h2 :style="{fontSize: '50px'}">{{message}}</h2>
  1. 动态对象绑定(将finalSize当成一个变量使用)

    此时data中有键值对  finalSize: '100px'
    
<h2 :style="{fontSize:  finalSize}">{{message}}</h2>
	此时data中有键值对 finalSize: 100
<h2 :style="{fontSize:  finalSize + 'px'}">{{message}}</h2>
	如果style中键值对过长,可在vue对象中的methods内封装成一个函数
<body>
    <div id="app">
        <h2 :style="{fontSize: finalSize + 'px',backgrongColor: finalColor}">{{message}}</h2>     
        <h2 :style="getStyles()">{{message}}</h2>
    </div>

    <script src="./js/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                message : '你好啊',
                finalSize : 100,
                finalColor : 'red',
            },
            methods:{
                getStyles: function(){
                    return {fontSize: this.finalSize + 'px', backgrongColor: this.finalColor}
                }
            }
        })
    </script>
</body>
  • 动态绑定style(数组语法)
<body>
    <div id="app">
        <h2 :style="[baseStyle,baseStyle1]">{{message}}</h2>
    </div>
   
    <script src="./js/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                message : '你好啊',
                baseStyle: {backgrondColor: 'red'},
                baseStyle1: {fontSize: '100px'},
            },
        })
    </script>
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值