- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的文件结构如下所示:
/js
|-module/myModule.js
|-test.js
/vendor/
/spec
|-main.js
|-js/app.js
spec/main.js
是我的入口点,我从它加载模块到 /js,
/vendor
, /规范
我可以毫无问题地加载 vendor
和 spec
中的模块,因为这些模块是在假设 baseUrl = '/'
的情况下构建的。
我在 /js
中加载模块时遇到问题,因为这些模块是在假设 baseUrl = '/js'
的情况下构建的。
如何在不更改 '/js'
脚本代码的情况下解决此问题?
这是一个内嵌注释描述问题的示例。
spec/main.js
(function () {
'use strict';
require.config({
baseUrl: '../'
});
});
define([
'spec/js/app' // it works
], function (app) {
'use strict';
app.initialize();
});
spec/js/app.js
(function(){
'use strict';
define([
'js/module/myModule' // it works
], function () {
// some code
});
});
js/module/myModule.js
(function(){
'use strict';
define([
'test' // it does not works because
// it assumes that baseUrl equals '/js' and not '/'
], function () {
// some code
});
});
最佳答案
首先,我缺少包装您代码的匿名函数中的所有 ()。
例如,在这段代码中:
(function () {
'use strict';
require.config({
baseUrl: '../'
});
}()); // <-- missing ()
基本上,这段代码什么都不做,因为它没有被执行。当你将你的代码包装在一个匿名函数中时(为了避免污染全局范围,让你的代码更容易最小化,......)你必须执行它!但这可能是您写这篇文章时的错别字。
我有几个解决方案,但恐怕它们不能轻易或 100% 地解决您的问题(我并不是说没有那个解决方案,我只是说我不知道不知道)
首先,您可以在 require.config 对象中定义路径,例如:
require.config({
baseUrl: '../',
paths : {
test : 'js/test.js'
}
});
这样你的代码就可以工作了。我知道这不是最好的解决方案,因为您必须在路径中为每个文件定义一个条目,我猜您正在寻找更通用的解决方案。
使用路径,您始终可以在一个包(一组模块)的依赖项中设置一个前缀,这样您就可以在包中组织代码,并在该模块的任何依赖项中添加前缀。如果包有一个主文件,您可以根据需要将路径添加到 require.config 的 PREFFIX 以链接到该模块当前位置的路径。
我能想到的另一个解决方案是在 js 中的模块中使用相对路径。如果你经常遇到这个问题,也许你应该从现在开始定义一个你的模块的依赖,总是使用相对路径。所以
define([
'test'
], function () {
...
);
会变成:
define([
'../test'
], function () {
...
);
但是,由于我想不出任何真正的解决方案来解决您的问题(在不更改 js/文件代码的情况下解决这个问题),我建议开始在包的依赖项中使用相对路径,如果您习惯于在不同项目之间重用一组模块。当然,以某种方式组织文件。
让我们看看是否有人对您的问题有真正的解决方案。
关于javascript - 如何加载采用不同 baseUrl 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101298/
我面临的问题是“MyViewcontroller 在 loadHTMLString baseURL 方法中使用 NULL baseURL 参数:数据定理”- 我已经成功完成了我的任务,并且一切正常。
我正在尝试 Ktor通过转换一些当前正在使用的现有项目 Retrofit . 虽然我可以很容易地将请求转换为: client.get { url("$BASE_URL/something/so
在日常开发过程,相信大家有遇到过各种需求,而我,在这段事件便遇到了一个,需要通过用户界面配置动态接口,同时,因为是app小程序开发,所以接口中涉及到了http以及websocket两个类型的接口.
我想通过这种方式从magento助手获取自定义URL: About Us about About Us 1 所以我所做的就是在 Customer Hel
我的项目遵循以下(简化的)目录结构: \ |- app |- script1.js |- script2.js |- test |- intern.conf.js |- tes
伙计们 如何重定向http://airizu.com/至 http://www.airizu.com/ 我们使用Tomcat作为JSP服务器,一开始我们使用http://airizu.com作为网址的
我已经使用 NSWAG 从 ASP .NET Rest API 生成了一个 javascript 客户端。但是当我尝试调用 API 方法时发现一些错误。 原因错误是:TypeError:无法设置未定义
我花了一些时间试图理解 baseUrl 是什么(通过学习 Zend Framework),但令人惊讶的是,对于这样一个无处不在的实用程序,甚至没有一个“专家”或博主试图定义 baseUrl 以便学习者
我的 baseUrl 是 http://localhost:8080/whatever。在其他机器上,它是 http://localhost/whatever。 有没有一种聪明的方法可以在不使用的情况
我想通过改造使用两个服务器 url,但是当我使用两个基本 url 时只有一个在工作。请告诉我如何在 android 中使用两个基本 url。 public class APIUtils { p
我正在使用 grails 2.3.4 的 geb 0.9.2 插件 我想在两个单独的主机上与服务分开运行功能测试。 我观察到以下情况: 如果我在同一主机上运行服务,并执行: grails test-a
我是 iOS 编程新手,并试图弄清楚 loadHTMLString:baseURL: 到底做了什么,但我找不到令人满意的解释。苹果的网站只是说: Sets the main page content
我已经使用 ionic 构建了一个应用程序,但我的客户将使用不同的服务器来访问 API。我如何提供一个选项来让用户设置基本 url 以调用所需的服务器 API? 最佳答案 有两种方式: 临时方式: 这
我正在使用 Geb 编写一些浏览器自动化测试。它允许您配置 baseUrl并指定与此相关的浏览器操作,详见 The Book of Geb .这适用于站点内的路径,但我看不到任何处理子域的语法。 是否
在我们的端到端测试中,我们动态生成 URL 端点供我们测试。在我们的 Protractor 配置中,我希望在运行测试之前使用 beforeLaunch 或 onPrepare 检索 URL 端点并将其
我将 ckEditor 与其自己的 jQuery 适配器一起使用,并且我想定义编辑器的 baseUrl,以便它将在 html 中显示图像。 这是我的代码 - 不幸的是不起作用: var txt
所以, 我有一个使用 MVC 区域的应用程序。 Controller 的路由看起来像 [Route("Settings/{something}")] 然后我有一个 Action [Route("s
我的文件结构如下所示: /js |-module/myModule.js |-test.js /vendor/ /spec |-main.js |-js/app.js spec/main.js
我正在寻找一种方法来访问我通过命令行传递的 baseUrl。例如。 protractor conf.js --baseUrl=http://myawesomesite.com 我试过 browser.
我的网站移动版有问题。在我的桌面版网站上,我使用代码: 在桌面上它工作正常,当我在浏览器中输入:myexample.com 时它会将我重定向到:http://www.myexample.com但在移
我是一名优秀的程序员,十分优秀!