- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
事情是这样的:
我正在使用 CommonJS 方法使我的移动(iPhone/Android)应用程序模块化。那里并不奇怪。但是有一件事我就是想不通。
CommonJS 让我可以创建 STATIC 私有(private)变量,这让我可以轻松创建单例。至少我认为这是因为文件的内容得到 require()
d 只读取一次,然后每次都返回导出对象(仅初始化一次)。
但是当我创建如下所示的循环引用时,每次都会执行包含模块内的代码。
等等...
有趣的是,当我在写这个问题时,我突然意识到对 require()
的调用都没有。在下一个开始之前完成(因此堆栈溢出如下所示)。
关于我是否走上正轨有什么想法吗?这里已经过了凌晨 5 点,所以就我而言,所有的赌注都被取消了:D。
示例:
看这段代码,它定义了一个单例:
/* Singleton.js */
exports.getSingleton = getSingleton;
function getSingleton(name) {
if (!instance) {
instance = new Thing(name);
}
return instance;
}
function Thing(name) {
this.name = name;
}
var instance;
require()
这个文件是这样的:
var theFirstThing = require('Singleton').getSingleton('first');
Ti.API.info('first: ' + theFirstThing.name)
var possiblyAnotherOtherThing = require('Singleton').getSingleton('second');
Ti.API.info('second: ' + possiblyAnotherOtherThing.name);
[DEBUG] loading: /path/to/sim/MyApp.app/app.js, resource: app_js
[DEBUG] loading: /path/to/sim/MyApp.app/Singleton.js, resource: Singleton_js
[INFO] first: first
[INFO] second: first
require('Banana');
require('Banana');
require('Pineapple');
[DEBUG] loading: /path/to/simulator/MyApp.app/app.js, resource: app_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Banana.js, resource: Banana_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Pineapple.js, resource: Pineapple_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Banana.js, resource: Banana_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Pineapple.js, resource: Pineapple_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Banana.js, resource: Banana_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Pineapple.js, resource: Pineapple_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Banana.js, resource: Banana_js
/* etcetera (total of 15 times back and forth) */
[DEBUG] loading: /path/to/simulator/MyApp.app/Pineapple.js, resource: Pineapple_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Banana.js, resource: Banana_js
[DEBUG] loading: /path/to/simulator/MyApp.app/Pineapple.js, resource: Pineapple_js
[ERROR] Script Error = Maximum call stack size exceeded. (unknown file)
最佳答案
我也在 Appcelerator Titanium 中使用 CommonJS 模块来构建移动应用程序。我为解决循环依赖问题所做的是:如果 A 和 B 是 2 个循环依赖模块,则在 B 中需要(A),反之亦然,就在您实际需要使用它之前。就我而言,仅当单击某个按钮时,我才需要在 B 中使用 A,因此我在按钮的单击事件监听器中的 B 中放置了 require(A)。希望有帮助。
关于titanium - Appcelerator 和 CommonJS 模块(缓存和循环引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859630/
我正在一个环境中启动一个新项目,该环境对 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
我是一名优秀的程序员,十分优秀!