探讨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 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
Sep 30 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
JSONP原理及简单实现
Jun 08 Javascript
微信小程序“摇一摇”的实例代码
Jul 20 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
原生js实现随机点餐效果
Dec 10 Javascript
Vue+Vuex实现自动登录的知识点详解
Mar 04 Javascript
JS判断数组四种实现方法详解
Jun 29 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
Sep 16 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调用mysql存储过程
2007/02/14 PHP
php mysql索引问题
2008/06/07 PHP
php DES加密算法实例分析
2019/09/18 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
Python冲顶大会 快来答题!
2018/01/17 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
火车的故事教学反思
2014/02/11 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js