gpt4 book ai didi

javascript - 文件中的 Laravel javascript 不起作用,但如果通过 CDN 包含则可以

转载 作者:行者123 更新时间:2023-12-04 00:08:07 24 4
gpt4 key购买 nike

这个有效:

<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script>

<script type="text/javascript">
var textWrapper = document.querySelector('.ml6 .letters');
textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>");

anime.timeline({loop: false})
.add({
targets: '.ml6 .letter',
translateY: ["1.1em", 0],
translateZ: 0,
duration: 750,
delay: (el, i) => 50 * i
});
</script>

但如果我在 libraries.js 中包含来自 CDN 的确切 JS,如下所示,我会得到 ReferenceError: Can't find variable: anime

<script src="{{ mix('/js/libraries.js') }}"></script>

<script type="text/javascript">
var textWrapper = document.querySelector('.ml6 .letters');
textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>");

anime.timeline({loop: false})
.add({
targets: '.ml6 .letter',
translateY: ["1.1em", 0],
translateZ: 0,
duration: 750,
delay: (el, i) => 50 * i
});
</script>

我检查了一下,mix 正在正常编译,JS 包含在 libraries.js 中。

这是完全相同的脚本,包含在完全相同的位置,所以我很困惑为什么它不起作用。我唯一能想到的是 libraries.js 在脚本运行后 加载。是这样吗?如果是这样:我该如何解决?

我经常遇到这个问题。我想使用 mix() 而不是 asset()。上面是大约 1 个库,但我更愿意将我使用的大部分库包含在一个文件 libraries.js 中,但今天我通过 CDN 加载其中的大部分,因为上述问题。

最佳答案

我假设你有一个文件 resources/js/libraries.js 和一堆 require(); 导入 npm包和另一个 JS 文件来导入自定义代码?好吧,我想提出一些建议:

你不必为它们制作一个单独的 JS 文件,webpack 可以像这样自动提取它们:

mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.extract([
'bootstrap',
'popper.js',
'lodash',
'axios',
'jquery',
'vue',
]);

mix.version();

然后将它放在布局的底部:

<script src="{{ mix('js/manifest.js') }}"></script>
<script src="{{ mix('js/vendor.js') }}"></script>
<script src="{{ mix('js/app.js') }}"></script>
@stack('scripts')

vendor.js 基本上是您的 libraries.jsapp.js 是您的自定义代码。

当你mix.version()时:如果你的自定义代码改变了,你npm run prod,只有app.js会改变(这是一个小的 JS 文件)和 vendor.js(这是一个大文件)将保持完全相同。这是一个巨大的优势,因为老用户只需加载小的 app.jsvendor.js 仍将被缓存,从而使加载速度更快。


但要回答你的问题,它不会选择变量名 anime,所以在你的 JS 文件中像这样导入它以被识别:

window.anime = require('animejs');

关于javascript - 文件中的 Laravel javascript 不起作用,但如果通过 CDN 包含则可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59467851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com