问题标签 [wirejs]

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 投票
2 回答
772 浏览

jquery - 无法理解为什么wire.js 无法创建对象

这是我的网站的设置:

索引.html

hello-wired-spec.js

你好-wired.js

main.js

所以我正在使用Require.jswire.js编写一个简单的 IoC 原型网站。我的问题是,当我加载 index.html 页面时,我在浏览器的控制台中看到以下内容:

所以看起来我错过了一些东西,但我不知道在这里做什么。有人可以帮忙吗?

编辑这是Scripts我网站中的文件夹:

我网站中的脚本文件夹

编辑好的我稍微改变了项目结构和HTML页面:

在此处输入图像描述

现在我之前没有得到任何 404,但我也没有“包”配置部分。在更改 HTML 后,我确实得到了一些 404,但我已经通过将/js文件放置在预期的位置来修复这些问题。毕竟这一切,我仍然得到同样的错误:

在此处输入图像描述

0 投票
1 回答
3009 浏览

node.js - node.js 中的wire.js 示例

我是 Node 新手,来自 C# 背景,我希望通过 Node 解决的主要问题之一是依赖注入。我知道wire.js 有这个功能,我已经阅读了我能找到的所有内容,我什至下载了Html“Hello World”示例。但是,我仍然无法让它正常工作。

这是我为使其正常工作所做的工作:

  1. 我将 hello-wired.js 和 hello-wired-spec.js 文件拉到我的 Node 项目中。
  2. 我将示例应用程序中的 /js/wire 中的 wire 文件夹拉到我的 Node 应用程序中的 /node-modules/wire 中。
  3. 我在构造函数中删除了 hello-world.js 中的代码行,因为我没有 Html 节点并且我使构造函数无参数。然后我将sayHello 中的行替换为使用console.log(),因为我没有InnerHtml。
  4. 我创建了一个测试动作



我得到的错误是它找不到模块wire!hello-wired-spec。我认为这意味着我没有配置wire.js 来知道从哪里获得我的规范,但我不知道如何。我也不知道我是否应该为此使用回调。

任何帮助是极大的赞赏。

0 投票
2 回答
2167 浏览

requirejs - 使用 PhantomJS 运行 RequireJS/WireJS 应用程序

我正在尝试执行一个使用 RequireJS (2.1.8)、WireJS (0.10.2) 和 PhantomJS (1.9.2) 的基本应用程序:

  • 使用 PhantomJS(这是我的目标)运行应用程序时,WireJS 无法加载(请参阅下面的错误)。
  • 使用 Chrome 运行应用程序时,它可以正常完成。

请帮助指出 WireJS 在 PhantomJS 下正常运行的缺失部分。

以下是我的应用程序文件。

1)app.html

2) 应用程序.js

3)wireContext.js

4) 幻象运行器.js

5)在PhantomJS下运行app时报错

0 投票
1 回答
63 浏览

javascript - 将wirejs与jQuery插件一起使用

我有一个 jQuery 插件,比如“myPlugin”,我使用如下:

  • 如果我的 DOM 包含:

    /li>
  • 我将在 div 上调用我的插件:

    /li>
  • 它将使插件做它的事情,这将导致(例如):

    /li>

我试图弄清楚这个插件是否可以以某种方式用作wirejs规范中的组件,如下例所示(除了我正在使用的onDom之类的东西):

我想有些人已经尝试将wirejs与jQuery插件一起使用。有人可以分享一个例子或一些文档吗?

0 投票
1 回答
183 浏览

javascript - wirejs - 每个依赖组件的新组件实例

第一:我是新的wirejs,很可能我错过了文档上的一些东西

在常规组件声明中,例如:

所有使用 $ref 依赖于该组件的组件都将获得相同的实例,因此线也是一种单例机制(在大多数情况下这对我有好处)

在某些情况下,我希望每个依赖项都使用相同的组件配置获得自己的组件实例。

我知道如何使用多个组件名称或内联创建实例来获得类似的结果,但这是我试图避免的。

谢谢!

0 投票
1 回答
57 浏览

