零基础入门Vue之拘元遣将——其他常用指令&自定义指令

这篇具有很好参考价值的文章主要介绍了零基础入门Vue之拘元遣将——其他常用指令&自定义指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

回首

在 零基础入门Vue之梦开始的地方——插值语法 我记录了v-bind、v-on、v-model的学习

在 零基础入门Vue之To be or not to be——条件渲染 我记录了v-if、v-else-if、v-else、v-show的学习

在 零基础入门Vue之影分身之术——列表渲染&渲染原理浅析 我记录了v-for的学习

为了推进我的Vue的学习,本篇将一次性介绍其他常用指令,并且记录如何 自定义指令


其他常用指令

在Vue中,除了已学过的八个指令之外,还有另外五个比较常用的指令

  • v-text
  • v-html
  • v-pre
  • v-cloak
  • v-once

v-text 文本绑定指令

更新元素的 textContent。如果要更新部分的 textContent,需要使用 {{ Mustache }} 插值。

假设有如下数据:

new Vue({
    el:"#root",
    data(){
        return {
            msg:"Hello world"
        }
    }
})

那么html除了使用插值语法来显示msg内容之外,还可以这样子写:

<div id="root">
    <span v-text="msg"></span>
</div>

v-html 富文本绑定指令

更新元素的 innerHTML。注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代

如果是v-text,仅仅只会当作文本解析,但如果我掏出了v-html,那么我所写的内容将会作为html来解析

new Vue({
    el:"#root",
    data(){
        return {
            msg:"<h1>Hello worldM</h1>"
        }
    }
})

此时,使用v-html会自动解析<h1>这个标签

<div id="root">
    <span v-html="msg"></span>
</div>

警告:为了预防xss的攻击,千万不要在输入类元素或者具有提交类元素上使用v-html,请在可信任的元素上使用v-html


v-pre 阻止渲染指令

跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。

假设dom节点中,有些元素不需要渲染的,即可给这个节点打上v-pre指令,用法如下:

  <div id="root">
      <span v-pre>这样子写:{{data里面的属性}} 标识Vue的插值语法</span>
  </div>

span标签里面的内容不会被Vue进行解析,这个指令可以提高渲染效率


v-cloak 渲染前标识指令

这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

当给标签打上v-cloak时,未被解析的标签,会存在这个属性,当标签被解析时,这个属性消失,因此可以配合css这么用:

[v-cloak] {
  display: none;
}
<div id="root">
    <span v-html="msg" v-cloak></span>
</div>

当页面未被解析时,span标签没被显示,只有当页面被解析完成时,span标签才会出现

此指令可以语法网络卡顿时,未被解析的内容率先显示到页面上


v-once 指令

只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能

这个指令,使得节点只被解析一次,后续的数据修改,此指令都不会有任何变化

<div id="root">
    <span v-text="msg" v-once></span>
</div>

Vue 自定义指令

在创建Vue配置项中,directives配置项,允许使用的人注册自定义指令

其中自定义指令可分为:

  • 全局指令
  • 局部指令

局部指令

new Vue({
    el:"#root",
    directives:{
        orderName:{
            bind(el,binding,vnode,oldVnode){}, //指令第一次绑定到元素时调用
            inserted(el,binding,vnode,oldVnode){}, //绑定元素插入父节点调用
            update(el,binding,vnode,oldVnode){}, //当前模板更新前调用(可能不是当前节点的更新)
            componentUpdated(el,binding,vnode,oldVnode){}, //当前模板更新后调用(可能不是当前节点的更新)
            unbind(el,binding,vnode,oldVnode){} //指令解绑时调用
        },

    }
});
<div id="root">
    <!-- 注意虽然js里采用了驼峰命名,但标签使用时请用-连接每个单词 -->
    <span v-order-name="1+1">hello</span>
</div>

参数详解 如下(详情请查看官网):

  • el:当前绑定节点
  • binding:当前指令的绑定信息
  • vnode:当前虚拟节点
  • oldVnode:上一个虚拟节点

举个例子:假设我想创建一个v-big,指令使得绑定标签的文本放大到45px

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <!-- 注意虽然js里采用了驼峰命名,但标签使用时请用-连接每个单词 -->
        <span v-order-name>hello</span>
    </div>
</body>
<script>
    new Vue({
        el:"#root",
        directives:{
            orderName:{
                bind(el,binding,vnode,oldVnode){
                    el.style.fontSize = '45px';
                }
            },
        }
    });
</script>
</html>

改进:如果我希望,这个大小由我自己定义,而不是写死

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <!-- 注意虽然js里采用了驼峰命名,但标签使用时请用-连接每个单词 -->
        <span v-order-name="'45px'">hello</span>
    </div>
</body>
<script>
    new Vue({
        el:"#root",
        directives:{
            orderName:{
                bind(el,binding,vnode,oldVnode){
                    el.style.fontSize = binding.value;
                }
            },
        }
    });
</script>
</html>

更多的请参考官方例子:简介


全局指令

在Vue上一小节时,directives配置项配置出来的节点只允许当前Vue实例使用,当涉及到一个自定义指令给多个Vue实例/组件去使用,就该引入全局指令了

在Vue对象上有一个静态方法:directive

允许用户设置全局指令,并且能在多个实例中通用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root1">
        <!-- 注意虽然js里采用了驼峰命名,但标签使用时请用-连接每个单词 -->
        <span v-order-name="'45px'">hello</span>
    </div>
    <div id="root2">
        <!-- 注意虽然js里采用了驼峰命名,但标签使用时请用-连接每个单词 -->
        <span v-order-name="'78px'">hello</span>
    </div>
