37.vue.js官网学习笔记(安装与介绍、vue实例、模板语法)

一、安装与介绍

1.用<script>引入

直接下载并用script标签引入,Vue会被注册为一个全局变量;在开发环境下,不能使用压缩版本,否则会失去所有常见错误相关的警告。

2.命令行工具

vue提供了官方的cli,为单页面应用(SPA)快速搭建繁杂的脚手架;会带有热重载

3.vue介绍

vue是一套用于构建用户界面的渐进式框架,可以自底向上逐层应用,vue核心库只关心视图层

4.声明式渲染

vue.js的核心是一个允许语法采用简洁的模板来声明式的将数据渲染进DOM的系统:

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

带有前缀v-的指令 比如v-bind:title 动态绑定了title属性:

<div id="app-2">
  <span v-bind:title="message">
    鼠标悬停几秒钟查看此处动态绑定的提示信息!
  </span>
</div>
var app2 = new Vue({
  el: '#app-2',
  data: {
    message: '页面加载于 ' + new Date().toLocaleString()
  }
})

5.条件与循环

v-if  可以将data中的数据绑定到DOM结构:

<div id="app-3">
  <p v-if="seen">现在你看到我了</p>
</div
var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})

还有v-for 绑定数组 渲染数据列表:

<div id="app-4">
  <ol>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ol>
</div>
var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: '学习 JavaScript' },
      { text: '学习 Vue' },
      { text: '整个牛项目' }
    ]
  }
})

6.处理用户输入

通过v-on指令添加事件监听器

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">反转消息</button>
</div>
var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

可以通过v-model实现表单输入和应用状态之间的双向绑定

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

7.组件化应用构建

在vue中注册组件:

//定义名为todo-item的组件
Vue.component('todo-item',{
    template:"<li>这是个待办项</li>"
})
var app = new Vue(...)

然后就可以在模板里去创建组件实例了:

<ol>
  <!-- 创建一个 todo-item 组件的实例 -->
  <todo-item></todo-item>
</ol>

二、vue实例

 1.创建一个vue实例

一个vue应用由一个通过new Vue创建的根vue实例,以及可选的嵌套的、可复用的组件树组成。

var vm = new Vue({
    //选项
})

2.数据与方法

当一个vue实例被创建时,它将data对象中的所有属性加入到vue的响应式系统中,当这些属性的值发生改变时,视图将会产生响应,即匹配更新为新的值。

// 我们的数据对象
var data = { a: 1 }

// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})

// 获得这个实例上的属性
// 返回源数据中对应的字段
vm.a == data.a // => true

// 设置属性也会影响到原始数据
vm.a = 2
data.a // => 2

// ……反之亦然
data.a = 3
vm.a // => 3

注意:

(1)只有 当实例被创建时就已经存在于data中的属性才是响应式的

(2)使用Object.freeze()会阻止修改现有的属性,即响应系统无法再追踪变化

var obj = {
  foo: 'bar'
}
Object.freeze(obj)
new Vue({
  el: '#app',
  data: obj
})
<div id="app">
  <p>{{ foo }}</p>
  <!-- 这里的 `foo` 不会更新! -->
  <button v-on:click="foo = 'baz'">Change it</button>
</div>

(3)vue实例其他的属性方法:$data、$el 、$watch

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})
vm.$data === data // => true
vm.$el === document.getElementById('example') // => true
// $watch 是一个实例方法
vm.$watch('a', function (newValue, oldValue) {
  // 这个回调将在 `vm.a` 改变后调用
})

3.实例生命周期钩子

Vue å®ä¾çå½å¨æ

上边是vue实例的八大生命周期图,要牢记!!

created钩子可以用来在一个实例被创建之后执行代码:

new Vue({
  data: {
    a: 1
  },
  created: function () {
    // `this` 指向 vm 实例
    console.log('a is: ' + this.a)
  }
})
// => "a is: 1"

生命周期钩子的this上下文指向调用它的vue实例。不要在选项属性或回调上使用箭头函数

三、模板语法

1.双大括号({{ }})文本插值

<span>Message: {{ msg }}</span>

如上边代码中,绑定的数据对象上msg属性发生改变,插值处的内容就会随之更新。

可执以使用v-once指令,执行一次性的插值,当数值改变时,插值处的内容也不会更新:

<span v-once>这个将不会改变: {{ msg }}</span>

2.原始HTML

双大括号会将数据解释为普通文本,想要输出HTML代码,需要使用v-html指令:

<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>

3.指令

指令是带有v-前缀的特殊特性,指令的职责是当表达式的值改变时,将其产生的连带影响,响应式的作用于DOM

(1)指令的参数

接收一个参数,在指令名称后以冒号表示,如v-bind指令可以用于响应式的更新HTML特性(href是参数):

<a v-bind:href="url">...</a>

v-on指令用于监听DOM事件(参数是监听的事件名):

<a v-on:click="doSomething">...</a>

(2)动态参数

可以用方括号括起来的JavaScript表达式作为一个指令的参数:

<a v-bind:[attributeName]="url"> ... </a>

如果vue实例的data属性attributeName 值为“href”,那么这个绑定将等价于v-bind:href

(3)修饰符

比如.prevent修饰符告诉v-on指令对于触发的事件调用event.preventDefault():

<form v-on:submit.prevent="onSubmit">...</form>

4.缩写

vue为v-bind和v-on这两个常用的指令,提供了特定简写:

(1)v-bind缩写

<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

(2)v-on缩写

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值