cncml手绘网

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

作者: admin    时间: 2018-7-1 23:08
标题: Vue.js 起步
Vue.js 起步
每个 Vue 应用都需要通过实例化 Vue 来实现。
语法格式如下:
  1. var vm = new Vue({
    . _: @' o# L7 K+ y2 F
  2.   // 选项7 [  c) A9 p" `& O. s
  3. })
复制代码
接下来让我们通过实例来看下 Vue 构造器中需要哪些内容:
  1. <div id="vue_det">% u6 v) w* W: `
  2.     <h1>site : {{site}}</h1>7 m! v* T; q. O7 ]4 W6 e- B
  3.     <h1>url : {{url}}</h1>& A2 j' a* M; P# s' P& E4 I! {: b
  4.     <h1>{{details()}}</h1>
    3 }& u! }* f$ D4 O; |5 A
  5. </div>' J8 J$ _. j  P1 ]' g5 I
  6. <script type="text/javascript">/ K+ B; z7 M) x3 h1 g( L
  7.     var vm = new Vue({
    0 J' o! `  c2 b7 b
  8.         el: '#vue_det',8 j! [% f% |0 {1 \+ R0 m( z! a
  9.         data: {+ ^9 g, W1 w6 |6 Z6 A
  10.             site: "菜鸟教程",
    ) P2 c* D$ l: u( A" t. R
  11.             url: "www.runoob.com",* Z% s: U% t8 J6 i. Y8 \
  12.             alexa: "10000"
    + f: X  }. a; [; g! Y' C* H  s
  13.         },  M  W1 V4 S, x* t
  14.         methods: {
    ( c" }  N1 I. C
  15.             details: function() {% i6 ]2 |) n& W( G
  16.                 return  this.site + " - 学的不仅是技术,更是梦想!";! t. [, s' x) V1 S4 w
  17.             }
    9 ?3 f/ L% T! r% I- y( o6 W
  18.         }6 R4 R; e# D$ p- X9 J" O
  19.     })1 a' ^1 |; l& Q/ M( l/ X
  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">2 N, J1 }: a1 l" a4 {
  2.     <h1>site : {{site}}</h1>2 L% m# `' b- a3 N3 b& H
  3.     <h1>url : {{url}}</h1>  u  H9 j  T9 A6 }$ G
  4.     <h1>{{details()}}</h1>+ F; X  M/ J: Q7 ], L' P3 [6 l
  5. </div>
复制代码
当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。
  1. <div id="vue_det">* s; v' l  k8 m4 P' b
  2.     <h1>site : {{site}}</h1>& X' u/ _$ W6 i2 `2 S
  3.     <h1>url : {{url}}</h1>; S8 w3 D3 h8 t6 i: c9 ?% Q
  4.     <h1>Alexa : {{alexa}}</h1>9 O; _, d7 S. w
  5. </div>! A, R: G: I1 _+ C  {- q
  6. <script type="text/javascript">
    * B3 j7 c3 `1 S6 ~8 {$ w
  7. // 我们的数据对象# j' T; _9 ~0 y! m9 p
  8. var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}& E5 o+ C: X+ Q. W
  9. var vm = new Vue({+ Q& e! ], |, ], B- `
  10.     el: '#vue_det',
    $ z% A8 j* o3 O8 f
  11.     data: data
    * o4 M2 i) M2 K% @0 f
  12. })( T6 b4 ?7 M5 Q5 |
  13. // 它们引用相同的对象!. p1 @* @# f! M- x6 Q
  14. document.write(vm.a === data.a) // true/ d# ?/ o" h" W6 I6 G* S; G1 Q
  15. document.write("<br>")
    % r  `$ ?5 x0 o; d3 a9 g
  16. // 设置属性也会影响到原始数据/ @4 p* y0 M; I$ z( `0 d
  17. vm.site = "Runoob", v; c- \2 r+ v3 y
  18. document.write(data.site + "<br>") // Runoob9 G4 m8 Q9 j, k
  19. 2 ?! B  m. J, v, f8 R* O/ W
  20. // ……反之亦然
    8 B7 d. g  c. ?
  21. data.alexa = 1234
    . T) R; O% s! F! F7 c' }
  22. document.write(vm.alexa) // 1234
    5 D' [* _' p  g; h
  23. </script>
复制代码
除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如:
  1. <div id="vue_det">, A$ O' Y- ]! J" `/ _
  2.     <h1>site : {{site}}</h1>
    # p( R8 _4 F; e0 F9 f
  3.     <h1>url : {{url}}</h1>* z. V% D5 K/ b/ y( Y/ |" O
  4.     <h1>Alexa : {{alexa}}</h1>
    4 c0 X, F  |2 x2 S/ ?9 b% n5 e
  5. </div>4 u8 x( [" V9 y7 ~
  6. <script type="text/javascript">
    - |2 M+ r4 a# r1 ]: i& E% Z
  7. // 我们的数据对象- j; @/ @, @5 g! Y- `/ ~( I
  8. var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
    4 `4 ~6 ]! J- G. L, V; G
  9. var vm = new Vue({
    7 X" U. }( X: z& Y# E  G) d. P
  10.     el: '#vue_det',, H% K" R5 }/ I$ b* }
  11.     data: data: d# ~; \2 s' R
  12. })( Y. l3 i$ j/ _- Y/ O
  13. , f+ B) W/ x* R, G
  14. document.write(vm.$data === data) // true2 f; T+ t- R# _; l3 E
  15. document.write("<br>") // true
    1 S8 z" b. U$ S! R% i. z% r
  16. document.write(vm.$el === document.getElementById('vue_det')) // true/ t3 F! ]! J$ z2 w% z5 f2 @& r
  17. </script>
复制代码
  [4 Z/ s' x% B$ B8 ]+ U

! G' ]* K% {" S, m




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