问题:同一页面上的多个 Vue 实例使用相同的代码库

我正在努力将 Vue.js 的功能引入 WordPress 生态系统,我的第一个项目是在页面上进行搜索和过滤。

因为主要网站最初是由 WordPress 使用 PHP/HTML 呈现的,所以我在附加到我使用 WordPress 输出的 HTML 元素的页面上初始化了 Vue。这一切都很好,但现在我试图通过拥有相同代码库的多个实例(可以一起工作)来更进一步

以这个示例截图为例(假设这是一个 WordPress 网站):多个vue实例

因为整个输出不是在 Vue.js 中完成的,所以我必须从 WordPress 端输出多个 HTML DIV 元素,并在它们上初始化 Vue。

因为表单/字段将根据用户配置/设置动态生成,所以两个实例都将使用相同的代码库......但我需要以某种方式使其能够协同工作,也就是说,更新结果在任何情况下,在页面上选择或更改值时。

这里的想法是在我的主 JS 文件中使用 vanilla javascript 来检测页面上存在的所有特定 HTML 元素(甚至可能为数据对象中的每个元素定义一个 slug),然后执行一个 foreach 循环然后初始化一个new Vue()在每个实例上。

我的第一个想法是使用 Vuex 存储,将单个存储附加到所有实例,存储任何选定的值,并在其中任何一个更改时触发调度以更新列表。

以前有人做过类似的事情吗?这样做有什么我应该厌倦的吗?或者有人对如何做到这一点有更好的建议吗?

认为我最好在这里提问,而不是通过艰苦的学习,然后发现它可能是不可能的,或者这样做会有问题。

非常感谢任何建议、评论、批评或想法

更新 有一个建议是将 Vue 实例绑定到主体,删除render函数,然后在需要的地方输出组件 HTML 元素(而不是输出 div 然后附加到它)。打算对此进行测试,但对围绕此的想法感到好奇?

解答

对于遇到这种情况的任何人,我最终只是像这样初始化 Vue 实例:

const sections = document.getElementsByClassName( "my-wrapper" )

for ( var i = 0; i < sections.length; i ++ ) {
    new Vue( {
         el: '#' + sections[ i ].id,
         store
     })
}

基本上在页面上找到的每个输出上初始化新的 Vue 实例,将共享存储传递给每个输出。

# vue.js
Logo
Vue

前往低代码交流专区

更多推荐

  • · 带有浮动 Vue 和 Tailwind 的 Vue 下拉菜单
  • · 赵文卓100001 the zh I晦platform
  • · 播客 | Fathym 关于 Vue 的观点

带有浮动 Vue 和 Tailwind 的 Vue 下拉菜单

可用于在 Vue 应用程序中创建工具提示、弹出框和菜单的最流行的库之一是floating-vue。虽然floating-vue提供了一个Dropdown组件,但它的样式和添加其他功能(例如键盘导航)由用户决定。 我们将创建什么 我们将使用floating-vue的Dropdown组件作为基础,然后在顶部添加键盘功能。然后,我们将使用该组件使用 Tailwind 创建一个下拉菜单。 最终结果将类似于

赵文卓100001 the zh I晦platform

是学校的平台,可以发布数据等,更快更安全。 这里不是旗帜,因为我已经为这个平台制定了计划。不过,如你所知,我是初三的学生,马上就要参加中考了。所以我几乎没有空闲时间来开发这个。 作为我校学生会的主席,我在管理等方面有一些经验。我可以把这些exp放到这个平台上,这样平台可以帮助我们更多。 这个平台最大的特点就是_简单而强大_。 “简单”的意思是它可以使用最少的内存、时间来完成最多的任务。有时,我们可

播客 | Fathym 关于 Vue 的观点

在科罗拉多州,我们有许多美景。从山顶到山谷和中间的山丘。 谈到 Vue.js,Fathym 是 JavaScript 框架的粉丝。 我们的工程总监 Jeremy Tomlinson 和品牌传播代表 Rich Kurtzman 很高兴成为 8 月中旬 Vue 播客观点的一部分。 在采访中,主持人史蒂夫爱德华兹向我们的团队询问了很多事情,包括: Fathym 是谁以及我们做什么 使用 Azure 和/