探讨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 相关文章推荐
IE和Firefox在JavaScript应用中的兼容性探讨
Apr 01 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
Aug 18 Javascript
Node.js的特点和应用场景介绍
Nov 04 Javascript
全面解析Bootstrap表单样式的使用
Sep 09 Javascript
自制微信公众号一键排版工具
Sep 22 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
JS实现图片居中悬浮效果
Dec 25 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
Jul 30 Javascript
opencv 识别微信登录验证滑动块位置
Aug 07 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php基础知识:控制结构
2006/12/13 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python 12306抢火车票脚本
2018/02/07 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
生物制药毕业生自荐信
2013/10/16 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
小学科学教学反思
2014/01/26 职场文书
公司薪酬管理制度
2014/01/31 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
上班玩手机检讨书
2014/02/17 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
留学推荐信中文范文
2015/03/26 职场文书