是否有可能阻止requireJS自动添加.js文件扩展名?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (60)

我正在使用requireJS来加载脚本。

用于模块名称的路径不应包含.js扩展名,因为路径映射可能适用于目录。

在我的应用程序中,我将所有脚本文件映射到一个配置路径中,因为它们是在运行时动态生成的。

在某些情况下,require会在这些路径的末尾添加第二个.js扩展名。尽管我在服务器端生成了动态路径,然后填充了配置路径,但是我必须再编写一些额外的JavaScript代码以.js从有问题的文件中删除扩展名。

我不明白为什么要将路径映射用于目录。这是否意味着可以以某种方式在一次调用中加载整个目录的文件?

有没有人知道是否有可能强制要求停止向文件路径添加.js?

这是我的HTML文件(这是一个Scala项目,所以我们不能直接将这些变量写入.js文件):

foo.js.modules = {
    order               : '@Static("javascripts/order.min.js")',
    reqwest             : 'http://5.foo.appspot.com/js/libs/reqwest',
    bean                : 'http://4.foo.appspot.com/js/libs/bean.min',
    detect              : 'order!http://4.foo.appspot.com/js/detect/detect.js',
    images              : 'order!http://4.foo.appspot.com/js/detect/images.js',
    basicTemplate       : '@Static("javascripts/libs/basicTemplate.min.js")',
    trailExpander       : '@Static("javascripts/libs/trailExpander.min.js")',
    fetchDiscussion     : '@Static("javascripts/libs/fetchDiscussion.min.js")'
    mostPopular         : '@Static("javascripts/libs/mostPopular.min.js")'
};

然后在我的main.js

requirejs.config({
    paths: foo.js.modules
});

require([foo.js.modules.detect, foo.js.modules.images, "bean"], 
    function(detect, images, bean) {
        // do stuff
});
提问于
用户回答回答于

requirejs'noext 插件:

加载脚本而不添加“.js”扩展名,对动态脚本非常有用。 Documentation 检查examples文件夹。你可能需要的所有信息都将在注释中或示例代码本身中。 Basic usage 将插件放入baseUrl文件夹(通常与main.js文件相同的文件夹)或为插件位置创建别名: require.config({ paths : { //create alias to plugins (not needed if plugins are on the baseUrl) async: 'lib/require/async', font: 'lib/require/font', goog: 'lib/require/goog', image: 'lib/require/image', json: 'lib/require/json', noext: 'lib/require/noext', mdown: 'lib/require/mdown', propertyParser : 'lib/require/propertyParser', markdownConverter : 'lib/Markdown.Converter' } }); //use plugins as if they were at baseUrl define([ 'image!awsum.jpg', 'json!data/foo.json', 'noext!js/bar.php', 'mdown!data/lorem_ipsum.md', 'async!http://maps.google.com/maps/api/js?sensor=false', 'goog!visualization,1,packages:[corechart,geochart]', 'goog!search,1', 'font!google,families:[Tangerine,Cantarell]' ], function(awsum, foo, bar, loremIpsum){ //all dependencies are loaded (including gmaps and other google apis) } );

用户回答回答于

如果你不想添加对noext的依赖,你也可以在路径中追加一个虚拟查询字符串,以避免附加.js扩展名,如下所示:

require.config({
    paths: {
        'signalr-hubs': '/signalr/hubs?noext'
    }
});

这就是noext插件的功能。

扫码关注云+社区

领取腾讯云代金券