扫一扫分享
Livevue 是一个让你在 Phoenix LiveView 页面里直接使用 Vue 组件的库,实现端到端响应式协作。
LiveVue的正式发布,标志着 Phoenix LiveView 与 Vue.js 生态的深度融合。该版本允许开发者在 LiveView 页面中直接集成 Vue 组件,实现端到端的响应式协作,提升动态交互体验。通过无缝通信机制,LiveVue 在保持 LiveView 服务端响应式架构的同时,赋予前端更灵活的组件化能力,显著增强用户界面的构建自由度。这一创新为全栈开发者提供了高效、可维护的混合技术方案,适用于需要高实时性与丰富交互的应用场景。
顺带提一下 Phoenix LiveView:它是一种“后端实时 UI 框架”。不需要写前端状态管理和 api,就能做出像 SPA 一样的实时网页。
LiveView 用 WebSocket 长连接 + dom diff,把服务器状态实时同步到浏览器,浏览器只负责渲染。LiveVue 就是在这个基础上,让 Vue 与 LiveView 协同工作。
整个流程依然跑在 LiveView 的单条 Socket 上,无需手写复杂 Hook。
新建 Phoenix 1.8+ 项目:
mix archive.install hex igniter_new
mix igniter.new my_app --with phx.new --install live_vue
已有项目中安装:
mix igniter.install live_vue
安装完成后,自动配置 Vue、Vite、LiveVue Hook。
LiveView 模板挂载 Vue 组件:
def render(assigns) do
~H"""
<.vue
v-component="Counter"
v-socket={@socket}
count={@count}
/>
"""
end
对应 Vue 组件(Counter.vue):
<script setup>
const props = defineProps<{ count: number }>()
</script>
<template>
<p>当前计数:{{ props.count }}</p>
<button phx-click="inc">+1</button>
</template>这样,Vue 管理交互和 UI,LiveView 管理状态和事件,无需额外 API。
仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!
手机扫一扫预览