探讨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中关于break,continue的特殊用法与介绍
May 24 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
jquery实现select下拉框美化特效代码分享
Aug 18 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
理解javascript对象继承
Apr 17 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
Apr 11 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
javascript实现文本框标签验证的实例代码
Oct 14 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 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
PHP 7.0.2 正式版发布
2016/01/08 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
python将字母转化为数字实例方法
2019/10/04 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
英语老师推荐信
2014/02/26 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
家长对学生的评语
2014/04/18 职场文书
管理建议书范文
2014/05/13 职场文书
远程培训的心得体会
2014/09/01 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android