0

私は 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 を使用して Web に移植できるソリューションを希望します。

4

2 に答える 2

2

これは非常に非常に悪い習慣です。

_ = require('underscore');
_.extend(global, require('./mydsl'));
node('London');
于 2012-07-02T12:01:16.813 に答える
0

の使用を検討しましたwithか?

var mydsl = require('./mydsl');
with (mydsl) {
    node('London');
    node('Paris');
    edge('London', 'Paris');
}
于 2012-09-27T03:20:23.470 に答える