小编Tho*_*s T的帖子

像其他资产一样通过 CDN URL 加载动态导入的块

我有一个指向我的基域的 CDN,基本上是 1:1 映射。我正在尝试在服务器上构建我的包,并且我想使用 CDN URL 加载它。我想要的之后npm run build是:

public/
  css/
    app.css
  js/
    index.js
    1.js.gz
    1.js
    2.js.gz
    2.js
Run Code Online (Sandbox Code Playgroud)

然后我的 CDN 会反映这一点,所以我希望这些资源像这样加载:

https://mycdn.com/public/js/index.js
https://mycdn.com/public/css/app.css
Run Code Online (Sandbox Code Playgroud)

我当前的webpack.mix.js配置:

mix
  .sass('resources/sass/app.css', 'public/css')
  .js('resources/js/index.js', 'public/js')
Run Code Online (Sandbox Code Playgroud)

它会在正确的位置生成所有文件,这很好。然后我将它们包含在我的index.blade.php

<script src="{{ elixirCDN('/js/index.js') }}"></script>

elixirCDN 是我的自定义函数:

function elixirCDN($file)
{
    $cdn = '';

    if(config('system.cdn_url'))
    {
        $cdn = config('system.cdn_url');
    }

    return $cdn . elixir($file);
}
Run Code Online (Sandbox Code Playgroud)

它基本上在文件名前面加上 CDN url,所以一切正常。

当我使用动态导入时,问题就开始了,如下所示:

const Home = () => import("./Home")
Run Code Online (Sandbox Code Playgroud)

理想的情况是它还加载 CDN:

https://mycdn.com/public/js/1.js

但事实并非如此,它加载了相对路径和我的基本域:

https://mybasedomain.com/public/js/1.js

显然,因为它是动态的。我怎样才能让我的块也从 CDN 加载?

我尝试将其设置publicPath为我的 …

javascript laravel webpack vue.js laravel-mix

7
推荐指数
1
解决办法
2350
查看次数

标签 统计

javascript ×1

laravel ×1

laravel-mix ×1

vue.js ×1

webpack ×1