当前位置: 首页 > 知识库问答 >
问题:

javascript - vue2 源码编译,标签中的属性值为何要解码?

太叔超英
2023-05-02
// Vue-2.0.3  compiler/parser/html-parser
function decodeAttr (value, shouldDecodeNewlines) {
  // 略
  return value
    .replace(ltRE, '<')
    .replace(gtRE, '>')
    .replace(ampRE, '&')
    .replace(quoteRE, '"')
}
function handleStartTag (match) {
    for (let i = 0; i < l; i++) {
        // attrs就是解析得到的,标签中的所有attribute
        attrs[i] = {
            name: args[1],
               value: decodeAttr(
                  value,
                  options.shouldDecodeNewlines
            )
          }
    }
}

例如有如下代码

<span attr1="&gt;&lt;&amp;" attr2="><&"></span>

将编译为
image.png

不知道这么做的意义何在?这些特殊符号作为attribute的值,也发挥不了作为特殊符号的作用,即便解码为原符号又有什么用?

共有1个答案

黄信厚
2023-05-02

这段代码中的 decodeAttr 函数处理了在 HTML 属性中出现的字符实体,如:< 解码为 <、> 解码为 >、& 解码为 &等。由于 HTML 中特殊字符有其对应的符号表示方式,但是当这些特殊字符作为属性值时,需要进行转义处理以避免可能的解析错误。因此,decodeAttr 负责将这些字符实体还原为它们的原始形式,以确保其正确显示并避免潜在的安全风险。

 类似资料:
  • 有些情况下,比如我们自己从Github下载了最新的代码,或者自己临时修改了一点代码,想要编译后的Build文件夹的内容,需要自行编译源码,这里介绍一下编译的方法 下载源码之后,可以发现根目录存在一个gulpfile.js文件,编译源码就是使用 gulp 编译的成果有四部分, – 生成Apps文件夹,包括helloworld程序和沙盒Sandcastle – 编译后的部署环境下的Cesium文件夹

  • [WARN][13:21:45.287]Findbugs需要编译源代码。请在执行声纳之前构建项目,或者检查编译类的位置,以便Findbugs分析您的项目。 我以前从未遇到过这个问题(在同一个项目中,但使用的是sonar的旧版本),所以我在Internet上搜索,发现我可能需要定义来将sonar指向编译的类。(在我的情况下,声纳在过去是自动解决这个问题的)。不过,我在中添加了以下属性: 但是,当看到

  • 问题内容: 我保存了Java源文件,将其编码类型指定为UTF-8(使用记事本,默认情况下,记事本的编码类型为ANSI),然后尝试使用以下命令对其进行编译: 但它给出了错误信息” 还有什么其他方法可以编译吗? 来源如下: 问题答案: 您的文件 被 读为UTF-8,否则有值“65279”字符就绝不可能出现。期待你的源代码是在平台默认的编码,根据该文件: 如果未指定 -encoding ,则使用平台默认

  • Swift(5.3.2) 源码编译 编译环境 Big Sur 11.2(20D64) Python3 3.9.1 CMake 3.19.3 Ninja 1.10.2 Sccache 0.2.13 (可选) Xcode 12.4(12D4e) 第一次编译失败, CMake 版本为3.17.2, 之前本地编译OCLint时安装的一个版本, 如果编译的是更新的源码, 注意版本; Xcode版本与Swif

  • 主要内容:1.1 前期准备工作,1.2 jar包安装,1.3 编译源码1.1 前期准备工作 1. CentOS联网 配置CentOS能连接外网。Linux虚拟机ping www.baidu.com 是畅通的 注意:采用root角色编译,减少文件夹权限出现问题 2. jar包准备(hadoop源码、JDK8、maven、ant 、protobuf) (1)hadoop-2.7.2-src.tar.gz (2)jdk-8u144-linux-x64.tar.gz (3)

  • 本文向大家介绍详解Hadoop2.7.2 编译64位源码,包括了详解Hadoop2.7.2 编译64位源码的使用技巧和注意事项,需要的朋友参考一下 一、环境准备 1.CentOS配置 最好是用新克隆的虚拟机 ,虚拟机内存设置大一点(我设置的4G),配置网络,主机名,关闭防火墙,关闭selinux 注意:采用root角色编译,减少文件夹权限出现问题 2.jar包准备(hadoop源码、JDK8、ma