我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue编译器util工具使用方法示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue编译器util工具使用方法示例

makeMap源码:

function makeMap(str, expectsLowerCase) {
	var map = Object.create(null);
	var list = str.split(',');
	for (var i = 0; i < list.length; i++) {
		map[list[i]] = true;
	}
	return expectsLowerCase ?
		function(val) {
			return map[val.toLowerCase()];
		} :
		function(val) {
			return map[val];
		}
}
  • 描述:makeMap 函数首先根据一个字符串生成一个 map,然后根据该 map 产生一个新函数,新函数接收一个字符串参数作为 key,如果这个 key 在 map 中则返回 true,否则返回 undefined。
  • 参数:{String} str 一个以逗号分隔的字符串 、{Boolean} expectsLowerCase 是否小写
  • 返回值:根据生成的 map 产生的函数

isReservedTag 源码:

var isReservedTag = function(tag) {
	return isHTMLTag(tag) || isSVG(tag)
};

判断一个标签是否是保留标签,我们可以知道,如果一个标签是html标签,或者是svg标签,那么这个标签即是保留标签。

pluckModuleFunction 源码:

function pluckModuleFunction(modules,key) {
	return modules ?
		modules.map(function(m) {
			return m[key];
		}).filter(function(_) {
			return _;
		}) : []
}

检测在modules 数组中的成员对象是否有key属性,如果有"采摘"出来,组成一个新的数组。

如下实例代码:

transforms = pluckModuleFunction(options.modules, 'transformNode')

传递给 pluckModuleFunction 函数的第二个参数的字符串为 'transformNode',同时我们观察 options.modules 数组:

var modules$1 = [
	klass$1,
	style$1,
	model$1
];
var klass$1 = {
	staticKeys: ['staticClass'],
	transformNode: transformNode, //处理静态属性和非静态属性
	genData: genData
};
var model$1 = {
	preTransformNode: preTransformNode
};
var style$1 = {
	staticKeys: ['staticStyle'],
	transformNode: transformNode$1, //处理静态样式和非静态样式
	genData: genData$1
};

此时按照 pluckModuleFunction 函数的逻辑:

modules ?
	modules.map(function(m) {
		return m[key];
	}).filter(function(_) {
		return _;
	}) : []

我们拆分开看:

modules ? modules.map(function(m) {
		return m[key];
	})

如果modules存在则,调用 modules.map 创建一个新的数组。

[
  transformNode,
  transformNode$1,
  undefined
]

还没完紧接着又在新生成的数组之上调用了 filter 函数相当于:

[transformNode, transformNode$1, undefined].filter(function(_){ return _ });

把值为 undefined 的元素过滤掉,所以最终生成的数组如下:

[transformNode, transformNode$1]

isReserved 源码:

function isReserved(str) {
	var c = (str + '').charCodeAt(0);
	return c === 0x24 || c === 0x5F
}

在Vue中不允许使用以$或_开头的字符串作为data数据的字段名, isReserved 函数用来检测一个字符串是否以$ 或者 _ 开头。

如:

new Vue({
  data: {
    $count: 1,  // 不允许
    _ret: 2   // 不允许
  }
})

isReserved是如何判断一个字符串是否以 $ 或 _ 开头呢?

它的实现方式是通过字符串的 charCodeAt 方法获得该字符串第一个字符的 unicode,然后与 0x24 和 0x5F 作比较。其中 $ 对应的 unicode 码为 36,对应的十六进制值为 0x24;_ 对应的 unicode 码为 95,对应的十六进制值为 0x5F。

以上就是vue编译器util工具使用方法示例的详细内容,更多关于vue编译器util工具的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue编译器util工具使用方法示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java 反编译工具的对比以及使用方法

今天就跟大家聊聊有关Java 反编译工具的对比以及使用方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作
2023-06-15

linux下使用g++编译cpp工程的方法

C++编程中相关文件后缀1.单个源文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: #include int main(i
2022-06-03

Vue中使用Teleport的方法示例

这篇文章主要为大家介绍了Vue中使用Teleport的方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Ubuntu中怎么安装和使用编译器和开发工具

在Ubuntu中安装和使用编译器和开发工具非常简单,通过apt包管理器可以轻松安装所需的工具。以下是一些常用的编译器和开发工具的安装方法:gcc编译器:sudo apt-get updatesudo apt-get install gcc
Ubuntu中怎么安装和使用编译器和开发工具
2024-03-05

C++编译器的使用方法是什么

这篇文章主要介绍“C++编译器的使用方法是什么”,在日常操作中,相信很多人在C++编译器的使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++编译器的使用方法是什么”的疑惑有所帮助!接下来,请跟
2023-06-17

详解如何使用Node.js编写命令工具——以vue-cli为例

vue-cli全局安装之后,提供了vue命令和vue init、vue list、vue build三个子命令,通过命令可以搭建基于vue.js的脚手架项目。本文简单介绍一下这些命令是如何实现的。 vue-cli的项目目录 如下图,由之前文
2022-06-04

使用服务器容器编排工具的案例分析

阐述了服务器容器编排工具的应用范围和优势,并通过多个示例场景详细分析了容器编排工具的实际应用。
使用服务器容器编排工具的案例分析
2024-02-09

C++编译器和链接器工作原理及使用方法完全指南

本文将详细介绍C++中的编译器和链接器以及它们的工作原理及使用方法全面详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-20

Vue插槽slot全部使用方法示例解析

插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot>表示,父组件可以在这个占位符中填充任何模板代码,如HTML、组件等,填充的内容会替换子组件的<slot></slot>标签,这篇文章主要介绍了Vue插槽的理解和使用,需要的朋友可以参考下
2023-03-19

Java网络编程之URL+URLconnection使用方法示例

目录HTTP GET和POST从URLs到本地文件在java.net包中包含两个有趣的类:URL类和URLConnection类。这两个类可以用来创建客户端到web服务器(HTTP服务器)的连接。下面是一个简单的代码例子:URL url =
2023-05-30

Linux系统中shell编写的工具supportconfig的安装使用方法

本篇内容介绍了“Linux系统中shell编写的工具supportconfig的安装使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 
2023-06-13

Vue自定义组件中v-model的使用方法示例

日常开发中除了直接在input标签上使用v-model指令外,封装的组件也需要v-model,下面这篇文章主要给大家介绍了关于Vue自定义组件中v-model使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-05-19

mysql 触发器创建与使用方法示例

本文实例讲述了mysql 触发器创建与使用方法。分享给大家供大家参考,具体如下: 什么是触发器 触发器用来在某些操作之后/之前,“自动”执行一些操作。(比如插入了新的学生信息,那么在班级表中应该修改学生数)。当insert delete u
2022-05-16

Vue中过滤器定义以及使用方法实例

过滤器的功能是对要显示的数据进行格式化后再显示,其并没有改变原本的数据,只是产生新的对应的数据,下面这篇文章主要给大家介绍了关于Vue中过滤器定义以及使用方法的相关资料,需要的朋友可以参考下
2022-11-13

编程热搜

目录