如何在nodejs中为服务器端和客户端建立通用验证器?

时间:2015-03-30 13:30:32

标签: node.js requirejs amd

我正在使用https://github.com/chriso/validator.js插件,我想在node.js中创建一个可用于前端和服务器端的通用验证文件。我创建了一个js文件并使用此代码来实现上述目的。

(function (name, definition) {
    if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
        var validator  = require('../vendor/validator-js/validator');
        module.exports = definition(validator);
    } else if (typeof define === 'function' && typeof define.amd === 'object') {
        define(['validator'], definition(validator));
    } else {
        this[name] = definition();
    }
})('validation-rules', function (Validator) {



'use strict';

/**
 You can write your own custom validation rules here.
 To include new Validation Method to existing Validation JS module
 you can add method like this
Validator.extend('test', function(){
    return true;
});

*/


/**
* [isValidName Check a name is valid or not]
* @param  {[type]}
* @return {Boolean}
*/
Validator.extend('isValidName', function(str){
    return (Validator.isAlpha(str) && Validator.isLength(str, 5,      100));
return Validator;

});

现在,当我使用require在客户端包含此文件时,它给出了我没有定义validationrule的错误。 我在main.js需要文件

中包含了这两个文件
validator: 'vendor/validator-js/validator',
validationrules: 'utils/validation-rules',

并在login.js文件中我将其包含在内

define(['validator','validationrules',  
    ], function(validator,validationrules,){

但是当我控制validationrules时,它会给出未定义的内容。

1 个答案:

答案 0 :(得分:-1)

我按照以下方式做到了

(function(definition) {
    if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
        var validator = require('../vendor/validator-js/validator');
        module.exports = definition(validator);
    } else if (typeof define === 'function' && typeof define.amd === 'object') {
        define(['validator'], function(validator) {
            return definition(validator);
        });
    }
})(function(Validator) {

---- further code