cncml手绘网

标题: Vue.js 起步 [打印本页]

作者: admin    时间: 2018-7-1 23:08
标题: Vue.js 起步
Vue.js 起步
每个 Vue 应用都需要通过实例化 Vue 来实现。
语法格式如下:
  1. var vm = new Vue({
    $ V' ?5 \7 Q9 ~
  2.   // 选项
    . L3 u1 Y" v# s" G
  3. })
复制代码
接下来让我们通过实例来看下 Vue 构造器中需要哪些内容:
  1. <div id="vue_det">
    5 a/ C5 h3 X7 b+ v- @
  2.     <h1>site : {{site}}</h1>7 V1 }0 K$ k/ C7 i8 E
  3.     <h1>url : {{url}}</h1>
    . B- B# F( Z5 T
  4.     <h1>{{details()}}</h1>
    5 m9 T4 I+ r+ ?+ [+ `9 h
  5. </div>1 \- O8 o/ A6 ]6 K. \/ ~3 V
  6. <script type="text/javascript">8 B+ \9 v( n4 }! S
  7.     var vm = new Vue({! j* ^+ g% v* R/ y% G. t2 L
  8.         el: '#vue_det',& }6 L( y" R$ g" _# n
  9.         data: {' M# n. z- Y9 l/ B; k
  10.             site: "菜鸟教程",
    : B% d  }  \. R6 _; {: t2 {' p
  11.             url: "www.runoob.com",$ {" Q$ H+ R( f# p$ H
  12.             alexa: "10000"
    : p8 H: `9 \; I6 K) C# I
  13.         },
    3 ]3 C* _" T. v3 p
  14.         methods: {
    , @$ [  b4 g, j" X
  15.             details: function() {/ G2 y! z# ?% O' Z, |
  16.                 return  this.site + " - 学的不仅是技术,更是梦想!";% H/ q- W* @. }# L5 V6 R
  17.             }
    ; ^" Q) |6 E3 r
  18.         }
    7 N/ h8 Z  Y  X* n4 s7 x
  19.     })+ a! _# F  a3 j$ d$ z6 M, v
  20. </script>
复制代码
可以看到在 Vue 构造器中有一个el 参数,它是 DOM 元素中的 id。在上面实例中 id 为 vue_det,在 div 元素中:
  1. <div id = "vue_det"></div>
复制代码
这意味着我们接下来的改动全部在以上指定的 div 内,div 外部不受影响。
接下来我们看看如何定义数据对象。
data 用于定义属性,实例中有三个属性分别为:site、url、alexa。
methods 用于定义的函数,可以通过 return 来返回函数值。
{{ }} 用于输出对象属性和函数返回值。
  1. <div id="vue_det">* C( R& I2 e  P7 g, G" D: f
  2.     <h1>site : {{site}}</h1>
    : V0 @6 M& ~, D2 j1 i9 p4 l" U" p0 i( |
  3.     <h1>url : {{url}}</h1>7 p8 Q0 |: }6 Y3 y6 C
  4.     <h1>{{details()}}</h1>
    . l$ X3 q. N. u4 N* G4 F1 D( c
  5. </div>
复制代码
当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。
  1. <div id="vue_det">7 l+ v1 l" p. R7 c
  2.     <h1>site : {{site}}</h1>
    % Y! @2 J" w. c2 E
  3.     <h1>url : {{url}}</h1>: p4 x5 _6 Y) _3 V6 s$ o
  4.     <h1>Alexa : {{alexa}}</h1>
    / e* P; A( g/ y9 i; U
  5. </div>2 j$ I( z' K: l* h; I
  6. <script type="text/javascript">
    , v% z; w: c- @7 f1 J
  7. // 我们的数据对象( X* U' J2 M, F1 i
  8. var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
    9 C  v4 Z) P% [' k1 [# j  K, r
  9. var vm = new Vue({( w; V5 C0 y: U, B3 s# e. N8 w
  10.     el: '#vue_det',! c1 m8 O: b: [
  11.     data: data' L8 K) X+ `2 f$ `. u5 ]/ d
  12. })
    ( U! \2 X* Z: ]0 i* A- ~
  13. // 它们引用相同的对象!
    : `3 E, ~; {/ C( e: s
  14. document.write(vm.a === data.a) // true
    ) g% q5 w3 u4 Y, _* B7 Z
  15. document.write("<br>"). ^$ I5 I' M6 k3 Y9 x" [4 @9 y
  16. // 设置属性也会影响到原始数据+ M1 O+ D: P' k7 o) o
  17. vm.site = "Runoob"+ {4 V% ]/ \% K8 t( y
  18. document.write(data.site + "<br>") // Runoob
    0 _- j7 n1 K: n9 e+ P7 @
  19. 0 Z6 a9 F" b) }, E
  20. // ……反之亦然
    5 e: i8 H) M  @7 n" a. g/ _
  21. data.alexa = 1234
    : G( M% L3 ~* |  s. k0 b
  22. document.write(vm.alexa) // 1234
    8 J" Z& \: @8 T! I* ]
  23. </script>
复制代码
除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如:
  1. <div id="vue_det">' x# X- B7 v- D/ m% G
  2.     <h1>site : {{site}}</h1>
    ' ^# A6 j. y0 I1 z; Q
  3.     <h1>url : {{url}}</h1>
    1 [9 `1 N( A2 y, e/ P6 Y
  4.     <h1>Alexa : {{alexa}}</h1>
    5 e) o- S$ ~+ q( P6 _% M
  5. </div>
    / a+ r) J1 ?9 [" y3 H
  6. <script type="text/javascript">
    0 Y) t! m: p3 Z
  7. // 我们的数据对象/ O+ J% ^4 u- @/ D* Y
  8. var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
    % p! F9 S& [5 ]
  9. var vm = new Vue({; Z7 X  _: v, g  X& k3 x, S
  10.     el: '#vue_det',
    , D* }- G0 b9 `- g9 e' k1 K
  11.     data: data
    ; d( Q; C7 ^( D
  12. })5 b. q$ |5 r' E+ Z1 H

  13. 9 m) \4 k6 Q; l: X6 X' O7 }) w
  14. document.write(vm.$data === data) // true. s( @' V8 X9 v7 }" Z" v3 ^( {
  15. document.write("<br>") // true
    : d, I+ A! n; K- l
  16. document.write(vm.$el === document.getElementById('vue_det')) // true
    ( C) Z7 q1 N2 m
  17. </script>
复制代码

3 T" B: m8 `" {
7 B$ T/ a4 f$ w8 M




欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2