在 JavaScript 中验证模板变量
Validating template variables in JavaScript
在使用模板引擎时是否有验证的最佳实践?
我目前正在构建一个带有node.js和couchdb的网站,并且我分别使用带有ejs的express作为框架和模板引擎。我最终可能会在我的 HTML 中逐字拼写出 [Object 对象] 或未定义。 我可以尝试在沙发上使用validate_doc_update函数进行验证,或者在渲染到模板之前在我的路由函数内的节点中验证,或者直接在 ejs 模板中进行验证。我应该做其中哪一个或所有这些?
我建议编写一个函数来获取模板上下文对象并准备渲染。这些有时称为表示器函数和/或表示器模式。在渲染模板之前,您可以从节点.js路由函数使用它。此函数可以将 null/undefined 替换为空字符串,还可以检测toString
为"[Object object]"或其他不需要的对象,并将它们替换为空字符串。为此编写单元测试很容易,并且无需在许多模板中复制逻辑。此函数应递归遍历整个对象图或对象图数组。
您可能还需要其他功能,例如缩写异常长的字符串。例如,如果有人不小心将一堆垃圾粘贴到用户对象的"firstName"字段中,并且这超过了 100 个字符的合理限制,则演示器函数可能会截断它并附加省略号。这只是此数据清理或"表示"类型逻辑的另一个示例。
否则,您需要在 ejs 模板中<%= someObj.someProp || '' %>
这样的表达式,这将导致大量样板代码重复。
这是一个第一次切割工作 jsfiddle 实现(使用下划线.js(。
function sanitize(context) {
if (Array.isArray(context)) {
return _.map(context, sanitize);
}
_.each(context, function (value, key) {
if (value === null) {
context[key] = "";
return;
}
switch (typeof value) {
case "object":
context[key] = sanitize(value);
break;
case "number":
//No-op
break;
case "boolean":
//No-op
break;
default:
context[key] = value || ""; //handles undefined
}
});
return context;
}
相关文章:
- 通过Javascript验证PHP变量
- 如何测试变量是否只有字母而不是abc1.关于验证电子邮件
- 附加要使用的变量jQuery验证插件
- 如何在客户端验证中验证两个变量规则
- 如果有javascript代码,请验证php变量
- 验证JavaScript中是否存在变量
- 可以将dojo验证器函数存储到变量中,以便以后调用它
- 全局变量设置在JavaScript验证中失败
- jQuery 验证器正则表达式使用数组或变量
- 将变量从jQuery传递到WebMethod(身份验证失败)
- Javascript 表单验证 - PHP 变量作为 VALUE - 无效输入
- 在 JavaScript 中验证模板变量
- Jquery 变量为 null 或未定义,但传递验证,例如不为 null 或未定义
- AngularJS验证引用具有变量名称的表单对象
- JavaScript电子邮件验证-@之前的字符串变量
- 使用jQuery ajax函数验证表单时,不会设置$_POST变量
- 如何使用XML输入变量以根据XSD进行验证
- 如何对数据库变量进行健全性和验证检查
- 如何使用jquery变量验证equalTo方法
- 使用两个Ajax变量验证表单