wirejs - 将 cujojs/wire 上下文“导入”到另一个

我正在寻找一种方法来实现以下用例:

  1. 我有很多模块,每个模块都有一个公开其组件的电线规格
  2. 为了组装一个应用程序,我选择模块并使用它们的电线规格
  3. 应用程序的线规范是所用模块的线规范的合并: (3.1) 我首先将每个模块的线规范“要求”为对象。(3.2) 然后,我合并对象。(3.3) 最后,我将结果作为定义应用程序的电线规范的对象返回。

这是应用程序上下文规范的示例:

我已经阅读了几次电汇文档,希望找到一种“本机”方式来完成上述操作,但到目前为止我还没有找到。

“原生”方式是像“wire”工厂一样的工厂,但不是为每个模块创建子上下文,而是希望将每个模块的组件视为应用程序上下文的直接组件。

例如,Spring 允许将上下文定义导入另一个上下文定义,结果就好像导入的上下文的内容已与导入的上下文内联。

0 投票
2 回答
4727 浏览

requirejs - 使用 requirejs 预加载 polyfill 库

我正在wirejs使用requirejs. 对于 IE 8,我使用 polyfills: cujo/polyjs 库并要求在加载之前预加载此库wirejs

如果我用作curlAMD 加载程序,根据文档,我有以下可用选项:

对我有用的是:

本文档建议shim为此目的使用 config。但是,我一直无法弄清楚如何。我尝试过的一些事情:

有没有更好的方法来解决这个问题?

任何帮助表示赞赏!...感谢您的时间!

0 投票
0 回答
107 浏览

dojo - 使用dojo构建系统的wirejs和dojo

我有一个使用wirejs 进行依赖注入的dojo 应用程序。
当我尝试构建应用程序时,我在“when”和“meld”模块上遇到依赖错误。如下所示:

我的 dojo 构建配置文件的相关部分如下:

我在这里错过了什么吗?

谢谢 !

0 投票
0 回答
201 浏览

dojo - 使用dojo构建系统的wirejs和dojo (2)

(这与使用 dojo 构建系统的 wirejs 和 dojo相同,但有更多关于问题的详细信息和尝试过的解决方案。创建了重复的问题,因为这是在评论中提出的)。

在构建使用wire 的dojo 应用程序时,dojo 加载程序会undefinedModule为“./lib/context”抛出一个我们无法摆脱的错误。

wire使用 git 子模块添加到一个大型的、正在工作的 dojo 项目中。事实证明,cujojswhen和 cujojsmeld也是必需的。我也将它们添加为 git 子模块。

在这个项目中,库不在应用程序文件夹 ( src/app) 旁边,而是在src/lib. 所以我有src/lib/wire, src/lib/when, , src/lib/meldnext tosrc/lib/dgrid等。dojo库有 2 层深:src/lib/dojo/dojo,src/lib/dojo/dijit和.src/lib/dojo/dojoxsrc/lib/dojo/util

版本:

  • 道场 1.10.4
  • 电线 0.10.9
  • 当 3.7.2
  • 融合 1.3.1

一旦我将以下包定义添加到dojoConfig

请注意,有必要添加main条目。例如,这使得在依赖项列表中引用when/when.jsas成为可能,而不是cujojs 代码在内部执行的操作。"when""when/when"

因此,这在开发模式下有效。

接下来,我试图让构建工作。

在 中build.profile.js,我再次添加了包引用。构建以多种方式失败。

首先,对于包,dojo 构建器期望文件中有一个dojoBuild属性package.json,它引用一个<mypackage>.profile.jspackage.js文件,它本质上定义了包的构建配置。这个构建配置通常(它在我们所有的包中)只是一个resourceTags对象,其函数定义了包中的 AMD 资源文件、测试文件以及应按原样复制的文件。

cujojs 包没有可用于dojo 构建器的构建定义。

构建器首先抱怨这些包没有构建配置,其次资源没有被标记为 AMD 资源(这是构建配置文件的主要原因)。