</body>
<script>
    Vue.directive("orderName",{
        bind(el,binding,vnode,oldVnode){
            el.style.fontSize = binding.value;
        }
    });

    new Vue({
        el:"#root1",
    });

    new Vue({
        el:"#root2",
    });
</script>
</html>

其配置项与局部指令雷同,再次不过多赘述


指令简写形式

如果你不关注自定义的指令执行时机的话,你可以直接写成如下形式:

new Vue({
    el:"#root",
    directives:{
        orderName(){},
    }
});

此时,执行实际,与binding一样


The End

本篇完~~~文章来源地址https://www.toymoban.com/news/detail-825144.html

到了这里,关于零基础入门Vue之拘元遣将——其他常用指令&自定义指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Vue】Vue快速入门、Vue常用指令、Vue的生命周期

    【Vue】Vue快速入门、Vue常用指令、Vue的生命周期

    🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 1.新建HTML页面,引入Vue.js文件 2.在JS代码区域,创建Vue核心对象,进行数据绑定 3.编写视图 指令:HTML标签上带有Vs前缀的特殊属性,不同指令

    2024年02月07日
    浏览(11)
  • Linux入门 - 最常用基础指令汇总

    Linux入门 - 最常用基础指令汇总

    目录 ls指令:出该目录下的所有子目录与文件 ls指令补充 pwd指令:查看用户当前所处的路径 cd指令:改变工作目录 touch指令:新建一个不存在的文件 mkdir指令:在当前目录下创建一个目录 rmdir指令:删除空目录 rm 指令:删除文件或目录 man指令(重要) cp指令:复制文件或目

    2023年04月16日
    浏览(9)
  • 【Python 零基础入门】常用内置函数 再探

    【Python 零基础入门】常用内置函数 再探

    Python 是一种解释性, 高级和通用的变成语言. Python 由 Guido van Rossum 创建并 1991 年首次发布. Python 的设计强调代码的可读性, 其雨大允许我们使用相较于 C++ 或 Java 更少的代码表达概念. Python 使得变成变得更简单, 更快捷. 下面就跟着小白我来一起看一下 Python 常用的内置函数.

    2024年02月04日
    浏览(9)
  • 【Python 零基础入门】常用内置函数 初探

    【Python 零基础入门】常用内置函数 初探

    Python 是一种解释性, 高级和通用的变成语言. Python 由 Guido van Rossum 创建并 1991 年首次发布. Python 的设计强调代码的可读性, 其雨大允许我们使用相较于 C++ 或 Java 更少的代码表达概念. Python 使得变成变得更简单, 更快捷. 下面就跟着小白我来一起看一下 Python 常用的内置函数.

    2024年02月05日
    浏览(6)
  • 私藏工具分享 300+++ 编程使用工具,js、css、动画插件、可视化、文件操作、音视频、智能化、编辑器、2D3D、其他常用工具、跨平台框架、代码工具、图像工具、文件转换、vue3生态、后端常用插件

    目录 Javascript 工具 可视化 动画插件 文件操作 音视频 智能化 编辑器 2D 3D 其他常用js 跨平台 框架 Flutter Electron Uniapp CSS 动画 工具 UI 编程工具 代码工具 图像工具 文件转换 Vue3生态工具 1.Web UI库 2.移动UI库 3.相关工具 4.可视化 5.插件 6.相关生态 7.动画 8.音视频 全栈-后端 插件

    2024年02月21日
    浏览(11)
  • Go语言入门指南:基础语法和常用特性(下)

    Go语言入门指南:基础语法和常用特性(下)

    上一节,我们了解Go语言特性以及第一个Go语言程序——Hello World,这一节就让我们更深入的了解一下Go语言的**基础语法**吧! 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。 建议不要

    2024年02月12日
    浏览(14)
  • Go 语言入门指南:基础语法和常用特性解析

    代码解释: 变量声明和初始化: var a = \\\"initial\\\" :声明一个名为 a 的变量,初始值为字符串 “initial”。 var b, c int = 1, 2 :声明两个整数变量 b 和 c ,并分别初始化为 1 和 2。 var d = true :声明一个布尔变量 d ,初始值为 true 。 var e float64 :声明一个浮点数变量 e ,因为没有显

    2024年02月11日
    浏览(27)
  • 【Linux从入门到精通】Linux常用基础指令(下)

    【Linux从入门到精通】Linux常用基础指令(下)

      本篇文章接上篇文章(【Linux从入门到精通】Linux常用基础指令(上)、【Linux从入门到精通】Linux常用基础指令(中))进行详解。本章的指令相对没有那么常用,难度相对适中。同时也讲述了几个热键。希望能对你的理解有所帮助。  文章目录 一、grep指令 二、zip指令 三

    2024年02月02日
    浏览(9)
  • 【Java零基础入门篇】第 ⑦ 期 - 常用类库

    【Java零基础入门篇】第 ⑦ 期 - 常用类库

    博主:命运之光 专栏:Java零基础入门   学习目标 掌握Java各种常用类库的使用方法。 目录 Java类库 字符串String String 概述 创建字符串对象的2种方式 String类的特点 创建字符串对象的2种方式 总结:创建字符串对象的2种方式区别 字符串的比较 字符串的比较 String类其它常用

    2024年02月04日
    浏览(9)
  • 【Linux从入门到精通】Linux常用基础指令(上)

    【Linux从入门到精通】Linux常用基础指令(上)

      本篇文章会对Linux下的常用进行详细解释,并附加实例。通俗易懂,希望会对你有所帮助。根据内容量、内容的难易程度、内容的重要程度,分为上中下篇来讲解。  文章目录 一、什么是Linux的指令呢?  二、Linux下的常用指令 2、1 ls 指令 2、1、1 ls -a 2、1、2 ls -l 2、1、3

    2024年02月01日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包