溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

探討Vue.js的組件和模板

發布時間:2020-09-13 21:18:15 來源:腳本之家 閱讀:230 作者:mrr 欄目:web開發

摘要:

指令是Vue.js中一個重要的特性, 主要提供了一種機制將數據的變化映射為DOM行為。 那什么交數據的變化映射為DOM行為, Vue.js是通過數據驅動的, 所以我們不會直接去修改DOM結構, 不會出現類似$('ul').append('<li>one</li>')這樣的操作, 當數據變化時,指令會一句設定好的操作對DOM進行修改, 這樣就可以只關注數據的變化, 而不用去管理DOM的變化和狀態,

Vue的內置指令

1. v-bind

v-bind主要用于綁定DOM元素屬性(attribute),

即元素屬性實際的值是有vm實例中的data屬性提供的。

例如:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue的指令</title>
  <script src="../vue.js"></script>
</head>
<body>
<!-- HTML模版 -->
<div id="demo">
  <span v-bind:cutomId="id">{{message}}</span>
</div>
<script>
  //數據
  let obj ={
    message:"Hello World",
    id:'123'
  };
 //聲明式渲染
  var vm = new Vue({
    el:'#demo',
    data:obj  });
</script>
</body>
</html>

v-bind可以簡寫為“:”,

上述例子可以簡寫為<span :cotomId="id">

實現效果如下:

探討Vue.js的組件和模板 

2. v-on

綁定事件監聽器,簡寫為@。

昨天我們也用過,我們簡寫一下看一下效果

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue的指令</title>
  <script src="../vue.js"></script>
</head>
<body>
  <!-- HTML模版 -->
  <div id="demo">
    <span @click="clickHandle">{{message}}</span>
  </div>
  <script>
    //數據
    let obj = {
      message:"hello Vue"
    };
    //聲明式渲染
    var vm = new Vue({
      el:"#demo",
      data:obj,
      methods:{
        clickHandle(){
            alert("click")
            }
      }
    });
  </script>
</body>
</html>

效果如下:

探討Vue.js的組件和模板

3.v-html

v-html,參數類型為string,

作用為更新innerHTML,

接受的字符串不會進行編譯等操作,

按普通HTML處理

代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue的指令</title>
  <script src="../vue.js"></script>
</head>
<body>
<!-- HTML模版 -->
<div id="demo" v-html="HTML"></div>
<script>
  //數據
  let obj = {
    HTML:"<div>Hello World</div>"
  };
  var vm = new Vue({
    el:"#demo",
    data:obj  })
</script>
</body>
</html>

實現效果如下

探討Vue.js的組件和模板

更多內置指令請查詢官網:Vue.js指令

模板

html模板

        基于DOM的模板,模板都是可解析有效的html

插值

文本:使用“Mustache”語法(雙大括號){{value}}

    作用:替換實例上的屬性值,

    當值改變時,插值內容就會自動更新

原生的html:雙大括號輸出的是文本,不會解析html

屬性:使用v-bind進行綁定,可以響應變化

使用JavaScript表達式:可以寫簡單的表達式

字符串模板

template字符串

        template選項對象的屬性

        模板將會替換掛在元素。掛在元素的內容都將被忽略。

代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>template模板</title>
  <script src="../vue.js"></script>
</head>
<body>
  <!--HTML模板-->
  <div id="demo"></div>
  <script>
    //數據
    let obj = {
      html:"<div>String</div>",
      abc:1
    };
    var str = "<div>Hello</div>";
    var vm = new Vue({
      el:"#demo",
      data:obj,
      template:str    })
  </script>
</body>
</html>

有木有發現什么驚奇的變化

探討Vue.js的組件和模板

        根節點只能有一個

        將html結構寫在一對script標簽中,設置type="X-template"

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>template模板</title>
  <script src="../vue.js"></script>
</head>
<body>
  <!--HTML模板-->
  <div id="demo">
    <span>vue</span>
  </div>
  <script type="x-template" id="temp">
    <div>
      Hello,{{abc}},
      <span>sunday</span>
    </div>
  </script>
  <script>
    //數據
    let obj = {
      html:"<div>String</div>",
      abc:1
    };
    var vm = new Vue({
      el:"#demo",
      data:obj,
      template:"#temp"
    });
  </script>
</body>
</html>

實現效果如下:

探討Vue.js的組件和模板

寫在script標簽中,還是比較局限,

如果別的文件也是這個結構的時候,

這個就不能重復使用。

模板render函數

render函數

  render 選項對象的屬性

  createElement(標簽名,{數據對象},[子元素]);

  子元素為文本或者數組

我們還是來一段代碼演示

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>render函數</title>
  <script src="../vue.js"></script>
  <style type="text/css">
    .bg{
      background: #ee0000;
    }
  </style>
</head>
<body>
  <div id="demo"></div>
  <script>
    //數據
    let obj = {
    };
    var vm = new Vue({
      el:"#demo",
      data:obj,
      render(createElement){
        return createElement(
          //元素名
          "ul",
          //數據對象
          {
            class:{
              bg:true
            }
           },
          //子元素
          [
            createElement("li",1),
            createElement("li",2),
            createElement("li",3)
          ]
        );
      }
    })
  </script>
</body>
</html>

實現效果如下

探討Vue.js的組件和模板

關于數據對象屬性,講情請參考官網的例子。

Vue.js官網

總結

以上所述是小編給大家介紹的Vue.js的組件和模板,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女