在我不太可能的情况下
- 写JavaScript
- 不想使用诸如jQuery之类的框架
- 想要用较短的东西替换频繁的呼叫" document.queryselector"
- 希望我的代码仍然可以阅读和熟悉,这些新开发人员
这是关于命名惯例的问题。我不是问如何缩写一个长函数名称。作为参考,您可以像这个:
var queryAll = document.querySelectorAll.bind(document);
不,没有。
此外,我认为使用缩写不是一个好主意。为什么除了使其缩短
之外,为什么没有其他原因更改JavaScript API?您可以重复使用$
之类的内容,但是您可能会给读者的印象是您使用了使用该缩写的现有库。
其他一些考虑因素:
- 如果您以后决定添加使用相同缩写的库会发生什么?您需要重构代码
- 如果某人想重用您的某些代码,并且您的缩写与那里的代码或库发生冲突。
- 使用现代编辑/IDES,如果您使用自动填充 ,使用缩写可能不会减少打字量
- 对于学习JavaScript的人,很可能会使您的来源混淆阅读。
过去,我已经这样做了,只是为了稍后后悔。使您的代码不那么便携。
简短的答案。我不推荐。
不是我知道
让我们做一些
现代JS Oneliner在所有现代浏览器中可用
Selector = (s,c) => (c ?? document).querySelectorAll(s);
用法
// search in the whole document
Selector('.some, .randomClasses');
// search only in the context of someParent
var someParent = Selector('.give .me .parent')[0];
Selector('img', someParent);
利用箭头功能表达和无效的聚合操作员(??(和分组操作员((
除非显而易见,否则总是会返回相同的内容,querySelectorAll
会很容易地调整以与querySelector
进行相似的操作,也许可以命名它,例如。SelectorOne
,您得到图片...
兼容性检查
更健壮的JS用法保持不变,但如果有人担心它会破坏东西:
if (typeof Selector != "undefined") {
console.warn('CONFLICT WITH Selector! - please address this issue!')
} else {
function Selector(selector, current_context) {
if (typeof current_context == "undefined") {
current_context = document;
}
return current_context.querySelectorAll(selector);
}
}
为什么我选择命名" selector"
- i 选择用大写1个字母命名是故意的,因为接口通常以这种方式命名,并且略微降低了全球级别的小猪代码的冲突风险
- i 没有命名
-
Selector
,在html& css world中,足够具体:(
Select
Selection
是不同的实验接口
ps:我真的很想知道为什么他们做这么长时间,这是人们使用重型图书馆(如旧的jQuery(而不是在Plain JavaScript中这样做的主要原因...我真的希望是技术原因...
虽然没有任何惯例,但我在这里没有提到的另一种解决方案是声明
const querySelector = (sel, el) => (el ?? document).querySelector(sel);
const querySelectorAll = (sel, el) => (el ?? document).querySelectorAll(sel);
是从 @jave.web在语法中的答案中启发的。
优点是:
- 较短,因为您可以从中选择ditch
document.
; - 对于局外人阅读您的代码仍然完全可以理解。与
Selector
不同的Google搜索querySelector
将立即产生结果。
另外,正如史蒂夫(Steve(所说,现代IDE都会自动完成该名称,因此无需使其更短。而不是键入 doc
'tab&quot'.qu
" Tab"您将只是键入qu
&quot'tab&quot。对我来说,这似乎是合理的。