【发布时间】:2015-06-12 20:47:45
【问题描述】:
我在很多 JS 库中都看到了这一点,主要是通过 GitHub 来查看,目前正在查看 PeerJS。我指的是这个:
var util = require('./util');
var EventEmitter = require('eventemitter3');
var Negotiator = require('./negotiator');
var Reliable = require('reliable');
...
window.Socket = require('./socket');
window.MediaConnection = require('./mediaconnection');
window.DataConnection = require('./dataconnection');
window.Peer = require('./peer');
window.RTCPeerConnection = require('./adapter').RTCPeerConnection;
window.RTCSessionDescription = require('./adapter').RTCSessionDescription;
window.RTCIceCandidate = require('./adapter').RTCIceCandidate;
window.Negotiator = require('./negotiator');
window.BinaryPack = require('js-binarypack');
...
仅凭直觉,require() 似乎正在导入/包含正在传入的任何内容,即EventEmitter。但是,我不知道require() 来自哪里?
我对 NodeJS 不太熟悉,这似乎是 NodeJS 的事情,但我不明白 require() 如何适应不存在 NodeJS 的 Web 浏览器上下文。
我见过RequireJS 和Browserify,但这些库需要包含在应用程序中才能使用require() 函数。在 PeerJS 的示例中,我可以将其包含在内:
<script type="text/javascript" src="/static/js/peerjs.v0.3.13.js"></script>
... 它使用require() 没问题。但是,看起来没有任何定义 require() 的第三方库与 PeerJS 源代码捆绑在一起。
它是如何包含在内的?它是如何初始化的?它如何获取传入的任何内容,即“EventEmitter”?
【问题讨论】:
-
requirejs.org 自我解释
-
@PM77-1:PeerJS 不使用 RequireJS 库。
-
感谢@Qantas94Heavy。这里似乎没有使用 RequireJS
-
PeerJS 使用 Browserify 将脚本捆绑在一起,
require函数在构建代码的第一行中定义为函数参数。 github.com/peers/peerjs/blob/… -
您也可以从 Gruntfile.js 中看到这一点,它用于指定文件的构建方式。 github.com/peers/peerjs/blob/…
标签: javascript