跳到主要内容
CNode

使用eval实现类似ruby的string内插

分享
Mmagicdawn发布于 12 年前最后回复 12 年前
344450

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)

M
magicdawn#112 年前

撒发坐着呀...

J
jysperm#212 年前

快上 Coffee 贼船

M
magicdawn#312 年前
引用 jysperm快上 Coffee 贼船

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

参与回复

登录后即可参与回复。登录