|
Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现。 语法格式如下: - var vm = new Vue({& D4 D# B8 w% Y+ ?
- // 选项
- T5 j5 r# R' A% d - })
复制代码接下来让我们通过实例来看下 Vue 构造器中需要哪些内容: - <div id="vue_det">' h; e% |* z. c# z, L9 x! @
- <h1>site : {{site}}</h1>
7 T. f/ k! I2 f/ L. s - <h1>url : {{url}}</h1>
0 ^) o+ R) b/ x6 e - <h1>{{details()}}</h1>! l8 ]% U* |. Y% M# y y
- </div>" a3 I3 }2 G' F R r; |
- <script type="text/javascript">
) E# j2 E0 G5 |5 T8 ]- l) K - var vm = new Vue({
6 i& @) m, p6 R9 w - el: '#vue_det',- g) T) j$ P0 ~' a
- data: {
- S' g* ~2 n4 F# E g& w, ? - site: "菜鸟教程",0 X. c; P- v; W& P$ n
- url: "www.runoob.com",
% L0 M# O+ I% `) I1 i - alexa: "10000"
, r1 N# O, {% I% F - },$ \% n `1 [, I% C7 g
- methods: {
3 ?8 r# j: D) Q - details: function() {) L+ T/ U3 e" M
- return this.site + " - 学的不仅是技术,更是梦想!";
+ f( U" u- N6 S9 K9 s - }7 D% p& x0 z. u2 d; W5 {: T* t
- }! @9 [( z7 Z! l5 c8 i
- })- A7 k/ g2 {3 p E4 ^
- </script>
复制代码可以看到在 Vue 构造器中有一个el 参数,它是 DOM 元素中的 id。在上面实例中 id 为 vue_det,在 div 元素中: - <div id = "vue_det"></div>
复制代码这意味着我们接下来的改动全部在以上指定的 div 内,div 外部不受影响。 接下来我们看看如何定义数据对象。 data 用于定义属性,实例中有三个属性分别为:site、url、alexa。 methods 用于定义的函数,可以通过 return 来返回函数值。 {{ }} 用于输出对象属性和函数返回值。 - <div id="vue_det">
& q0 G, M7 n8 M; D) Y. c - <h1>site : {{site}}</h1>+ `9 t$ l6 Q+ Q5 V
- <h1>url : {{url}}</h1>$ D- W7 x$ q. _* M6 k% a4 w8 z
- <h1>{{details()}}</h1>7 |; | x, k% F. _' r7 L. o
- </div>
复制代码当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。 - <div id="vue_det">' n4 u, y3 c! H* F' ? g
- <h1>site : {{site}}</h1>
! g( F. y t. }; [' v - <h1>url : {{url}}</h1>7 H/ S. e$ u$ a0 K
- <h1>Alexa : {{alexa}}</h1>; ]" K6 r0 c' _. C
- </div>
3 P5 z% e5 l1 w7 J - <script type="text/javascript">
) S) W/ [+ k# D3 { s4 h - // 我们的数据对象
q, _; S' h9 o2 ~ - var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}( f# @9 E) ]) k$ h! U
- var vm = new Vue({5 X v! l7 K* \/ J l0 P; E
- el: '#vue_det',, g5 o0 T8 M; {0 [2 l) F1 Z: }
- data: data
9 E9 ?0 E; d' S2 i2 F: Q/ c - })
3 q$ C5 o7 H( A: k: x7 M - // 它们引用相同的对象!% i5 m6 J# [6 }0 @9 ~& m
- document.write(vm.a === data.a) // true+ u& B. x) E2 v3 H7 Z1 `
- document.write("<br>")# [/ f" X! Q: o8 l
- // 设置属性也会影响到原始数据( l i+ D- b/ }
- vm.site = "Runoob"' J) v$ {7 r1 g* b$ X
- document.write(data.site + "<br>") // Runoob
& ^/ H3 `$ R8 M7 L- R# ^. Y -
) M/ p4 P) `3 x - // ……反之亦然9 j0 E0 W! q! M1 l& u
- data.alexa = 1234
; f; n, F' q% b/ e# ~0 x' a& A - document.write(vm.alexa) // 12342 p/ ^) A0 G2 y6 D6 }1 Q) D I
- </script>
复制代码除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如: - <div id="vue_det">
( c! P4 }; z* e - <h1>site : {{site}}</h1>
. ^. f+ z, a; F - <h1>url : {{url}}</h1>3 m2 M6 N$ A' D- ~, u
- <h1>Alexa : {{alexa}}</h1>
/ X8 [4 N4 r ]2 R - </div>) @9 }" h# }# w1 y
- <script type="text/javascript">
& a. S( ~7 C( @$ d% L H - // 我们的数据对象3 w/ ^) C3 m- C* J5 U5 q$ G
- var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}# J) c. o$ t6 _; o' Q$ ?4 [
- var vm = new Vue({
0 }. o( H: T/ i" q" d$ C7 H - el: '#vue_det',
; {! k. i$ k1 j - data: data# |" p# K7 |% Q, ~+ q i
- })
6 e- C, J2 I8 s2 B8 O- u -
9 i c3 ~1 V& [; y; n! C - document.write(vm.$data === data) // true
$ p9 Q) G0 B, ^: l$ n& |% ] - document.write("<br>") // true
8 A( W$ f- ]4 T0 X/ y" W - document.write(vm.$el === document.getElementById('vue_det')) // true
6 t8 L7 H* d7 s, Y6 p - </script>
复制代码 ( O+ m: M) m @4 W
' V$ U% i5 X6 W* d6 x8 g |