Vue.js入门

之前一直用的是jQuery,jQuery手动操作DOM导致性能不够好,因为DOM修改导致的页面重绘、重新排版!重新排版是用户阻塞的操作,同时,如果频繁重排,CPU使用率也会猛涨!

Vue.js是数据驱动的,它通过一些特殊的HTML语法,将DOM和数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。

一个简单的例子:

  一个页面需要通过异步请求获取数据然后展示在页面上,用jQuery方法处理是:

$(function(){
    var $jsontip = $(".car_wrap");
    var strHtml = "";//存储数据的变量
    $jsontip.empty();//清空内容
    $.each(carlist,function(infoIndex,info){
      if((infoIndex+1)%3 == 0) {
        strHtml += "<div class=‘car_item margin_no‘>";
      } else {
        strHtml += "<div class=‘car_item‘>";
      }
      strHtml += "<a class=‘img_con‘ href=‘detail.html?id="+info["id"]+"‘><img class=‘car_img‘ src=‘"+info["carpic"]+"‘></a>";
      strHtml += "<div class=‘car_info‘>";
      strHtml += "<a href=‘detail.html?id="+info["id"]+"‘><div class=‘car_size‘> 型号:"+info["carsize"]+"</div></a>";
      strHtml += "<a href=‘detail.html?id="+info["id"]+"‘><div class=‘car_des‘> 座位数(人):"+info.setinfo["seating"]+"</div></a>";
      strHtml += "<div class=‘g_car_reserve‘ data-contacts="+JSON.stringify(info.contacts)+">立即预定</div>";
      strHtml += "</div>";
      strHtml += "</div>";
    });
    $jsontip.html(strHtml);//显示处理后的数据
  });

这样需要动态拼成DOM节点,或者用模版。

  看下Vue.js的处理方法:

<script>
 //相当于Model
  var carlist = [
  {
  "url":"/1",
  "carpic":"",
  "carsize":"da",
  },
  {
  "url":"/2",
  "carpic":"",
  "carsize":"small",
  },
  ];
 //创建一个Vue实例(ViewModel)
  var app = new Vue({
    el: ‘#home‘,
    data: {
      list: carlist
    }
  });
</script>

  HTML中的代码为:

<!--这是View-->
<div class="home_wrap"  id="home">
    <div class="big_banner">
    </div>
    <div class="car_wrap clearfix">
      <a v-for="item in list">
        <img class="car_img" src="">
        <div class="car_info">
          <div class="car_size">
            汽车型号:{{item.carsize}}
          </div>
          <div class="car_reserve">立即预定</div>
        </div>
      </a>
    </div>
 </div>

是不是方便许多,这里就不再需要拼接DOM,也不会有频繁的DOM操作了。接下来看看为什么Vue.js可以这样做。

Vue.js是一个javascript MVVM(Model-View-ViewModel)库,Vue.js中ViewModel是和View以及Model交互的过程如下:

ViewModel是Vue.js的核心,它是一个Vue实例。Vue实例是作用于某一个HTML元素上的。上述代码中:

  var app = new Vue({
    el: ‘#home‘,
    data: {
      list: carlist
    }
  });

这就创建了一个Vue实例(ViewModel),它连接View与Model。HTML中id为home中的代码就是view, Model就是数据模型。上图中,DOM Listeners和Data Bindings看作两个工具,它们是实现双向绑定的关键。从View侧看,ViewModel中的DOM Listeners工具会帮我们监测页面上DOM元素的变化,如果有变化,则更改Model中的数据;从Model侧看,当我们更新Model中的数据时,Data Bindings工具会帮我们更新页面中的DOM元素。

双向绑定示例:

MVVM模式本身实现了双向绑定,在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定。

 <div class="car_des">
   <input type="text" v-model="item.carsize" />
 </div>

将item.carsize绑定到文本框,当更改文本框的值时,

<div class="car_size">
  汽车型号:{{item.carsize}}
</div>

这里用到的item.carsize也会更新

Vue.js的常用指令

1.v-if指令

v-if是条件渲染指令,它根据表达式的真假来删除和插入元素。举例:

<body>
   <div id="app">
    <h1>Hello, Vue.js!</h1>
    <h1 v-if="yes">Yes!</h1>
    <h1 v-if="age >= 25">Age: {{ age }}</h1>
    <h1 v-if="name.indexOf(‘jack‘) >= 0">Name: {{ name }}</h1>
  </div>
</body>
<script src="js/vue.js"></script>
<script>
  var vm = new Vue({
      el: ‘#app‘,
      data: {
          yes: true,
          age: 28,
          name: ‘11‘
      }
  });
</script>

在console中改变其中的值后的效果:

2.v-show指令

v-show也是条件渲染指令,和v-if指令不同的是,使用v-show指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性。

3.v-else指令

v-else指令为v-ifv-show添加一个“else块”。v-else元素必须立即跟在v-ifv-show元素的后面——否则它不能被识别

4.v-for指令

v-for指令基于一个数组渲染一个列表,v-for="item in items"

5.v-bind指令

v-bind指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute),例如:

