Vue整理待续

首先通过将vue.js作为一个js库来使用,来学习vue的一些基本概念,我们下载了vue.js后,需要在页面上通过script标签引入vue.js,开发中可以使用开发版本vue.js,产品上线要换成vue.min.js。

<script type="text/javascript" src="js/vue.min.js"></script>
数据与方法

当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其data对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。还可以在Vue实例中定义方法,通过方法来改变实例中data对象中的数据,数据改变了,视图中的数据也改变。

window.onload = function(){
    var vm = new Vue({
        el:'#app',
        data:{message:'hello world!'},
        methods:{
            fnChangeMsg:function(){
                this.message = 'hello Vue.js!';
            }
        }
    });
}    
......

<div id="app">
    <p>{{ message }}</p>
    <button @click="fnChangeMsg">改变数据和视图</button>
</div>
指令

指令 (Directives) 是带有“v-”前缀的特殊属性。指令属性的值预期是单个JavaScript表达式,指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于DOM。常见的指令有v-bind、v-if、v-on。

对象语法

可以给v-bind:class传一个对象,以动态的切换class

<div class="static" v-bind:class="{active:isActive,'text-danger':hasError }"></div>
数组语法

可以给v-bind:class传一个数组,以应用一个 class 列表

<div v-bind:class="[activeClass, errorClass]"></div>
......

data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}

条件渲染

通过条件指令可以控制元素的创建(显示)或者销毁(隐藏),常用的条件指令如下

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>
-show

另一个用于根据条件展示元素的选项是 v-show 指令。用法和v-if大致一样,但是它不支持v-else,它和v-if的区别是,它制作元素样式的显示和隐藏,元素一直是存在的:

<h1 v-show="ok">Hello!</h1>
遍历数组
<ul id="example-1">
  <li v-for="item in items">
    {{ item}}
  </li>
</ul>

vue对象创建如下:

var example1 = new Vue({
  el: '#example-1',
  data: {
    items: ['foo','bar']
  }
})
事件绑定方法

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码,事件的处理,简单的逻辑可以写在指令中,复杂的需要在vue对象的methods属性中指定处理函数。

<div id="example-1">
  <!-- 在指令中写处理逻辑 -->
  <button v-on:click="counter += 1">Add 1</button>
  <p>The button above has been clicked {{ counter }} times.</p>
</div>
......
var example1 = new Vue({
  el: '#example-1',
  data: {
    counter: 0
  }
})

methods属性中指定处理函数:

<div id="example-2">
  <!-- greet 是在下面定义的方法名 -->
  <button v-on:click="greet">Greet</button>
</div>
......

var example2 = new Vue({
  el: '#example-2',
  data: {
    name: 'Vue.js'
  },
  // 在 `methods` 对象中定义方法
  methods: {
    greet: function () {
      // `this` 在方法里指向当前 Vue 实例
      alert('Hello ' + this.name + '!')
    }
  }
})
事件修饰符

实际开发中,事件绑定有时候牵涉到阻止事件冒泡以及阻止默认行为,在vue.js可以加上事件修饰符

<!-- 阻止单击事件继续传播 -->
<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>

可以用 v-model 指令在表单 <input> 及 <textarea> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素

计算属性 和侦听属性 computed  watch  和vm里一样的字典形式

var vm = new Vue({
  el: '#example',
  data: {
    message: 'Hello'
  },
  computed: {
    // 计算属性的 getter
    reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  }
})
window.onload = function(){
    var vm = new Vue({
        el:'#app',
        data:{
            iNum:1
        },
        watch:{
            iNum:function(newval,oldval){
                console.log(newval + ' | ' + oldval) 
            }
        },
        methods:{
            fnAdd:function(){
                this.iNum += 1;
            }
        }
    });
}

Vue是一种流行的JavaScript框架,用于构建用户界面。它采用了MVVM(Model-View-ViewModel的架构模式,通过数据驱动和组件化的方式来构建可复用的UI组件。 Vue的基本原理可以总结为以下几点: 1. 响应式数据:Vue使用了响应式的数据绑定机制。当数据发生变化时,相关的视图会自动更新。这是通过Vue的响应式系统实现的,它使用了ES5的Object.defineProperty()方法来劫持对象的属性访问,从而实现对数据的监听和更新。 2. 模板引擎:Vue使用了基于HTML的模板语法,将模板转换为虚拟DOM(Virtual DOM)。模板中可以使用Vue提供的指令、表达式和过滤器等功能,使开发者可以方便地操作数据和控制视图。 3. 虚拟DOM:Vue通过虚拟DOM来提高渲染性能。当数据发生变化时,Vue会先生成一个新的虚拟DOM树,然后与旧的虚拟DOM树进行比较,找出差异,并只更新需要更新的部分。这样可以避免直接操作真实DOM带来的性能损耗。 4. 组件化开发:Vue将UI界面划分为一个个独立的组件,每个组件都有自己的数据和视图。组件可以嵌套使用,形成复杂的应用界面。Vue提供了组件化开发的相关API,使得组件的定义、通信和复用变得简单和高效。 5. 生命周期钩子:Vue提供了一系列的生命周期钩子函数,用于在组件的不同阶段执行相应的操作。开发者可以在这些钩子函数中进行数据初始化、DOM操作、事件监听等操作,以及与服务器进行数据交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值