Basset 是一种加载 CSS 和 JS 资产的替代方法

上次更新于 作者

Basset is an alternative way to load CSS & JS assets image

现在是 2024 年,我要说 - 服务器端渲染正式回归

  • 在 Laravel 中,Livewire 现在每天有 46.000 次安装
  • 在 Ruby on Rails 中使用 Hotwire
  • 在 Phoenix 中使用 Liveview
  • 在 Web 开发领域中,使用 HTMX

现在“旧的已经成为新的”... 也许是时候重新审视我们从 Javascript 生态系统中采用的另一种做法了。也许是时候... 放弃构建步骤了?我明白,这听起来很疯狂!但在我关注的领域里,人们一直在谈论关于无构建的 Laravel 设置。并且人们始终在一个地方卡住 - “如果我们放弃 NPM,我们该如何处理 JS 依赖项?”。这是我的答案 - 或者至少是重要的第一步。

如果我们不使用像 NPM 这样的包管理器来安装 JS 依赖项并捆绑它们... 我们直接从 URL 加载它们怎么样? 你知道... 类似于 NodeJS 创始人自己在 Deno 中的做法。他公开表示 NPM 已经变得一团糟,并为 JS 生态系统创建了一个替代方案... 为什么我们不能为 Laravel 生态系统做同样的事情呢?

如果你梦想着那些简单的日子,你只需要使用 asset() 加载资产,那么试试 Basset - Laravel 的更好的资产助手 你只需要用 basset() 替换 asset() 就能获得一些超级能力

  • 来自 CDN 的资产会被下载到 /storage 并从那里提供服务;
  • 供应商资产可以被加载;
  • 非公共资产可以被加载;
  • 在请求期间,不可能重复加载资产;

简而言之,basset() 消除了 asset() 的限制,允许你安全地加载任何你想要的资产。这意味着除了以下操作之外

<link href="{{ asset('path/to/public/file.css') }}">

你可以安全地执行以下操作

<script src="{{ basset(storage_path('file.js')) }}">
<script src="{{ basset(base_path('vendor/org/package/assets/file.js')) }}">
<script src="{{ basset('https://cdn.com/path/to/file.js') }}">

这是一个非常简单的解决方案,适用于那些希望在他们的 Laravel 项目中“以旧的简单方式”加载资产的人,因为它解决了一些“旧方式”的问题

  • 不想遇到 GDPR 问题?
    • ✅ 已解决 - Basset 会将资产缓存到 /storage 并从那里提供服务。
  • 不想依赖 CDN 的正常运行?
    • ✅ 已解决 - 资产可以在部署时(或提交时)进行缓存。
  • 不想在页面上使用多个组件时,两次加载同一个资产?
    • ✅ 自动解决。
  • 担心加载多个 JS 文件的性能是否优于单个大型捆绑包?

当然,Basset 可能不是完美的资产加载解决方案。至少不是对每个项目来说。它只存在了 12 个月,所以它缺少 importmaps 之类的东西,无法成为 NPM 和 Deno 方式的 1 对 1 替代方案。但它确实存在了 12 个月,并且已经证明了它的实用性。

也许... 是时候重新审视一下我们如何在 Laravel 项目中加载资产了。也许我们会发现简单的方法... 是一个好方法。至少对于一些项目来说。我建议你 试一下 Basset。毕竟

  • 它已经投入生产一年了;
  • 它由 Backpack 团队维护;
  • 它已经获得了 110.000 次下载;
  • 它采用 MIT 许可证;

如果你有任何反馈,请 在 Github 上提一个问题,并告诉团队。v2 很快就要发布,我们希望尽可能多地吸取反馈意见。

Cristian Tabacitu photo

Backpack for Laravel 的创建者

归类于
Cube

Laravel 新闻稿

加入 40,000 多名其他开发者,永远不要错过新的提示、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发者的必备代码运行器。使用 AI、自动完成和本地和生产环境中的即时反馈进行调试。

Tinkerwell
No Compromises logo

绝不妥协

Joel 和 Aaron,两位来自 No Compromises 播客的经验丰富的开发者,现在可以为您在 Laravel 项目中提供服务。 ⬧ 固定费率 7500 美元/月。 ⬧ 无需漫长的销售流程。 ⬧ 无需合同。 ⬧ 100% 退款保证。

绝不妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,以确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行的是旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

每月只需 2500 美元,即可为您的项目配备经验丰富的 Laravel 开发者,拥有 4-6 年的经验。获得 160 小时的专业知识和 15 天免费试用。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

立即获取幸运 - 拥有十年以上经验,是 Laravel 开发的理想选择!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源软件包,将现代无头电子商务功能的力量带到 Laravel。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动套件

SaaSykit 是一个 Laravel SaaS 启动套件,它包含运行现代 SaaS 所需的所有功能。支付、漂亮结账、管理面板、用户仪表板、身份验证、预先准备的组件、统计、博客、文档等等。

SaaSykit: Laravel SaaS 启动套件
Rector logo

Rector

您无缝 Laravel 升级、降低成本和加快创新以帮助企业取得成功的合作伙伴

Rector
MongoDB logo

MongoDB

通过强大的 MongoDB 和 Laravel 集成来增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解灵活、现代的 MongoDB 数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的无依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的站点搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 软件包在您的 Laravel 应用程序中添加评论

阅读文章