如何在我编写的JavaScript中重构Ruby的#{}方法
How to refactor Ruby's #{} method in JavaScript which I write
当我编写Javascript代码时,我觉得很想念Ruby的#{}方法。所以我在JS中实现它。但是这段代码并不干净美观。我想让这种方法安全,但我做不到。
你知道这段代码是安全的还是美丽的吗?提前谢谢。
String.prototype.to_s = function(){
var str = this.toString();
// convert function is bad because it use eval...
var convert = function(s){
return eval(s);
};
// It's slower because call ReGexp method too many times.
while(/#{('w+)}/.test(str)){
var matchStr =RegExp.$1;
var str = str.replace(/#{('w+)}/,convert(matchStr));
}
return str;
};
var name = "nobi";
var age = 23;
var body = "I'm #{name} and I am #{age} years old".to_s();
// I'm nobi and I am 23 years old.
console.log(body);
这种黑客不能变得"美丽"——它甚至不适用于非全局变量。但是,鉴于ES6支持,您不需要黑客攻击;字符串插值现在是该语言的一部分。
var body = `I'm ${name} and I am ${age} years old`;
如果做不到这一点,字符串连接在 ES5 及更早版本中通常具有足够的可读性:
var body = "I'm " + name + " and I am " + age + " years old";
CoffeeScript,一种编译为JavaScript的语言,也支持此功能。
最接近你想要的是一个模板系统,比如小胡子。它允许您执行以下操作:
var person = {
name: "nobi",
age: 23
};
var output = Mustache.render("I'm {{name}} and I am {{age}} years old.", person);
或者使用咖啡脚本。
http://coffeescript.org/#strings
此外#{}
不是 Ruby 中的方法,它被称为"字符串插值"。
http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation
相关文章:
- JSON重构(合并内容)与javascript
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 如何“;过滤器”;或者以其他方式重构该数据
- jQuery:重构为函数
- 正在从ruby应用程序中的数据库中获取数据
- 为什么不't我的ruby代码与javascript文件一起插入
- 重构查找函数
- 重构DRY代码的Node.JS回调
- 如何在Angularjs中重构闭包中的重复代码
- Ruby on Rails javascript getting truncated
- 带有ruby代码和javascript的链接
- 服务器用Ruby Grape发送事件
- 在JavaScript中重构上个月的第一天和最后一天的代码(node.js)
- Rails:试图在javascript(Google Charts API)中嵌入一个adv-ruby(each+迭代器
- 在ruby on rails中使用jquery getJSON获取数据
- 重构 jQuery in JS 问题
- ruby到javascript,可能吗?怎样
- 如何在我编写的JavaScript中重构Ruby的#{}方法
- 如何在崇高文本中重构?(Ruby,Rails,JavaScript)