我在我的网站上使用Telerik控件,它附带了大量的.js
文件。
我已经像这样配置了需求:
require.config({
baseUrl: '@Url.Content("~/Scripts/lib")',
paths: {
app: '../app',
jquery: 'jquery-2.2.4',
knockout: 'knockout-3.4.0',
bootstrap: 'bootstrap.min',
kendo: 'kendo/js',
underscore: 'underscore'
}
});
我的文件夹结构如下所示:
Scripts
app
app-related-stuff.js
lib
jquery-2.2.4.js
knockout-3.4.0.js
bootstrap.min.js
underscore.js
kendo
js
kendo.all.min.js
kendo.angular.min.js
kendo.aspnetmvc.min.js
kendo.autocomplete.min.js
...
kendo.grid.min.js
...
kendo.web.min.js
kendo.window.min.js
但是,如果我引用这样的kendo模块:
require(["kendo.grid.min"], function (kendo) {
...
});
我在此路径的浏览器开发工具中显示了404未找到:
http://localhost:2783/Scripts/lib/kendo.grid.min.js
它不会拿起我的path配置并将其指向kendo/js
,即使它以单词kendo
开头。
我如何正确地配置requirejs,这样我就不必手动为数百个.js
文件添加路径了。
发布于 2016-07-12 16:29:48
在paths
映射中有一种模式匹配形式,但它是一种有限的模式匹配形式,它只适用于在正斜杠处拆分模块名和查看paths
中是否存在前缀所产生的前缀。如果您这样做,require(["foo/bar/baz"])
RequireJS将在paths
地图中检查这些内容:
"foo/bar/baz"
。如果找到,将为模块路径使用相应的值。"foo/bar"
。如果找到,将将相应的值与"baz"
组合起来,形成模块路径。"foo"
。如果找到,将将相应的值与"bar/baz"
组合起来,形成模块路径。RequireJS不执行比这更精细的模式匹配。如果您有类似于paths
中的"foo/ba"
的东西,当它试图解析"foo/bar/baz"
时,它将被完全忽略。不支持shell和类似工具或正则表达式支持的全局。
选项:
lib
下。它们都是从kendo.
开始的,因此无论如何都很容易识别。paths
将包含k: "kendo/js"
,而您将Kendo文件称为"k/kendo.grid.min"
等等。paths
。https://stackoverflow.com/questions/38333177
复制相似问题