探讨Vue.js的组件和模板


Posted in Javascript onOctober 27, 2017

摘要:

指令是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的组件和模板,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 构造函数 面相对象学习必备知识
Jun 09 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
JQuery设置时间段下拉选择实例
Dec 30 Javascript
Angular Js文件上传之form-data
Aug 28 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
Jan 19 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
如何在微信小程序中存setStorage
Dec 13 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 #jQuery
关于jQuery里prev()的简单操作代码
Oct 27 #jQuery
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 #Javascript
JavaScript数据结构之优先队列与循环队列实例详解
Oct 27 #Javascript
Express系列之multer上传的使用
Oct 27 #Javascript
微信小程序返回多级页面的实现方法
Oct 27 #Javascript
微信小程序-getUserInfo回调的实例详解
Oct 27 #Javascript
You might like
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php和asp语法上的区别总结
2019/05/12 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
js 深拷贝函数
2008/12/04 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
利用Python开发实现简单的记事本
2016/11/15 Python
Python 多线程的实例详解
2017/09/07 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python join方法使用详解
2019/07/30 Python
pytorch 模型可视化的例子
2019/08/17 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
详解python内置模块urllib
2020/09/09 Python
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
电影雷锋观后感
2015/06/10 职场文书
中秋节祝酒词
2015/08/12 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书