我正在编写一个 DSL,我想将所需模块中的所有内容放入当前命名空间中,以便能够编写类似这样的内容
// I know it's not working.
// In python, I'd do: from mydsl import *
{*} = require('./mydsl');
node('London');
node('Paris');
edge('London', 'Paris');
这是我尝试过的一些版本作为解决方法
// In python: import mydsl as dsl
dsl = require('./mydsl');
dsl.node('London');
// In python: from mydsl import node, edge
{node, edge} = require('./mydsl');
node('London');
// Extend `this` with imported functions
_ = require('underscore');
_.extend(this, require('./mydsl'));
this.node('London');
由于我的 DSL 有很多关键字,使用{node,edge,...} = require
起来会很笨拙。我更喜欢可以通过 browserify 移植到网络的解决方案。