Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现。 语法格式如下: - var vm = new Vue({, i8 I9 G$ ^- d
- // 选项" m1 [3 w& i g1 {# @3 Q
- })
复制代码接下来让我们通过实例来看下 Vue 构造器中需要哪些内容: - <div id="vue_det">
* S7 v; I F$ v - <h1>site : {{site}}</h1>! Q& m. @' D& C5 K. |/ A( ~% Y
- <h1>url : {{url}}</h1>
5 E/ U7 B1 t, h4 p9 l$ b: ^' A/ [ - <h1>{{details()}}</h1>
7 D; q: @5 O6 [9 ]3 L" _ - </div>/ T6 {) U, ^) t9 l5 ]" P4 C4 A0 }# @
- <script type="text/javascript">+ L6 N* U* Y8 }# }4 P5 x
- var vm = new Vue({! k5 R- `/ `6 |' u' w% H
- el: '#vue_det',
& a X9 `1 c) q, o, F. X5 X) S - data: {
! V% C5 E) S! ^) I; C0 G* u2 a: } - site: "菜鸟教程",
! K$ N4 q' [) r) V+ ~' n6 e9 k - url: "www.runoob.com",3 r# b7 t( ]( h& c
- alexa: "10000"
( s/ I1 h3 e7 Q/ u# r% E - },! i$ y+ D$ m; J# q! V+ d) d4 o4 U5 x
- methods: {8 B1 K5 B7 s" i# l6 t: P
- details: function() {4 B( M( [9 o! y( c+ M* Q# Q
- return this.site + " - 学的不仅是技术,更是梦想!";! O8 ^, r/ o( Z* D7 @3 R2 Y. I5 V
- }
+ `0 ^( `! B% b6 c$ O3 t" l0 C& K - }/ ~* m' R9 K$ p9 M4 \
- })) N8 c+ D0 Q6 s$ q' D; q& k4 x3 B9 @
- </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">3 d5 u8 H5 `4 B6 J
- <h1>site : {{site}}</h1>$ `3 v5 s# \6 ^* l5 i8 l. l8 X1 l
- <h1>url : {{url}}</h1>$ N$ \5 E7 Q0 J0 I1 S# o$ i
- <h1>{{details()}}</h1>) N; s* F6 y" {0 u
- </div>
复制代码当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。 - <div id="vue_det">8 o/ j2 i) |" ~) e" f
- <h1>site : {{site}}</h1>8 J, @" S6 k, Q# U: H1 ]8 o2 C) Z6 [/ N
- <h1>url : {{url}}</h1>
0 j2 l6 S/ p2 \/ B" E - <h1>Alexa : {{alexa}}</h1>
+ O; m! J3 a( I) Y9 t- B+ p, b9 o* S - </div>& v9 V) n, ?1 [( U
- <script type="text/javascript">
) u& h% o B( y6 Q- a. v - // 我们的数据对象
, T8 z; k7 J3 ` - var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
, W' u/ k/ A+ T$ ]' r6 F& P' F. E - var vm = new Vue({
% l& R* B8 o% q2 v. R - el: '#vue_det',
$ I5 `9 C7 Y1 ^3 D - data: data: M; ]$ ?; ?% A% W% C+ j: Y2 |
- })
7 j1 i+ p0 A! L# `" T! O: n - // 它们引用相同的对象!
& D9 ~/ ?, S# c( S$ G' x# p - document.write(vm.a === data.a) // true
* a5 h/ V: m/ i- l7 ] - document.write("<br>")
1 b4 L' r$ ]9 R$ U& U' y( e6 O. C - // 设置属性也会影响到原始数据
+ p D8 E+ c" m! o9 l6 C - vm.site = "Runoob"* k, e0 o5 n% H6 q$ d6 b: q
- document.write(data.site + "<br>") // Runoob# i+ d& W$ ^# a% l- G
-
" k) {+ l- I. C8 M - // ……反之亦然
% M4 K2 r; j6 E: u - data.alexa = 1234
' G1 ~& I9 f( ^3 F - document.write(vm.alexa) // 1234
/ X& N! e* R/ T% A7 D - </script>
复制代码除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如: - <div id="vue_det">/ T/ |) v8 t Q( {: e, U3 X, o
- <h1>site : {{site}}</h1>
; a/ d: h4 l7 w M% C2 ]0 A2 A - <h1>url : {{url}}</h1>' R% ?6 L, a0 Q1 a2 M* J8 o
- <h1>Alexa : {{alexa}}</h1>
% s: P) f0 g# d( Q+ q ?; M a" l3 c6 ` - </div>
9 k' S; `( p" Q) {. N* k9 \ - <script type="text/javascript">, e( H y6 f0 p/ }' ]- l$ g" l
- // 我们的数据对象: d; L4 z5 K6 P. p
- var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
. z! G( k3 C) o1 j G5 S - var vm = new Vue({) W6 R2 ]$ \) K" B$ ~. s/ N1 V; e
- el: '#vue_det',; q3 L& @) ^) ?+ G1 `: S
- data: data
, A" u" S `" g( X0 k5 O) G - })
, {1 E( F$ w4 n( Z$ O -
5 }4 \8 ^ }7 |1 y - document.write(vm.$data === data) // true
0 j; p4 F4 b! J4 i - document.write("<br>") // true
5 P/ ?# V2 `# Q7 I$ I( A B - document.write(vm.$el === document.getElementById('vue_det')) // true# E) d& A9 u# @3 Q
- </script>
复制代码
& A" r. r9 I8 X6 @- z. y2 M. Z1 M8 V
2 d" g9 L7 ]; `0 m |