由于我不想更改我使用的外部库的文件,因此我不倾向于向dojoBuildcujojs 包添加属性和构建配置文件,因此我寻求解决方法。

单步执行dojo builder代码后,发现builder报错package.json文件没有dojoBuild属性,最后只看内部包定义结构获取resourceTags对象。内部包定义结构从主构建配置文件中的包定义开始。所以,我最终在那里捎带了一个resourceTags对象:

请注意和resourceTags的包定义中wire的额外属性。我保持“简单”,只使用一个通用对象来处理所有 3 种情况,. 这是一个非常标准的设置,除了,我稍后会介绍。whenmeldgeneralResourceTagsresourceTagsisGivingTroubleButUnused

请注意,我尝试了在https://github.com/cujojs/when/wiki/Using-with-Dojo for中明确提到的解决方案when,但它不起作用

这样,我们从 dojo builder 那里得到了一份相当不错的报告,但它提到了一些缺失的资源。例如,某些模块需要 jquery。但是,这些模块没有在这个项目中使用。

请注意,wirejs 和 dojo 中提到的解决方案使用 dojo 构建系统,捎带packageJson可能会更好。我没有测试过。

我最终引入了isGivingTroubleButUnused复制这些模块而不处理它们,因为我们无论如何都不使用它们。请注意,其中 1 个问题在when/generator. Closure 编译器在此处看到语法错误(请参阅https://github.com/cujojs/when/issues/429)。

此设置的最终结果是构建没有错误。

然后,我们想对此进行测试……但它失败了。我们得到的第一个错误确实是 dojo 加载程序抛出了一个undefinedModule Errorfor "./lib/context"。这确实发生在第 23 行的唯一位置wire/wire.js

这是为了解决wire/lib/context.js,显然这在开发(取消构建)模式下有效。

在任何情况下,require它都旨在成为上下文相关的要求(参见 dojotoolkit.org /documentation/tutorials/1.10/modules_advanced/,“有条件地要求模块”),因为模块引用是相对的。但这不应该是它无法构建且无法构建的原因。

接下来,我尝试只复制所有wire,whenmeld资源。如果资源不包含在层的 dojo 构建中,它只会退回到异步加载。所以,这可以工作:

构建现在通过,并复制所需的内容。当然,还有更多错误,应用程序代码引用的地方wire,但这是意料之中的(error(311) Missing dependency. module: MY_MODULE; dependency: wire!SOME_PACKAGE/_wire-serverRequests)。

然而,浏览器在同一个地方给出了同样的错误:一个undefinedModule Errorfor "./lib/context"

此时的工作假设是wire,名称下使用的函数require在构建版本中不是上下文敏感的需求,而是在未构建版本中。

这不是真的。首先,我更改了wire代码或测试以阅读

使参考绝对。同样的问题。

然后,我尝试使用 sourceMaps ( useSourceMaps = true) 进行调试。这是一场噩梦,但我相信我看到require使用的是相同的,上下文相关的要求。

也许“预加载”有效?因此,在顶部的 HTML 页面中,我将所有代码都用

这确保context在我们做任何其他事情之前加载。同样的错误。

接下来,我在代码中添加了日志记录wire/lib/context

(使用error, 因为其他消息在构建中被剥离)。

在 unbuild 版本中,我看到所有消息。在构建版本中,我在错误发生之前只看到“定义上下文”。所以问题不在于“加载” wire/lib/context,而在于定义它,并且可能在于加载或定义when

所以,我申请了同样的技巧when

现在unbuild版本有一个惊喜。输出是:

这意味着when定义在定义之前 context开始。这很奇怪,因为我没有看到任何代码可以告诉加载器whencontext, 之前的行

在“定义上下文”的记录之后执行。

在构建版本中,我们仍然只得到

在错误发生之前!这种行为明显不同!

接下来,我删除了预加载代码。取消构建代码给出相同的输出,构建代码现在在错误发生之前没有消息。

所以无论如何,这段wire代码在加载过程中做着我不期望和不理解的事情。

我确实希望这个额外的细节会触发某人让我们走上正确的轨道......