<a href="javascripit:void(0)" v-bind:class="a === 1 ? ‘active‘ : ‘‘">1</a>

可以缩写为:

<a href="javascripit:void(0)" :class="a === 1 ? ‘active‘ : ‘‘">1</a>

6.v-on指令

v-on指令用于给监听DOM事件,它的用语法和v-bind是类似的,例如监听<a>元素的点击事件:<a v-on:click="doSomething">

可以缩写为:<a @click="doSomething">

总结

  理解了Vue.js的MVVM模型和它的双向绑定机制,自己也需要从之前用jQuery手动操作DOM元素思维转向数据驱动的Vue.js

参考:

Vue.js--60分钟快速入门

浅谈Vue.js

时间: 2024-08-04 00:27:08

Vue.js入门的相关文章

Vue.js 入门之路

最近在学习 Vue ,简单的介绍一下Vue.js,它是一款流行的 JavaScript 前端框架,旨在更好地组织与简化 Web 开发,Vue 是面向数据的编程,也就是 MVVM 模式.想了解的更多就去Vue.js官网. Vue.js 入门 很多大牛都说学习一门编程最好的方式就是阅读官方文档,这是不可否认的.问题是像我这种新人阅读那种干巴巴的文档确实有点无聊又吃力,附带效果:头皮发麻.恰好在网上找到了一些我觉得很实用的教程,在这里分享出来,希望能帮助和我一样的新手尽快的入门.在学习 Vue.js 

Vue.js 入门指南之“前传”(含sublime text 3 配置)

题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴级别”的前端开发人员,大牛请绕过. 1,下载安装Node.js 去 Node.js 官网下载一个Windows环节的安装包 node-v6.2.0-x64.rar 文件,一路安装下去即可.官网访问很慢,可以试试中文网 http://nodejs.cn/ 2,配置Vue环境 一开始看<基于Webpac

Vue.js 入门指南之“前传”

题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴级别”的前端开发人员,大牛请绕过. 1,下载安装Node.js 去 Node.js 官网下载一个Windows环节的安装包 node-v6.2.0-x64.rar 文件,一路安装下去即可.官网访问很慢,可以试试中文网 http://nodejs.cn/ 2,配置Vue环境 一开始看<基于Webpac

一个Java程序猿眼中的前后端分离以及Vue.js入门

松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就没有多说.但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是两眼一抹黑,所以今天松哥想和大家聊一下前后端分离以及 Vue.js 的一点事,算是一个简单的入门科普吧. 前后端不分 后端模板:Jsp.FreeMarker.Velocity 前端模板:Thymeleaf 前

vue.js 入门案例

作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1 vue.js 研究 1.1 vue.js 介绍 1.1.1.vue.js是什么? Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计 为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代化的工具链以及各种 支持类库结合使用时, Vue 也完全能够为复杂的单页应用提供驱动. 渐进式框架:Progressi

vue.js 入门

简单一句话来描述:vue.js是一个前端框架. 官方文档:https://cn.vuejs.org/v2/guide/index.html 虽然,我以前也会改一些前端样式,但主要是基于HTML和CSS,HTML主要控制页面的结构,CSS主要来控制样式.涉及到JavaScript就比较小白了. 我花了一个下午照着官方文档做练习,当然是只创建一个xxx_demo.html文件,在<script></script> 标签对之间写 Vue.js语法.这不算错,但在工程化的今天,这么学得猴年

Vue.JS入门学习随笔

PS:先说说学习Vue的缘由吧,学习完了React之后,突然发现又出了一款叫做vue的框架,而且据说可以引领又一波新框架的潮流,我容易吗我!!! Vue.js(读音 /vju?/, 类似于view)是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用. Vue.js 的目标是通过尽可能简单

Vue.js入门。十个指令。4种常用方法

在进入Vue之前我们还是先了解一下使用Vue的面向对象的三种创建方式吧 类和对象是 面向编程中最重要的两个概念,一定要理清 类 : 是一个抽象概念(不是实际存在),(属性,行为) 对象 : 是实际存在的,是对象的实例化,看过几个例子你就会明白. 在ES6之前:1.内置的构造函数:2.自定义的构造函数:3.字面量 . 1.内置的构造函数: 2.自定义的构造函数: 3.字面量 . 创建Vue实例 首先要确保你的项目引入了Vue.js,需要用他的框架就必须要引用! 创建一个vue实例非常简单 data

萌新--关于vue.js入门及环境搭建

十几天闭关修炼,恶补了html跟css以及JavaScript相应的基础知识,恰巧有个群友准备做开源项目,愿意带着我做,但是要求我必须懂vue.js,所以开始恶补vue.js相关的东西. 在淘宝上买了相关视频,前两章简介听得懵懵懂懂的,能够勉强理解.到第三章,开始有案例之后,整个人就懵了,为啥老师的一个程序文件夹那么多东西,我就一个可怜兮兮的html??等等,老师说这node.js是什么? 不是另外一个框架吗?webpack又是啥?... 一连串懵逼之后,终于发现,视频不适合我.开始找其他的途径