应用程序框架Meteor有一个名为check
的程序包,可用于assert boundaries on your inputs及相关内容。这有点漂亮,并且非常有用,可以方便地检查字符串是否符合ISO8601或对象包含某些字段。
不幸的是,这是一个特定于Meteor的程序包,我想在vanilla js中独立使用类似的东西。还有什么值得一提的选择吗?
答案 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']);
});
唯一的依赖项是underscore
和ejson
,并且只有一个文件。因此,只要您有下划线并处理EJSON,您只需将this file添加到您的项目中,并使用check
in vanilla JS。可以类似地处理ejson
包,或者您可以在文件前面加EJSON = JSON;
并将检查限制为vanilla JSON对象。