首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何配置一个需求路径以将多个模块指向一个文件夹?

如何配置一个需求路径以将多个模块指向一个文件夹?
EN

Stack Overflow用户
提问于 2016-07-12 15:29:38
回答 1查看 424关注 0票数 0

我在我的网站上使用Telerik控件,它附带了大量的.js文件。

我已经像这样配置了需求:

代码语言:javascript
运行
复制
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'

    }
});

我的文件夹结构如下所示:

代码语言:javascript
运行
复制
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模块:

代码语言:javascript
运行
复制
require(["kendo.grid.min"], function (kendo) {
    ...
});

我在此路径的浏览器开发工具中显示了404未找到:

代码语言:javascript
运行
复制
http://localhost:2783/Scripts/lib/kendo.grid.min.js

它不会拿起我的path配置并将其指向kendo/js,即使它以单词kendo开头。

我如何正确地配置requirejs,这样我就不必手动为数百个.js文件添加路径了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-12 16:29:48

paths映射中有一种模式匹配形式,但它是一种有限的模式匹配形式,它只适用于在正斜杠处拆分模块名和查看paths中是否存在前缀所产生的前缀。如果您这样做,require(["foo/bar/baz"]) RequireJS将在paths地图中检查这些内容:

  1. "foo/bar/baz"。如果找到,将为模块路径使用相应的值。
  2. "foo/bar"。如果找到,将将相应的值与"baz"组合起来,形成模块路径。
  3. "foo"。如果找到,将将相应的值与"bar/baz"组合起来,形成模块路径。

RequireJS不执行比这更精细的模式匹配。如果您有类似于paths中的"foo/ba"的东西,当它试图解析"foo/bar/baz"时,它将被完全忽略。不支持shell和类似工具或正则表达式支持的全局。

选项:

  1. 将所有的Kendo文件放在lib下。它们都是从kendo.开始的,因此无论如何都很容易识别。
  2. 为Kendo文件创建一个最小的映射。paths将包含k: "kendo/js",而您将Kendo文件称为"k/kendo.grid.min"等等。
  3. 编写一个脚本来生成RequireJS配置。它将扫描包含Kendo文件的目录,并创建包含每个文件一个条目的paths
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38333177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档