You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Vue.js 3项目中正确加载JavaScript文件?

Laravel + Vue.js 项目中引入JavaScript文件的最佳实践

你当前用动态创建script标签的方案偶尔失效,核心问题在于依赖顺序不可控、加载时机与DOM生命周期不匹配,以下是几种更可靠的方案:

方案一:使用Vite静态导入(官方推荐)

Laravel默认用Vite作为构建工具,直接在项目入口JS文件(比如resources/js/app.js)中导入脚本,Vite会自动处理依赖顺序、打包优化,完全避免加载失效问题:

  1. 第三方库优先用npm安装:
npm install jquery select2 moment slick-carousel

然后在app.js中导入并挂载全局(如果需要全局调用):

import $ from 'jquery';
import 'select2';
import moment from 'moment';
import 'slick-carousel';

window.$ = window.jQuery = $;
window.moment = moment;
  1. 本地自定义脚本直接导入路径:
import '../assets/frontend/slick-custom.js';
import '../assets/frontend/main.js';

最后通过npm run dev或npm run build编译,Blade模板中用@vite('resources/js/app.js')引入编译后的资源即可。

方案二:在Blade模板中直接顺序引入

如果不需要打包(比如静态第三方资源),可以直接在Blade模板里按依赖顺序用asset()函数引入,确保依赖脚本先加载:

<!-- 建议放在页面底部,避免阻塞DOM渲染 -->
<div id="app"></div>

<script src="{{ asset('assets/frontend/vendor/jquery/jquery-3.2.1.min.js') }}"></script>
<script src="{{ asset('assets/frontend/vendor/bootstrap/js/popper.js') }}"></script>
<script src="{{ asset('assets/frontend/vendor/bootstrap/js/bootstrap.min.js') }}"></script>
<script src="{{ asset('assets/frontend/vendor/select2/select2.min.js') }}"></script>
<!-- 按依赖顺序引入剩余脚本 -->
<script src="{{ asset('assets/frontend/main.js') }}"></script>

@vite('resources/js/app.js')

方案三:按需动态导入(适合组件级加载)

如果某些脚本只在特定Vue组件中使用,用Vite的动态导入实现按需加载,同时严格保证依赖顺序:

// 在Vue组件的methods或setup函数中
async loadRequiredScripts() {
  // 先加载核心依赖
  await import('/assets/frontend/vendor/jquery/jquery-3.2.1.min.js');
  // 再加载依赖核心的插件
  await import('/assets/frontend/vendor/select2/select2.min.js');
  // 最后加载自定义业务脚本
  await import('/assets/frontend/slick-custom.js');
  
  // 脚本加载完成后执行初始化逻辑
  $('.select2').select2();
}

原方案失效的原因

你设置async=false试图保证顺序,但脚本插入时机可能早于目标DOM元素(#scripts)挂载完成,或者网络波动导致某条脚本加载失败,后续脚本会因依赖缺失无法执行。此外,手动拼接URL容易出错,asset()或Vite的路径处理更可靠。

内容的提问来源于stack exchange,提问作者Ricky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:37:25