首页 > web前端 > js教程 > 正文

Vue.js的组件和模板详解

小云云
发布: 2018-01-20 09:46:43
原创
2420人浏览过

指令是vue.js中一个重要的特性, 主要提供了一种机制将数据的变化映射为dom行为。下面通过本文给大家分享vue.js的组件和模板,需要的朋友参考下吧,希望能帮助到大家。

摘要:

指令是Vue.js中一个重要的特性, 主要提供了一种机制将数据的变化映射为DOM行为。 那什么交数据的变化映射为DOM行为, Vue.js是通过数据驱动的, 所以我们不会直接去修改DOM结构, 不会出现类似$('ul').append('

  • one
  • ')这样的操作, 当数据变化时,指令会一句设定好的操作对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模版 -->
    <p id="demo">
      <span v-bind:cutomId="id">{{message}}</span>
    </p>
    <script>
      //数据
      let obj ={
        message:"Hello World",
        id:'123'
      };
     //声明式渲染
      var vm = new Vue({
        el:'#demo',
        data:obj  });
    </script>
    </body>
    </html>
    登录后复制

    v-bind可以简写为“:”,

    上述例子可以简写为

    实现效果如下:

     

    2. v-on

    绑定事件监听器,简写为@。

    昨天我们也用过,我们简写一下看一下效果

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

    效果如下:

    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模版 -->
    <p id="demo" v-html="HTML"></p>
    <script>
      //数据
      let obj = {
        HTML:"<p>Hello World</p>"
      };
      var vm = new Vue({
        el:"#demo",
        data:obj  })
    </script>
    </body>
    </html>
    登录后复制

    实现效果如下

    更多内置指令请查询官网: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模板-->
      <p id="demo"></p>
      <script>
        //数据
        let obj = {
          html:"<p>String</p>",
          abc:1
        };
        var str = "<p>Hello</p>";
        var vm = new Vue({
          el:"#demo",
          data:obj,
          template:str    })
      </script>
    </body>
    </html>
    登录后复制

    有木有发现什么惊奇的变化

            根节点只能有一个

            将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模板-->
      <p id="demo">
        <span>vue</span>
      </p>
      <script type="x-template" id="temp">
        <p>
          Hello,{{abc}},
          <span>sunday</span>
        </p>
      </script>
      <script>
        //数据
        let obj = {
          html:"<p>String</p>",
          abc:1
        };
        var vm = new Vue({
          el:"#demo",
          data:obj,
          template:"#temp"
        });
      </script>
    </body>
    </html>
    登录后复制

    实现效果如下:

    写在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>
      <p id="demo"></p>
      <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组件?Vue.js组件用法汇总

    以上就是Vue.js的组件和模板详解的详细内容,更多请关注php中文网其它相关文章!

    最佳 Windows 性能的顶级免费优化软件
    最佳 Windows 性能的顶级免费优化软件

    每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

    下载
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    作者最新文章
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号