Relative paths with RequireJS modules/packages(与RequireJS模块/包的相对路径)
问题描述
我是RequireJS的新手,我遇到了一些问题。我已经使用RequireJS编写了一个构建在主干上的小框架,我希望它可以在不同的项目中重用。因此,通过一些搜索,我了解到Required允许打包。这似乎就是我要找的。我有一个main.js文件来启动我的应用程序,基本上如下所示:
require.config({
packages: ['framework']
});
require(['framework'], function(framework) {
framework.createDash();
});
然后在与我的main.js相同的目录中,我有另一个名为"framework"的目录,它包含另一个main.js,如下所示:
define(function(require, exports, module) {
exports.createDash = function(dash, element) {
require(['dash/dash.model', 'dash/dash.view'], function(DashModel, DashView) {
return new DashView({
model: new DashModel(dash),
el: element ? element : window
});
});
};
});
在搜索中,我找到this page,这表明‘required’参数的作用域应该是子模块。然而,当我尝试请求一些东西时,它们仍然相对于我最初的main.js。我试了很多方法,找了几个小时都没有结果。有没有什么方法可以将我的请求/定义调用包含在我的包中,相对于它的根中的main.js?
推荐答案
您需要将您的子模块定义为Required Configuration中的Package:
require.config({
packages: [
{ name: 'packagename',
location: 'path/to/your/package/root', // default 'packagename'
main: 'scriptfileToLoad' // default 'main'
}]
... some other stuff ...
});
要加载模块,您只需在要求处使用‘Packagename’:
define(['jquery', 'packagename'], function($, MyPackage) {
MyPackage.useIt()
});
在您的软件包中,您必须使用./
前缀来加载相对于您的子模块的文件:
define(['globalDependency', './myLocalFile'], function(Asdf, LocalFile) {
LocalFile.finallyLoaded();
});
有一个很有用的快捷方式:如果您的包名与您所在的位置相同,并且您的主文件名为‘main.js’,那么您可以替换它
packages: [
{ name: 'packagename',
location: 'packagename',
main: 'main'
}]
至此:
packages: ['packagename']
据我所知,您已经尝试定义一个包,但是您是否也使用了./前缀?如果没有此前缀,Required将尝试在其全局根路径中查找文件。如果没有包,./
将无用,因为相对路径与全局根路径相同。
干杯
这篇关于与RequireJS模块/包的相对路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:与RequireJS模块/包的相对路径
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06