用 Blade 组件替换 Vue 组件,是不是完全有可能?

Posted

技术标签:

【中文标题】用 Blade 组件替换 Vue 组件,是不是完全有可能?【英文标题】:Replacing Vue Components with Blade Components, Is is fully possible?用 Blade 组件替换 Vue 组件,是否完全有可能? 【发布时间】:2020-12-28 20:11:20 【问题描述】:

我计划用刀片组件和刀片视图完全替换带有 Vue 前端的 Laravel 应用程序,但我有一个简单的问题。现在的问题是,虽然我可以使用 Vue 或其他一些 javascript 框架实现的大部分功能都可以使用刀片来完成,但是,在不使用任何其他 js 框架或编写香草js。还是这是唯一可能的方法?或者我是否需要使用带有或不带有 balde 组件的 vue js 来实现这些事件处理或使 ui 反应。如果解决方案是使用 vanilla js,那么正确的方法是什么?

例如,正如 vue 文档中所写,菜单按钮可以很容易地使用如下方式处理:

<div id="example-3">
  <button v-on:click="say('hi')">Say hi</button>
  <button v-on:click="say('what')">Say what</button>
</div>
new Vue(
  el: '#example-3',
  methods: 
    say: function (message) 
      alert(message)
    
  
)

最大的问题是blade组件可以单独替代vue js组件吗?

【问题讨论】:

您将需要一些 JavaScript(框架、库或 vanilla 等)来提供交互式页面。 Blade/html 无法单独完成。 看看livewire它通过渲染部分提供刀片内的反应性。要更深入,我建议您查看TALL stack 【参考方案1】:

Vue 在前端提供响应性,无需刷新页面或用来自 AJAX 请求的响应替换 DOM 段。

Blade 不能一对一替换Vue

Blade 视为一个纯粹的服务器端 php 工具,可帮助您构建和呈现 HTML 文档。

另一方面,Vue 是一个 JavaScript 框架,用于帮助构建客户端应用程序。


TL/DR - Blade 不等于 Vue。您选择的应该取决于用例。

静态内容,使用Blade。反应式内容,使用Vue

【讨论】:

以上是关于用 Blade 组件替换 Vue 组件,是不是完全有可能?的主要内容,如果未能解决你的问题,请参考以下文章

像 Vue 组件一样使用 Blade 中作用域的 SCSS

Laravel 如何在blade文件中使用Vue组件

Laravel 如何在blade文件中使用Vue组件

Laravel 和 Vue 在 Blade 中从组件 1 向组件 2 发送数据

将数据从 Blade 模板传递到 Vue 组件 [重复]

如何将数组从 Laravel Blade 传递到 Laravel 6/Vue 2.6 中的 Vue 组件。*