使用eval实现类似ruby的string内插
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,这一阵后再说