问题标签 [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.
node.js - node.js - 评估实时进程
是否有人使用现有的 node.js REPL 为自己设置了类似的东西?我没有想到一个快速的方法来做到这一点。
我今天这样做的方式是使用 emacs,这个: https ://github.com/ivan4th/swank-js
该模块由以下部分组成:
Emacs 的 SLIME-js 插件,与 js2-mode 结合使用,您可以简单地在函数 def 的某处发出 CMx - 然后关闭函数的字符串到 ..
用 Node.js 编写的 Swank-js 服务器(是的,您可以从本地计算机直接评估到远程进程) - 它接收您评估过的函数的字符串并实际评估它
一个完整的部分,可让您使用 BROWSER 连接到该服务器上的另一个端口,然后让您在该浏览器上操作 DOM(这非常棒但不相关)
我的解决方案在 emacs 端使用 SLIME-js,并且我在 app.js 文件中需要('swank-js')
现在..关于我的解决方案或其他可能的问题,我有几个问题和疑问:
Q1:这是不是太过分了?有人有什么秘密方法可以将 nano 中的东西评估到他的实时过程中吗?
Q2:我不得不改变 swank-js 的 EVALing 方式。它使用了某种黑魔法,如下所示:
据我了解,它只是将全局变量复制到新的上下文中,并且在 eval 时,不会更改原始函数定义 - SOOO .. 我只是使用普通的“eval”并且它可以工作。
您对此有何评论?
Q3:为了重新评估一个函数,它需要是一个 GLOBAL 函数 - 将所有函数定义为全局(类似clojure)是不好的做法吗?你认为还有另一种方法可以做到这一点吗?
javascript - RequireJS:如何定义包含单个“类”的模块?
我有许多 JavaScript “类”,每个类都在自己的 JavaScript 文件中实现。对于开发,这些文件是单独加载的,对于生产它们是连接的,但是在这两种情况下,我都必须手动定义加载顺序,确保如果 B 使用 A,则 B 在 A 之后。我计划使用RequireJS作为CommonJS Modules/AsynchronousDefinition自动为我解决这个问题。
有没有比定义每个导出一个类的模块更好的方法来做到这一点?如果不是,您如何命名模块导出的内容?如下例所示,导出类“Employee”的模块“employee”对我来说不够干。
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?
node.js - 如何使用http发布上传的文件?
我将如何在快递应用程序中做同样的事情?也就是说,将文件发布到 facebook:
我正在使用以下内容从 repo 中的示例上传文件:
javascript - 将“Vanilla”Javascript 库加载到 Node.js 中
有一些第三方 Javascript 库具有我想在 Node.js 服务器中使用的一些功能。(具体来说,我想使用我找到的 QuadTree javascript 库。)但是这些库只是简单的.js
文件,而不是“Node.js 库”。
因此,这些库不遵循exports.var_name
Node.js 对其模块所期望的语法。据我了解,这意味着当您这样做时,module = require('module_name');
或者module = require('./path/to/file.js');
您最终会得到一个没有可公开访问功能的模块等。
然后我的问题是“如何将任意 javascript 文件加载到 Node.js 中,这样我就可以利用它的功能而不必重写它,这样它就可以了exports
?”
我对 Node.js 很陌生,所以如果我对它的工作原理的理解有什么明显的漏洞,请告诉我。
编辑:进行更多研究,我现在看到 Node.js 使用的模块加载模式实际上是最近开发的用于加载称为CommonJS的 Javascript 库的标准的一部分。它在Node.js 的模块文档页面上说明了这一点,但直到现在我都错过了。
最终我的问题的答案可能是“等到你的库的作者开始编写 CommonJS 接口或者你自己做吧”。
javascript - Yabble 入门——浏览器端 CommonJS 模块加载
有人熟悉Yabble或其他浏览器端 CommonJS 加载器吗?
我正在试验 Node.js,并且非常想创建可以在服务器端和客户端互换使用的 Javascript 模块。这最终可能更像是“因为它很棒”之类的东西,而不是“因为它实用且有用”之类的东西。
因此,我基本上试图让 CommonJSrequire()
方法在浏览器端工作,这正是 Yabble 应该做的。我真的不知道从哪里开始。除了在Yabble 的 Github 自述文件中找到的内容之外,我似乎找不到任何文档,这并没有多大帮助。
基本上我所做的只是把它放在一个 HTML 页面中......
但是每当我调用这个require()
函数时,我都会Synchronous require() is not supported.
抛出一个异常。
有人可以帮我开始吗?我应该在哪里加载我应该在yabble.js
哪里调用require?有没有一种特殊的方式来运行我的 Javascript 模块?
javascript - 在 Node.js 中确定加载模块的路径
在 Node.js 中,有没有办法确定模块从文件系统的哪个位置加载?
我不是说,Node.js 在哪个目录上下文中执行——你可以用process.cwd()
. 我想知道有关内存中任何模块的具体信息。
例如,在 Python 中,我可以执行以下操作...
这向我显示了os
模块来自文件系统的哪个位置。无论如何在 Node.js 中做类似的事情吗?
注意:当我问上一个问题时,我试图问这个问题,但我措辞很差,最终得到了另一个问题的答案。
javascript - 架构查询.. 使用 Node.js 构建服务/消息总线
所以情况是我有各种各样的数据源,它们提供来自外部设备的消息流。有些在串行端口上发送消息,有些通过 UDP,有些通过 Telnet。我希望构建一个小型 Node.js从这些来源中的每一个接收消息的系统。大约有 20 个来源。
然后我想将这些消息中继到多个地方,并且我希望允许客户端通过 telnet 连接并接收这些消息。
我想您可以将其称为“服务总线”或“消息总线”。
目前我只是在思考如何构建它的想法,我不想要一个可以做所有事情的巨大 node.js 文件。
我希望每个“接收器”都位于我的主 node.js 文件的外部 .js 文件中。我的方法是否正常,我可以对我的方法进行任何改进。
主 Node.js 文件
拉入两个“接收器”..每个接收器都将处理来自数据源的传入消息
pagerreceiver.js - 一个示例消息接收器
从串口接收消息..
这是否是分解 node.js 系统的合适方法?任何关于 javascript 的评论也很感激。还有任何关于我应该考虑在 node.js 中构建消息总线的任何其他架构方法的评论都将是超级的。
谢谢阅读,
邓肯。
javascript - CommonJS & 函数
我正在使用遵循 CommonJS 标准的 Backdraft 加载程序。我试图了解一切是如何运作的,但现在我需要一些建议。
假设我想获得一个时间戳,我这样做:
然后我做了一个简单的要求并尝试运行它:
现在我得到的是从时间戳函数被评估时起 3 次相同的时间戳。define() 会自动关闭还是发生了什么?
我正在学习函数式编程,所以不了解如何执行这些可以重用的小功能有点妨碍我的努力:)
javascript - nodeJS require.paths 解决问题
我正在尝试相对而神秘地要求一个文件,正在发生以下情况
这很好用,这表明/Users/marcos/Desktop/Taper/lib/utils.js
这不是,但它应该指向完全相同的文件:
任何人都知道为什么./
在这种情况下我仍然不能使用加载路径,因为
结果是:
反正?
提前致谢