Vanilla JS断言库替代流星检查包

时间:2014-09-18 16:19:27

标签: javascript meteor assertions

应用程序框架Meteor有一个名为check的程序包,可用于assert boundaries on your inputs及相关内容。这有点漂亮,并且非常有用,可以方便地检查字符串是否符合ISO8601或对象包含某些字段。

不幸的是,这是一个特定于Meteor的程序包,我想在vanilla js中独立使用类似的东西。还有什么值得一提的选择吗?

2 个答案:

答案 0 :(得分:1)

有一个名为js-schema的伟大的vanilla js架构验证库。它允许以非常干净的方式编写模式。当您需要编写大型模式并精确地查看错误来自何种路径时,它非常棒。

 var Duck = schema({              // A duck
  swim : Function,               //  - can swim
  quack : Function,              //  - can quack
  age : Number.min(0).max(5),    //  - is 0 to 5 years old
  color : ['yellow', 'brown']    //  - has either yellow or brown color
});

var result = Duck.errors({
  swim: function() {},
  quack: function() {},
  age: 6,
  color: 'green'
});

console.dir(result) 

{
   age: 'number = 6 is bigger than required maximum = 5',
   color: 'string = green is not reference to string = yellow AND
           string = green is not reference to string = brown'
}
// #########################
// source : js-schema README

<强> js-schema is also packaged for meteor

免责声明:我通过编写Schema.errors()功能并为其创建了包,为此库做出了贡献。

答案 1 :(得分:1)

您知道在项目中只能使用选定的Meteor软件包,您不必加载整个平台吗?

如果是check,这很简单,因为它没有很多依赖关系,所以你可以只使用包代码作为库。见its package.json file

Package.on_use(function (api) {
  api.use(['underscore', 'ejson'], ['client', 'server']);
  api.export(['check', 'Match']);
  api.add_files('match.js', ['client', 'server']);
});

唯一的依赖项是underscoreejson,并且只有一个文件。因此,只要您有下划线并处理EJSON,您只需将this file添加到您的项目中,并使用check in vanilla JS。可以类似地处理ejson包,或者您可以在文件前面加EJSON = JSON;并将检查限制为vanilla JSON对象。