vue编译器util工具如何使用的,用哪些简单实例
Admin 2022-08-09 群英技术资讯 575 次浏览
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]; } }
var isReservedTag = function(tag) { return isHTMLTag(tag) || isSVG(tag) };
判断一个标签是否是保留标签,我们可以知道,如果一个标签是html
标签,或者是svg
标签,那么这个标签即是保留标签。
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]
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。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍命令模式的内容,JavaScript设计模式有很多种类型,命令模式是JavaScript设计模式中行为型的一种设计模式,下面有详细的介绍和实例,对新手学习和理解JavaScript设计模式有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获。
这篇文章主要为大家详细介绍了微信小程序自定义滚动选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Vue组件生命周期执行原理是什么?一些新手可能对Vue组件生命周期的内容不是很了解,对此这文章就给大家介绍一下Vue组件生命周期的内容,对大家学习Vue组件生命周期有一定的帮助,需要的朋友可以参考。
我们在学习JavaScript时,回调函数是很重要的一个知识点,是大家需要掌握的内容。但是很多很多新手对于JavaScript中的回调,并不是很清楚,因此这篇文章就给大家介绍一下回调函数的概念以及如何区分两种回调:同步和异步。
concat()可以基于当前数组中的所有项目创建一个新的数组。这种方法首先创建当前的数组副本,然后将接收到的参数添加到该副本的末尾,最后返回新构建的数组。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008