【发布时间】:2018-06-17 10:55:12
【问题描述】:
我有一个旧的 .NET MVC 项目,其中的视图是用 HTML、引导程序和 jQuery 构建的。我即将用 Vue.JS 替换 jQuery,但我不确定最好的方法。
所有视图彼此都非常不同,可重用组件的想法不会有用,因为没有 HTML 或在不同视图中使用的函数。
我认为最好的方法是保持 HTML 不变,而不是在组件内的模板中拆分它,我会在需要 Vue 的 HTML 的不同块上初始化 Vue 实例。
例如,我有一个包含 3 个表的视图,其中一个表可以通过 2 个模态进行修改。
<div>
<div id=table1></div>
<div id=table2></div>
<div id=table3></div>
<div id=modal1></div>
<div id=modal2></div>
</div>
对于这个视图,我将为 table3、modal1 和 modal2 初始化新的 Vue 实例。对于数据和状态,我将使用共享存储:https://vuejs.org/v2/guide/state-management.html
这对我来说似乎是一个很好且简单的解决方案,但我也读到这是非常糟糕的做法,所以我仍然不确定。
这种解决方案是不好的做法吗?
【问题讨论】:
-
Vue 并不像 jQuery 那样在现有的 HTML 上工作。它是数据驱动的,这意味着在大多数情况下,数据应该决定生成的 HTML。如果您打算采取简单地保持 HTML“原样”的路线,并且只想将 Vue 应用到它,那么您可能会遇到一个非常糟糕的时期。
-
@Stephan-v 不是真的“原样”,我所有的表、选择等都将由带有 v-for 和 v-bind 等的数据生成。我要问的是它是否是不好的做法是在 HTML 中有一个带有 v-for 和 v-bind 的大型 HTML 块,然后在这个 HTML 块的不同部分实例化多个 Vue 实例。
-
即使在这种情况下您可能不会重用某些组件,但最好将其放入组件中以获得更好的项目结构,尤其是在您使用共享存储/vuex 方法时。话虽如此,如果不深入研究项目,很难为这样一个极其广泛的问题提供建议。