使用eval实现类似ruby的string内插
发布于 10 年前 作者 magicdawn 3988 次浏览 最后一次编辑是 8 年前 来自 分享

RT…

https://github.com/magicdawn/eval-string-interpolation https://www.npmjs.org/package/eval-string-interpolation

var inter = require('eval-string-interpolation');

var name = "zhangsan"
var age = 18

console.log(eval(inter("name = #{name} , age = #{age}")));
// name = zhangsan , age = 18

可以把 inter移到后面,少一层括号,通过 String.prototype.__defineProperty 实现

做这个玩意,主要是模版引擎太重量级了,util.format不好用. 然后想实现 那种 somefunc(xxx)的,发现除了eval,其他的不能访问当前作用域. 挣扎中修改了Module._contextLoad = true,和 Module._compile 中的 runInNewContext -> runInContext , 这种只能是模块的 局部变量有效,碰到函数之类不行,只能用eval了…

目前不支持 @ -> this,这一阵后再说

3 回复

撒发坐着呀…

快上 Coffee 贼船

@jysperm 就是看coffee支持,才做这个的…

回到顶部