我试图在ES6中 重新创建jQuery验证程序而不使用任何jQuery,并且在尝试重新创建它的功能时遇到了障碍,即使用Global范围添加验证方法,也就是说,如果您Validator.addMethod
在任何地方调用,它将运行中的关联函数,Validator
并向中添加方法Validator
。
我似乎无法在ES6中执行此操作,因为不允许将类导出到Global范围,从窗口对象(例如jQuery)无法访问我的类,没有这个人想要添加新的验证函数必须要有import
一个新函数才能添加它的类,而我不能简单地调用
Validator.addMethod('required', function(element, value){ return value.length > 0; })
在加载验证器类之后我想要的任何文件上,所以我的问题是,这真的在ES6中是不可能的,还是我缺少了什么?我已经知道这不是最佳实践,可以接受建议,但是即使对于不熟悉ES6的人来说,该想法也易于使用。
ES6及更高版本的设计旨在避免污染全局范围。您所关心的只是JavaScript中许多邪恶的糟糕编码实践的解决方案。
顺便说一句,您始终可以访问window
对象并添加一个与您的类相同的方式调用的属性:
class Validator {} window.Validator = Validator;
...因为类仍然是构造函数,并且被基于类的语法包裹着原型继承。
如果要在浏览器和NodeJS中分发库,则可能需要这样做:
class Validator {} var global = window || global; global.Validator = Validator;
顺便说一句,如果您想以正确的方式做事,则可以使用通用模块定义来分发您的库。在通用模块定义(UMD)的官方GitHub存储库中了解更多信息。