问题标签 [commonjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4049 浏览

node.js - node.js - 评估实时进程

是否有人使用现有的 node.js REPL 为自己设置了类似的东西?我没有想到一个快速的方法来做到这一点。

我今天这样做的方式是使用 emacs,这个: https ://github.com/ivan4th/swank-js

该模块由以下部分组成:

  1. Emacs 的 SLIME-js 插件,与 js2-mode 结合使用,您可以简单地在函数 def 的某处发出 CMx - 然后关闭函数的字符串到 ..

  2. 用 Node.js 编写的 Swank-js 服务器(是的,您可以从本地计算机直接评估到远程进程) - 它接收您评估过的函数的字符串并实际评估它

  3. 一个完整的部分,可让您使用 BROWSER 连接到该服务器上的另一个端口,然后让您在该浏览器上操作 DOM(这非常棒但不相关)

我的解决方案在 emacs 端使用 SLIME-js,并且我在 app.js 文件中需要('swank-js')

现在..关于我的解决方案或其他可能的问题,我有几个问题和疑问:

Q1:这是不是太过分了?有人有什么秘密方法可以将 nano 中的东西评估到他的实时过程中吗?

Q2:我不得不改变 swank-js 的 EVALing 方式。它使用了某种黑魔法,如下所示:

据我了解,它只是将全局变量复制到新的上下文中,并且在 eval 时,不会更改原始函数定义 - SOOO .. 我只是使用普通的“eval”并且它可以工作。

您对此有何评论?

Q3:为了重新评估一个函数,它需要是一个 GLOBAL 函数 - 将所有函数定义为全局(类似clojure)是不好的做法吗?你认为还有另一种方法可以做到这一点吗?

0 投票
2 回答
55075 浏览

javascript - RequireJS:如何定义包含单个“类”的模块?

我有许多 JavaScript “类”,每个类都在自己的 JavaScript 文件中实现。对于开发,这些文件是单独加载的,对于生产它们是连接的,但是在这两种情况下,我都必须手动定义加载顺序,确保如果 B 使用 A,则 B 在 A 之后。我计划使用RequireJS作为CommonJS Modules/AsynchronousDefinition自动为我解决这个问题。

有没有比定义每个导出一个类的模块更好的方法来做到这一点?如果不是,您如何命名模块导出的内容?如下例所示,导出类“Employee”的模块“employee”对我来说不够干。

0 投票
7 回答
29865 浏览

javascript - How to handle circular dependencies with RequireJS/AMD?

In my system, I have a number of "classes" loaded in the browser each a separate files during development, and concatenated together for production. As they are loaded, they initialize a property on a global object, here G, as in this example:

Instead of using my own global object, I am considering to make each class its own AMD module, based on James Burke's suggestion:

The issue is that before, there was no declare-time dependency between Employee and Company: you could put the declaration in whatever order you wanted, but now, using RequireJS, this introduces a dependency, which is here (intentionally) circular, so the above code fails. Of course, in addEmployee(), adding a first line var Employee = require("Employee"); would make it work, but I see this solution as inferior to not using RequireJS/AMD as it requires me, the developer, to be aware of this newly created circular dependency and do something about it.

Is there a better way to solve this problem with RequireJS/AMD, or am I using RequireJS/AMD for something it was not designed for?

0 投票
2 回答
1514 浏览

node.js - 如何使用http发布上传的文件?

我将如何在快递应用程序中做同样的事情?也就是说,将文件发布到 facebook:

我正在使用以下内容从 repo 中的示例上传文件:

0 投票
7 回答
40091 浏览

javascript - 将“Vanilla”Javascript 库加载到 Node.js 中

有一些第三方 Javascript 库具有我想在 Node.js 服务器中使用的一些功能。(具体来说,我想使用我找到的 QuadTree javascript 库。)但是这些库只是简单的.js文件,而不是“Node.js 库”。

因此,这些库不遵循exports.var_nameNode.js 对其模块所期望的语法。据我了解,这意味着当您这样做时,module = require('module_name');或者module = require('./path/to/file.js');您最终会得到一个没有可公开访问功能的模块等。

然后我的问题是“如何将任意 javascript 文件加载到 Node.js 中,这样我就可以利用它的功能而不必重写它,这样它就可以了exports?”

我对 Node.js 很陌生,所以如果我对它的工作原理的理解有什么明显的漏洞,请告诉我。


编辑:进行更多研究,我现在看到 Node.js 使用的模块加载模式实际上是最近开发的用于加载称为CommonJS的 Javascript 库的标准的一部分。它在Node.js 的模块文档页面上说明了这一点,但直到现在我都错过了。

最终我的问题的答案可能是“等到你的库的作者开始编写 CommonJS 接口或者你自己做吧”。

0 投票
2 回答
1701 浏览

javascript - Yabble 入门——浏览器端 CommonJS 模块加载

有人熟悉Yabble或其他浏览器端 CommonJS 加载器吗?

我正在试验 Node.js,并且非常想创建可以在服务器端和客户端互换使用的 Javascript 模块。这最终可能更像是“因为它很棒”之类的东西,而不是“因为它实用且有用”之类的东西。

因此,我基本上试图让 CommonJSrequire()方法在浏览器端工作,这正是 Yabble 应该做的。我真的不知道从哪里开始。除了在Yabble 的 Github 自述文件中找到的内容之外,我似乎找不到任何文档,这并没有多大帮助。

基本上我所做的只是把它放在一个 HTML 页面中......

但是每当我调用这个require()函数时,我都会Synchronous require() is not supported.抛出一个异常。

有人可以帮我开始吗?我应该在哪里加载我应该在yabble.js哪里调用require?有没有一种特殊的方式来运行我的 Javascript 模块?

0 投票
2 回答
692 浏览

javascript - 在 Node.js 中确定加载模块的路径

在 Node.js 中,有没有办法确定模块从文件系统的哪个位置加载?

不是说,Node.js 在哪个目录上下文中执行——你可以用process.cwd(). 我想知道有关内存中任何模块的具体信息。

例如,在 Python 中,我可以执行以下操作...

这向我显示了os模块来自文件系统的哪个位置。无论如何在 Node.js 中做类似的事情吗?


注意:当我问上一个问题时,我试图问这个问题,但我措辞很差,最终得到了另一个问题的答案。

0 投票
2 回答
2621 浏览

javascript - 架构查询.. 使用 Node.js 构建服务/消息总线

所以情况是我有各种各样的数据源,它们提供来自外部设备的消息流。有些在串行端口上发送消息,有些通过 UDP,有些通过 Telnet。我希望构建一个小型 Node.js从这些来源中的每一个接收消息的系统。大约有 20 个来源。

然后我想将这些消息中继到多个地方,并且我希望允许客户端通过 telnet 连接并接收这些消息。

我想您可以将其称为“服务总线”或“消息总线”。

目前我只是在思考如何构建它的想法,我不想要一个可以做所有事情的巨大 node.js 文件。

我希望每个“接收器”都位于我的主 node.js 文件的外部 .js 文件中。我的方法是否正常,我可以对我的方法进行任何改进。

主 Node.js 文件

拉入两个“接收器”..每个接收器都将处理来自数据源的传入消息

pagerreceiver.js - 一个示例消息接收器

从串口接收消息..

这是否是分解 node.js 系统的合适方法?任何关于 javascript 的评论也很感激。还有任何关于我应该考虑在 node.js 中构建消息总线的任何其他架构方法的评论都将是超级的。

谢谢阅读,

邓肯。

0 投票
1 回答
447 浏览

javascript - CommonJS & 函数

我正在使用遵循 CommonJS 标准的 Backdraft 加载程序。我试图了解一切是如何运作的,但现在我需要一些建议。

假设我想获得一个时间戳,我这样做:

然后我做了一个简单的要求并尝试运行它:

现在我得到的是从时间戳函数被评估时起 3 次相同的时间戳。define() 会自动关闭还是发生了什么?

我正在学习函数式编程,所以不了解如何执行这些可以重用的小功能有点妨碍我的努力:)

0 投票
3 回答
35202 浏览

javascript - nodeJS require.paths 解决问题

我正在尝试相对而神秘地要求一个文件,正在发生以下情况

这很好用,这表明/Users/marcos/Desktop/Taper/lib/utils.js

这不是,但它应该指向完全相同的文件:

任何人都知道为什么./在这种情况下我仍然不能使用加载路径,因为

结果是:

反正?

提前致谢