gpt4 book ai didi

javascript - node.js中处理 `exports`的建议

转载 作者:数据小太阳 更新时间:2023-10-29 05:47:22 25 4
gpt4 key购买 nike

理论:

node.js 吸引我的地方之一是将它用作命令行工具。

理论上,我可以用 Javascript 编写库并将它们放在我的 ~/.node_libraries 目录中,然后我可以重用这些库。

例如,我在 ~/.node_libraries 中有一个 text.js,它有一堆我反复使用的与文本相关的函数 (depunctuate()tokenize_text() 之类的东西)。

这样做的好处是我可以在我的命令行脚本和服务器端使用相同的 text.js 文件。现在我正在使用 Python 进行所有文本处理工作,但我只想坚持使用一种语言。

练习:

AFAICT,为了创建一个 node.js 模块,我必须将我想要的所有内容附加到 exportsthis。即,在 text.js 中,我必须这样做:

exports.depunctuate = depunctuate

this.depunctuate = depunctuate

如果我使用 exports,我在使用库服务器端 à la 时遇到问题:

<script src=text.js></script>

因为那时我得到exports is not defined错误。

如果我使用 this,我可以避免错误,但我导出的所有内容最终都会附加到窗口对象。

有什么方法可以设置这些库来避免这两个问题?例如,有没有什么方法可以包装 exports 的导出,这样 var 对 Node 来说是显而易见的,但在服务器上的纯 Javascript 文件中使用时却不是?

最佳答案

在向其中添加内容之前测试exports 对象是否存在怎么样?

到目前为止,这对我来说效果很好,但也许还有更好的想法:

if(typeof(exports) !== 'undefined' && exports !== null) {
exports.foo = foo;
exports.bar = bar;
}

在 CoffeeScript 中,这可以更简洁地完成:

[exports.foo, exports.bar] = [foo, bar] if exports?

关于javascript - node.js中处理 `exports`的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com