我试图在不使用任何jQuery的情况下在ES6中重新创建jQuery验证器,在尝试重新创建它通过使用全局范围添加验证方法的功能时遇到了一个障碍,也就是说,如果您调用Validator.addMethod
anywhere,它将在Validator
中运行相关的函数并向Validator
添加一个方法。
我似乎不能在ES6中这样做,因为我不允许将类导出到全局范围,我的类是,无法从窗口对象访问,例如,jQuery是,如果没有它,任何想要添加新验证函数的人都必须import
一个新函数来添加类,而且我不能简单地调用
Validator.addMethod('required', function(element, value){
return value.length > 0;
})
在加载验证器类之后,我想要的任何文件,所以我的问题是,在ES6中这真的不可能,还是我遗漏了什么?我已经知道这不是最好的实践,而且可以接受建议,但是即使对于不熟悉ES6的人来说,这个想法也很容易使用。
发布于 2016-08-05 11:34:16
ES6及以上的设计是为了避免对全球范围造成污染。您所关心的只是JavaScript中许多不好的编码实践的解决方案。
顺便说一句,您可以始终访问window
对象并添加一个与类相同的属性:
class Validator {}
window.Validator = Validator;
类...because仍然是一个构造函数和原型继承,由基于类的语法包装.
如果要在浏览器和NodeJS中分发库,您可能需要这样做:
class Validator {}
var global = window || global;
global.Validator = Validator;
顺便说一句,如果你想以正确的方式做事,你可以使用通用模块定义发布你的库。在通用模块定义(UMD)的官方GitHub存储库中了解更多信息。
https://stackoverflow.com/questions/38796519
复制相似问题