- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我出于常见原因(命名空间保护和依赖项处理(需要)以及公共(public) API 定义(导出))在个人项目中使用模块。我编写了自己的 require() 方法并使用标准模块模式 - 即:
var myModule = (function() {
var exports = {};
function sayHello() {
return "hi";
}
exports.sayHello = sayHello;
return exports;
})();
所以我想在 CommonJS 标准上标准化我的东西(这是针对服务器端 JS 的,我的问题是关于 CommonJS 与其他模块标准的而不是)。我读到的有关 CommonJS 的所有内容都说模块看起来像这样
function sayHello() {
return "hi";
}
exports.sayHello = sayHello
就是这样!但这不是一个模块。一定有什么东西将这个包装为一个实际的模块!我还没有找到一个讨论 CommonJS 模块的网站来说明如何将其变成一个实际的模块。我是否错过了其他人似乎都知道的事情?
所以我的问题是:
包装是做什么的? ——也就是说,是什么把它变成了一个实际的模块?我认为是某种图书馆。
这个最终的、封装的 CommonJS 模块是什么样的?我想编写 CommonJS 标准的实现,但找不到任何有关最终模块应该是什么样子的文档。
“exports”变量是否在全局范围内?如果没有,如果没有在模块代码主体中显式声明,那么什么向模块提供导出对象?谁在做这件事——模块的调用者?
当当。我自己写的时候觉得很简单。现在看来就像魔法一样。一些综合文档的链接会很棒。
注意:我对 Node.js 知之甚少,并且不打算在这个项目中使用它,所以如果你回答,请不要在 Node.js 中回答 -说话。
最佳答案
What is doing the wrapping?
节点是。它可以访问文件系统,因此它会缓存所有需要的文件中的代码,并将其传递到需要它的命名空间。
What does this final, wrapped, CommonJS module look like?
包装模块的实际代码可能位于 module.js
中,它是 Node 安装的 lib
文件夹中的核心文件。
Is the "exports" variable in the global scope?
exports
是文件中module
对象的一个属性。 module
是该文件内的全局范围。 exports
属性是模块返回给需要它的代码的内容。
要记住的关键一点是 CommonJS 精神内置于 Node 的核心模块化代码中。 V8 中没有神奇的实现来规定 module.exports 是一个“东西”。当实现 ES6 模块成为常态时,这一切可能都会改变。
您可能会发现阅读this很有用。 .
您可能会发现放弃重写 require()
的追求会更有用。 :-)
关于Javascript CommonJS - 模块在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32887258/
我正在一个环境中启动一个新项目,该环境对 require 模块具有 native CommonJS 支持 - 这是一个原子 shell 项目,不可能使用预编译步骤,例如在 Browserify 或 w
是否有任何标准方法可以在 CommonJS 环境中使用 Scala.js 应用程序作为库?如果没有,我可以为此目的修补生成的 js 文件吗? 最佳答案 Scala.js 0.6.13 及更高版本 把它
我正在寻找 Nashorn 的模块系统。据我所知,CommonJS 是处理 JS 模块的方法。我浏览了该列表( here 和 here ),发现 Java 的 CommonJS 实现方式很少。 Nar
背景 我有一个文件需要在两个存储库之间共享。该文件包含一个对象。 Repo A 设置为仅接受 commonjs 文件( require("/path/to/file") ),我无法轻松访问其 babe
我正在尝试使用 base58进口 buffer .我已经安装了两个: https://github.com/calvinmetcalf/rollup-plugin-node-builtins http
假设我想在我的项目(或任何给定的 npm 包)中使用 Immutable。我已经npm install编辑了它,所以它在node_modules中。当然,它有 CommonJS 导出。但是,我想在我的
我对模块化 JS 完全陌生,以前从未使用过任何模式。我正在编写一个项目,其中的代码多达 400 多行,我想通过将不同模块中的内容分开来更好地管理它。我选择使用 commonJS 模块,因为我已经使用了
在我看来,这个问题更接近commonJs,而不是titanium。我编写了一个大文件。相当丑陋(代码的第一次和平)。如果你愿意的话,你可以跳过它。 问题:我的代码中有 2 个 View ,我想将它们放
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在 websphere 中运行 spring 的 workmanager 任务执行器时收到异常。 以下是我的代码 我的 ConcurrentWorkManager 中的代码
因此,我出于常见原因(命名空间保护和依赖项处理(需要)以及公共(public) API 定义(导出))在个人项目中使用模块。我编写了自己的 require() 方法并使用标准模块模式 - 即: var
在这种情况下,在 CommonJS 模块内声明函数是否有良好的做法: // function foo() { ... } module.exports = function () { // fu
我想知道以下是否以及如何可能: CommonJS 环境,在 Node 和/或浏览器中使用的模块(带有 Browserify )。 两个(或更多)模块,每个返回一个单例,需要在应用程序的不同部分/模块中
这是我从 Flux architecture var AppDispatcher = require('../dispatcher/AppDispatcher'); var EventEmitter
我在创建声明文件 (d.ts) 时感到困惑。 例如,我创建了一个 NPM 包“a”(一个 CommonJS 模块 index.ts): export interface IPoint { x:
我正在从事 Angular2 项目。我浏览了 Angular2 aot 文档并且能够生成 ngFactory 文件。我按照文档中的建议使用了 rollup js。我有一些非 es6 npm 包。我已经
我不时听到 CommonJS http://www.commonjs.org/是创建一组模块化 javascript 组件的努力,但坦率地说,我从来没有理解过它。 我可以在哪里使用这些模块化组件?我在
我正在使用 React、TS 和 Webpack 堆栈开发应用。 我需要实现允许我的应用程序与客户端插件一起工作的功能 - js 文件覆盖某些类的现有功能。它可以从任何地方加载 - 本地文件系统或远程
现在,我使用 CommonJS 模块在脚本中设置一些全局变量,而不是在每个脚本中手动设置它们。 index.spec.js /*globals browser, by, element*/ requi
我想知道如何从另一个需要它的模块中增加一个 commonjs 模块。 假设我有三个文件,两个 commonjs 模块,如下所示: my-example-module.js function MyExa
我是一名优秀的程序员,十分优秀!