【问题标题】:node.js define own modules with pretty namenode.js 用漂亮的名字定义自己的模块
【发布时间】:2015-01-10 11:08:08
【问题描述】:

嘿,是否可以使用类似 require('my_module') 的漂亮名称定义一个 module.export,这会有所帮助,因为我不必弄清楚我必须使用的所有 '../../' 才能到达那里。

在我的例子中,它是关于我的 i18n 助手的实例。我想做一些像这样的想法:

# (module.coffee)

Polyglot = require("node-polyglot")
i18n = new Polyglot()
module.exports = i18n

# ------------

#(view.coffee)

i18n = require('i18n')
i18n.t('my.path.string')

如您所见,moudle.coffee 非常短,并返回一个 Polyglot 类的实例。我不为此创建自己的 npm_package。

我只是从 CommonJS 这个漏洞开始,所以这可能是一个毫无意义的问题。

【问题讨论】:

  • 你确定要提到RequireJS吗?除了您提到它和您对标签的使用之外,我在您的问题中看不到任何与 RequireJS 相关的内容。这都是股票节点的东西。 (注意,如果需要提及:require(...) 并不需要 RequireJS。虽然 RequireJS 确实定义了一个 require 调用,但它并不特定于 RequireJS。)如果您确实意味着要使用 RequireJS,那么请在您的问题中说明您打算如何处理它。现在它是完全模糊的。
  • 我很确定我使用的是普通的 Node,只是这一切让我很困惑,看起来 Node 使用 RequireJS 或 CommonJS 在内部执行 require 魔法。我还不太了解其中的区别和优势。
  • Node 对模块使用 CommonJS API。您可以将 RequireJS 与 Node 一起使用,但这是您必须明确执行的操作。 (你必须安装 RequireJS,让 Node 加载它,配置它等。)我已经从你的问题中删除了 RequireJS 提及,因为你目前没有使用它。

标签: javascript node.js npm require commonjs


【解决方案1】:

如果你在一个 npm 模块中并且想要从模块中获取任何其他文件,你应该尝试以下语法:

var submod = require('module/path/to/submod');

作为示例,您可以看到我的模块simpleS 的源代码,在index.js 我需要位于模块位置路径/lib/http/host 上的主机文件,所以我这样使用它:

var host = require('simples/lib/http/host');

这样你可以使用所需文件的绝对路径,而不用担心相对于当前位置的路径。

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2012-08-10
    • 2012-10-04
    • 1970-01-01
    • 2021-07-28
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多