
本文详细介绍了在Laravel应用,特别是Nwidart模块中,如何正确使用Vite加载JavaScript和CSS资源。针对直接链接导致404错误的问题,教程阐明了Vite的工作原理,并提供了通过`@vite` Blade指令引用模块内资源的正确方法,确保开发流程顺畅,避免资源加载失败。
理解Laravel与Vite的资产管理
在现代Laravel项目中,Vite已成为主流的资产打包工具,取代了传统的Laravel Mix。Vite通过其开发服务器提供极速的模块热更新(HMR),并在生产环境中生成优化的静态资产。然而,这种工作方式意味着传统的直接通过或asset()辅助函数引用资产的方式,在Vite开发模式下可能无法正确解析,尤其是在Laravel模块化结构中,因为Vite需要知道其入口点(entry points)才能正确地服务和打包这些文件。
当在Blade模板中直接引用Vite处理的资源时,例如http://127.0.0.1:8000/js/app.js,浏览器会尝试从Web服务器请求该路径。如果Vite开发服务器没有运行,或者Vite配置中没有正确指定该入口点,或者路径与Vite的实际输出不匹配,就会导致404 (Not Found)错误。
正确加载Vite处理的JavaScript和CSS
为了在Laravel Blade模板中正确加载由Vite处理的JavaScript和CSS文件,Laravel提供了一个专用的Blade指令:@vite。这个指令能够与Vite开发服务器或生产环境打包后的清单文件(manifest file)无缝协作,自动生成正确的资源链接。
1. 配置Vite入口点
首先,确保你的vite.config.js文件正确配置了所有需要由Vite处理的入口点。对于Nwidart模块中的资源,路径应相对于项目根目录,并指向模块内部的实际文件。
例如,对于一个位于Modules/Auth/Resources/assets/js/app.js的JavaScript文件和一个位于Modules/Auth/Resources/css/app.css的CSS文件,vite.config.js应配置如下:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
input: [
'Modules/Auth/Resources/css/app.css',
'Modules/Auth/Resources/assets/js/app.js'
],
refresh: true,
}),
],
});在上述配置中,input数组明确告诉Vite哪些文件是它的入口点。Vite会根据这些入口点来构建其依赖图。
2. 在Blade模板中使用@vite指令
一旦vite.config.js配置完成,你就可以在Blade模板中使用@vite指令来引用这些资源。@vite指令接受一个字符串或一个数组作为参数,参数值应与vite.config.js中input数组里的路径完全匹配。
MoMoCMS是以php+MySQL进行开发的企业建站系统。在MoMoCMS(默默企业建站系统)中,前端只有2个页面,分别为首页和内页。而其他产品、列表、新闻页面全部由后台生成。只需在内页上分别加载不同的功能模块即可。MoMoCMS企业建站系统 v5.8 更新部分创建/更新页面时指导性的选择方案
加载单个JavaScript文件:
如果你只需要加载模块内的app.js文件,可以在Blade模板(例如Modules/Auth/Resources/views/layouts/app.blade.php)中这样使用:
@vite('Modules/Auth/Resources/assets/js/app.js')
同时加载多个JavaScript和CSS文件:
如果你需要同时加载模块内的CSS文件和JavaScript文件,可以将它们作为数组传递给@vite指令:
应用标题
@vite(['Modules/Auth/Resources/css/app.css', 'Modules/Auth/Resources/assets/js/app.js'])
使用@vite指令后,Laravel会根据当前环境(开发模式或生产模式)自动生成正确的
注意事项与最佳实践
- 路径匹配: 传递给@vite指令的路径必须与vite.config.js中input数组里的路径精确匹配。任何微小的差异都可能导致资源加载失败。
- Vite开发服务器: 在开发环境中,务必运行Vite开发服务器(通常通过npm run dev命令),以便@vite指令能够找到并加载资源。
- 生产环境构建: 在部署到生产环境之前,务必运行npm run build命令来生成Vite的生产优化版本资产和manifest.json文件。否则,@vite指令将无法找到打包后的文件。
- 模块化路径: 对于Nwidart等模块化结构,始终使用相对于项目根目录的完整路径来引用模块内的资源,例如Modules/Auth/Resources/assets/js/app.js。
- 避免混合引用: 尽量避免在同一个项目中混合使用Vite和传统的asset()函数来处理相同的资源类型,这可能导致混乱和不一致。
- 文档查阅: 如果遇到问题,请查阅Laravel官方Vite文档,它提供了最权威和最新的指导。
总结
通过遵循上述步骤,特别是在Blade模板中正确使用@vite指令,并确保vite.config.js配置准确无误,可以有效地在Laravel应用,包括Nwidart模块中,加载和管理由Vite处理的JavaScript和CSS资源,从而避免常见的404错误,并充分利用Vite带来的开发效率优势。









