VUE框架进阶一

目录

1.打包工具:webPack,Gulp

框架和库的区别:

1、vue起步

 2.创建一个新的实例

1.el属性=element

2.data:数据

3.指令

3.1、v-if 和v-show

3.2、v-bind属性绑定

3.3 v-on事件绑定

3.4 vue的事件修饰符

3.5 vue的v-for列表渲染

3.6 v-model的双向数据绑定

 4.侦听器watch的使用

5.计算属性computed

6.计算属性setter方法

7 过滤器filter


1.打包工具:webPack,Gulp

vue.js react.js angular.js合称前端三大主流框架。

vue注重于构建用户界面的框架,只关注视图层(MVC-V这层),可以和第三方库兼容。

框架好处:开发效率高、

原生JS(兼容性低)-》(jQuery 解决兼容性,开发模式写法较复杂)-》(前端模板引擎(生成DOM,不再渲染页面。解决写法复杂))=》(angular.js/vue.js(减少不必要的DOM操作,提高渲染效率,双向绑定))

框架和库的区别:

框架:完整的解决方案,对项目侵入性大。重选就需重构;但是功能性大。

库:某一个功能,侵入性小;容易切换。

MVVC:前端视图层的开发思想,M、V、VM(VM是调度者,分割V/M。)

M(每个页面中单独的数据)和V(html结构)

app.js(入口,请求由此入但没有路由分发功能)->router.js(只负责路由分发,不处理逻辑)->controller(只负责业务处理,不涉及crud)->model (只负责sql操作)

1、vue起步

引包、

 2.创建一个新的实例

new Vue();

vue中存属性

1.el属性=element

2.data:数据

插值表达式实现数据绑定{{数据}}或通过指令v-。

补充两个插值表达式{{2>1?true:false}} 可插入表达式、{{txt.split(").reverse().join('')}}可插入运算 反转单词。也能插入方法,基本什么都能插。

在实例化的时候,直接将属性里的值暴露出来了,所以可以直接用属性,也可以通过$data.属性点出来。

例:基础的v-html v-text 

3.指令

3.1、v-if 和v-show

条件渲染

v-if和v-show区别:v-if是移除dom元素相当于remove;v-show是改变style,显示变成隐藏了。

v-show始终有初始化的渲染,对性能消耗少,不会一直销毁和重建。

v-if不会有初始化渲染,但是一直操作的是dom。

频繁性比较多的用v-show较好。

3.2、v-bind属性绑定

对哪个属性进行绑定就在那个属性前面加v-bind

例:v-bind:title 就把实例的title放在了元素标签里。可简写为冒号

3.3 v-on事件绑定

v-on:click="事件名",事件在vue实例里声明

声明事件通过 methods:{方法}

经典案例之当点击切换的时候,这个div的颜色动态变化。

    <div id="app">
      <div class="box" :class="{active:isActive}" >hi</div>
      <button @click="changeClick">切换</button>
    </div> 
    <script type="text/javascript">
      var vue=new Vue({
          el:'#app',
          data:{
            isActive:false,
          }, 
          methods:{
            changeClick(){
              this.isActive=!this.isActive
            }
          }     
      })
    </script>
<style>
  .box{
   width: 200px;
   height: 200px;
   background-color: red;
  }
  .active{
    background-color: green;
  }
</style>

3.4 vue的事件修饰符

<!-- 阻止单击事件继续传播 --> <a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 --> <form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 --> <a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 --> <form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 --> <!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 --> <div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 --> <!-- 即事件不是从内部元素触发的 --> <div v-on:click.self="doThat">...</div>

可以直接看官网的事件修饰符,蛮简单的这一块。

事件监听的好处:

1.代码易读、易定位。

2.无需再自己写自己写逻辑处理,直接交给vue处理。和DOM完全解耦,可测性高。

3.自动销毁机制。

3.5 vue的v-for列表渲染

 v-for='index,循环取数 in 数组' 不建议在v-for里使用index作为key。因为vue发现key相同的话就不会再更新DOM了。

例:循环数组

 <div id="app">
     <ul>
       <li class="li" v-for=' (item,index) in listMenu'>
         {{item.name}}
         {{index}}
       </li>
     </ul>
    </div> 

      var vue=new Vue({
          el:'#app',
          data:{
            listMenu:[
              {id:1,name:"列表1"},
              {id:2,name:"列表2"},
            ]
          }, 
           
      })

遍历对象:

    <div id="app">
     <ul>
       <li v-for='(val,key) in obj'>
         {{key+val}}
       </li>
     </ul>
    </div> 
      var vue=new Vue({
          el:'#app',
          data:{
            obj:{
            title:"hellod world",
            name:"jack"
          } 
          },
         
      })

attention:当使用v-for的时候一定要给每一个这个元素添加一个:key属性 唯一,尽量绑id,因为index可能会出错,理由同上。使用:key的原因是跟踪每一个节点的身份,从而DOM对这个元素再次操作的时候不用再每一条数据都追踪,只用追踪对应的这一条数据。这样会高效。

3.6 v-model的双向数据绑定

例:

 页面显示如下:

当更改视图里的hello world时,对应着的数据层里的也会更改。当然更改数据层里的数据视图肯定会跟着改变。

 4.侦听器watch的使用

4.1普通监视:

 watch:{

            'msg':function(newV,oldV) {

              console.log(oldV,newV);

            }

          }

key:msg是data的属性名,value是监视后的行为。newV:新值、oldV:旧值。

4.2深度监视:Object/Array

当数据为复杂数据类型时就可以使用到深度监视

例:

 <div id="app">
       <button @click='checkedNames[0].name="Tom"'>Tom</button>
    </div> 
      var vue=new Vue({
          el:'#app',
          data:{
           msg:"",
           checked:false,
           checkedNames:[{id:1,name:"Jack"}],
          },
          watch:{ 
            "checkedNames":{
              deep:'true',
            handler:function(newV,oldV) {
              console.log(newV[0].name);
            }
            }      
          }
      })

此时可以监听到数组的变化。

5.计算属性computed

因为用插值表达式对于一些复杂的计算很麻烦,所以这里可以用到简便的computed计算。

computed计算默认只有getter方法。监听计算属性。

例:这样就能实现反转。

    <div id="app">
     <p>{{reverseMsg}}</p>
    </div> 
      var vue=new Vue({
          el:'#app',
          data:{
           msg:"hello world",
          },
          computed:{
            reverseMsg:function() {
              return this.msg.split('').reverse().join('');
            }
          }
      })

最大的优点:能产生缓存,如果数据没有发生变化那就直接从缓存中取。如果数据发生变化就重新计算重新渲染。如果不用计算属性的话,就会重新渲染整个页面,这样性能是不是就更低了。如果页面有大量数据,那是不是性能就更更更低了?

6.计算属性setter方法

简单,不赘述

7 过滤器filter

作用:数据展示更精准。

分为局部和全局的过滤器

局部在每一个实例里使用,不加赘述

全局:

   /* 全局,注意 没有s */

      Vue.filter('过滤器名字',((对应value值)=>{

         这里对value值进行操作

      }))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值