是否有重命名文档的约定



在我不太可能的情况下

  1. 写JavaScript
  2. 不想使用诸如jQuery之类的框架
  3. 想要用较短的东西替换频繁的呼叫" document.queryselector"
  4. 希望我的代码仍然可以阅读和熟悉,这些新开发人员

这是关于命名惯例的问题。我不是问如何缩写一个长函数名称。作为参考,您可以像这个:

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 没有命名
  • Select ,因为是模棱两可的 and可以暗示Selection是不同的实验接口
  • Selector,在html& css world中,足够具体:(


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。对我来说,这似乎是合理的。

最新更新