有没有大神可以写一个vue.js,点击更改当前div样式的实例

JavaScript025

有没有大神可以写一个vue.js,点击更改当前div样式的实例,第1张

html>

<head>

<title>Hover</title>

<style type="text/css">

*{

padding: 0

margin: 0

font-size: 11pt

}

div{

float: left

width: 100px

margin-right: 20px

padding: 5px

border: 1px solid #999

background-color: #eee)

Vue.js介绍:

Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。

如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM。它通过一些特殊的HTML语法,将DOM和数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。

当然了,在使用Vue.js时,你也可以结合其他库一起使用,比如jQuery。

网站搭建框架之vue

Vue是web前端快速搭建网站的框架之一。它与jQuery有所不同,是以数据驱动web界面(以操作数据改变页面,而jQuery是以操作节点来改变页面),同时,vue还实现了数据的双向绑定,可及时响应用户的输入。最主要的是vue的写法简单,容易掌握,组件形式可以大大提高工作效率。

对于vue的使用可以分为两种使用形式:1.引入vue.js文件,在js中将vue实例化;2.通过node安装第三方包--vue,搭建脚手架,用脚手架将页面分成几个组件编写,从而利用组件来搭建页面。

引入vue.js的写法

Vue分为V层(视图层)和M层(数据层),一般都是由M层的数据来驱动V层的改变。而vue的常用指令数量不多且写法简单。常用的有v-html、v-text、v-show、v-if、v-else、v-for、v-bind:、v-model。v-html和v-text都是将数据写进标签内,但它们的不同之处在于v-text会将标签当做文本内容写入

,而v-html则会对标签进行编译,只显示标签内的内容。

至于v-show、v-if、v-else这三个指令都是通过布尔值的判断来执行的,当布尔值为真时,设置了v-show、v-if指令的标签会显示出来,当布尔值为假时,标签隐藏;而v-else与这两个指令相反。除此之外,v-show和v-if、v-else之间也有差别,v-show是改变标签的display属性来使标签显示或隐藏;而v-if、v-else是通过添加或删除节点,来显示或隐藏标签的。

V-for是vue的一种遍历方法,这个方法极大的简化了数组或对象的遍历并显示到页面的步骤

而v-bind:是对html属性或自定义属性的数据驱动方式,格式为v-bind:href,可简写为:href。对于类(class)的操作是通过布尔值来判断增加或者隐藏类,同时。类和样式(style)所接受的数据类型为对象。

V-model指令的作用是将数据进行双向绑定,仅限于输入类型标签。当用户在页面输入时,数据层的数据会跟着改变。这是VM模式。由v驱动m。

除了这些普通的指令之外,还有事件指令v-on:,可简写为@+事件名,例如:@click,并将执行函数写到vue的methods中

通过脚手架来写项目的话,可用通过写组件,再将组件引入(注册)到另一个vue文件里拼接在一起,从而构建出一个页面。

(组件书写格式)

(组件整合)

(注册路由)

路由是通过vue-router来实现的,在注册路由的时候要将router实例化。不同的路由跳转不同的页面,这是搭建单页面应用的优势。

而父组件与子组件之间的通讯可以通过props将父组件的信息传递给子组件,改变子组件的内容,这样子组件的复用就不会有障碍了,而子组件传递信息给父组件或者其他组件的通讯则需vuex。

通过引入vuex并实例化一个Vuex.Store作为一个公共平台,将数据进行传输。通过vue的computed方法接收数据,通过methods方法改变数据。而这个公用平台可以实现组件与组件之间的信息传递,从而实现组件之间的交互。

通过一个星期的实战,深深的体会到了vue的优势,在构建移动端这方面的效率很高。但在搭建的过程中,还是少不了与jQuery结合,毕竟每个工具都有其优点,择其优而用是明智的选择。

查看一下效果,应该很容易得到结果

有时我们可能需要重复一个包含多个节点的块,这时可以用 <template>标签包裹这个块。这里的 <template>标签只起到语义上的包裹作用,其本身不会被渲染出来。例如:

简单值 (primitive value) 即字符串、数字、boolean 等并非对象的值。对于包含简单值的数组,你可用 $value 直接访问值:

有时我们可能想要更明确地访问当前作用域的变量而不是隐式地回退到父作用域。你可以通过提供一个参数给 v-repeat 指令并用它作为将被迭代项的别名:

Vue.js 内部对被观察数组的变异方法 (mutating methods,包括 push(), pop(), shift(), unshift(), splice(), sort() 和 reverse()) 进行了拦截,因此调用这些方法也将自动触发视图更新。

下面是一个演示的例子,点击按钮的时候数据项会被移除

Vue.js 给被观察数组添加了两个便捷方法:$set() 和 $remove() 。

你应该避免直接通过索引来设置数据绑定数组中的元素,比如 demo.items[0] = {},因为这些改动是无法被 Vue.js 侦测到的。你应该使用扩展的 $set() 方法:

$remove() 只是 splice()方法的语法糖。它将移除给定索引处的元素。当参数不是数值时,$remove() 将在数组中搜索该值并删除第一个发现的对应元素。

当你使用非变异方法,比如filter(), concat() 或 slice(),返回的数组将是一个不同的实例。在此情况下,你可以用新数组替换旧的数组:

你可能会认为这将导致整个列表的 DOM 被销毁并重新渲染。但别担心,Vue.js 能够识别一个数组元素是否已有关联的 Vue 实例, 并尽可能地进行有效复用。

在某些情况下,你可能需要以全新的对象(比如 API 调用所返回的对象)去替换数组。如果你的每一个数据对象都有一个唯一的 id 属性,那么你可以使用 track-by 特性参数给 Vue.js 一个提示,这样它就可以复用已有的具有相同 id 的 Vue 实例和 DOM 节点。

例如:你的数据是这个样子的

那么你可以像这样给出提示:

在替换 items 数组时,Vue.js 如果碰到一个有 _uid: '88f869d' 的新对象,它就会知道可以直接复用有同样 _uid 的已有实例。 在使用全新数据重新渲染大型 v-repeat 列表时,合理使用 track-by 能极大地提升性能。

你也可以使用 v-repeat 遍历一个对象的所有属性。每个重复的实例会有一个特殊的属性 $key。对于简单值,你也可以象访问数组中的简单值那样使用 $value 属性。

在 ECMAScript 5 中,对于给对象添加一个新属性,或是从对象中删除一个属性时,没有机制可以检测到这两种情况。针对这个问题,Vue.js 中的被观察对象会被添加三个扩展方法: $add(key, value), $set(key, value) 和 $delete(key)。这些方法可以被用于在添加 / 删除观察对象的属性时触发对应的视图更新。方法 $add 和 $set 的不同之处在于当指定的键已经在对象中存在时 $add 将提前返回,所以调用 obj.$add(key) 并不会以 undefined 覆盖已有的值。

v-repeat 也可以接受一个整数。在这种情况下,它将重复显示一个模板多次。 下面的例子将迭代3次。

有时候我们只需要显示一个数组的过滤或排序过的版本,而不需要实际改变或重置原始数据。Vue 提供了两个内置的过滤器来简化此类需求: filterBy 和 orderBy。