RequireJS-使用CDN加载非脚本文件

RequireJS - loading non-script files using CDN

本文关键字:脚本 文件 加载 使用 CDN RequireJS-      更新时间:2023-12-21

我有一个用AngularJS编写的大型客户端项目,该项目使用RequireJS进行异步模块加载。

我的许多Angular指令都使用自己的HTML和CSS。例如:

define(function (require) {
    require('css!path/to/directive-name.css');
    app.directive('directive-name', function () {
        return {
            restrict: 'E',
            template: require('text!path/to/directive-name.html'),
            controller: function ($scope) {
                // code 
            }
        };
    });
});

这些天,我正在努力使我的应用程序与CDN服务协同工作。因此,对于所有的JavaScript文件,我已将require.config.js文件更改为:

paths: {
        app: [
            '//cdn.domain.net/path/to/main',
            'main'
        ],
}

但是,在我的应用程序的启动页面上加载了很多指令,每个指令都有两个文件(CSS、HTML),它们是从我的原始服务器加载的,而不是从CDN加载的。

我可以通过什么方式修改require.config.js文件,使浏览器从CDN服务器获取html、css?

对于所需的每个文件,是否有一个选项-浏览器将从CDN中获取该文件,并在CDN失败的情况下回退到我的原始服务器,尽管require.config.js中没有明确提及?

存在路径回退。您必须为依赖项分配一个ID,并定义该ID,以便首先使用CDN进行路径映射,其次使用本地。不幸的是,您将不得不为每个依赖项执行此操作。

另一方面,考虑使用RequireJS优化器将您的应用程序捆绑到一个文件或一堆文件中,然后对这些文件进行CDN。这样,您就不必识别每一个依赖项。