Vuejs:我应该将视图拆分为小组件吗?

Vuejs: Should I split views into small components?

提问人:Michael 提问时间:11/11/2023 更新时间:11/15/2023 访问量:39

问:

我有一个项目,其中有 2 个组件文件夹 - 1) 和 2) 。在第一个中,我存储了抽屉或导航等常规组件,在第二个中,我存储了页面(视图)。src/components/src/views

问题: 我有一个组件,我得到了一个很长的 html,我在其中存储了部分 - “关于”、“流行”、“评论”等。 我应该将这个组件拆分为更多的迷你组件,还是保持原样?如果应该,我应该把它们放在哪个文件夹里?该文件夹用于 nav 等常规组件,所以我认为它不适合。src/views/ViewHomesrc/components/

我正在考虑一个解决方案: 创建一个文件夹,在那里放置一个,并在那里为这些部分创建一个组件文件夹。这合适吗?你的解决方案是什么?请帮忙。views/ViewHome/ViewHome.vueViewHome

HTML vue.js vuejs2 vuejs3 组件

评论

1赞 Estus Flask 11/11/2023
这个问题是主观的,所以不适合SO。如何调用文件夹由您决定。您可以查看现有的开源存储库以获取一些想法。“用于像 nav 这样的通用组件”——这是你的决定,这听起来不合理,因为顾名思义,这些只是组件,而不是通用组件。如果您需要一个用于通用组件的文件夹,它可以是 /components/common 或 /common/components 。“在那里创建一个组件文件夹” - 但这些不是视图。视图是一种特殊的组件,它依赖于用作 <router-view 的子组件>
0赞 Estus Flask 11/11/2023
你根本不需要 /views,尽管将它们分开可能更容易,尽管你始终可以按 View 后缀过滤它们。如果应用程序具有强大的基于功能的模块化结构,则可能有 /src/about/...并包含所有类型的文件
0赞 Michael 11/11/2023
@EstusFlask,如果我在一个团队中工作,我该如何工作,因为团队可能应该有一些关于如何构建项目的规则。这就是为什么我要求,在我被录用之前做好准备。
0赞 Michael 11/12/2023
@EstusFlask 哦,我明白了,谢谢。因此,我将只将视图保留在 src/views 中,然后对于通用组件,我将创建 src/components/common。但是,如果我在每个视图中都有多个部分,我认为最好在 src/components 中为每个视图的各个部分创建一个子文件夹,而不是将它们全部混合在一个 src/components 文件夹中。此外,为了维护项目,可能应该正确调用它们。例如,src/components/ViewHomeComponents?
1赞 Estus Flask 11/12/2023
因为这些“部分”只是通用组件,所以它们没有路由器视图所具有的额外行为,例如通过 props 接收路由参数、暴露路由器钩子等。从设计的角度来看,它们是在视图中使用还是在其他地方使用并不重要,您最终可能会以这种方式获得几乎所有属于视图的合成。同一组件可以在多个页面中使用,因此它可能属于 1 个功能,但属于多个页面。至于我,我保持我的视图合成精简,只包含页面布局和数据加载逻辑,内容被提取,也使测试更容易

答:

1赞 Rahul R 11/15/2023 #1

构建“ViewHome”中使用的组件的一个好方法是在名为“Home”的 src/views 目录中创建一个文件夹。

在这个“主页”文件夹中,您可以放置一个文件并将所有相关组件放在同一个目录中。 这是有道理的,因为这些组件主要计划在主页上使用。index.vue

因此,我建议采用这种方法以获得更好的组织。

评论

0赞 Michael 11/18/2023
感谢您的建议!我还认为最好将“Home”的这些部分保存在同一个 src/views 文件夹中,而不是放在 src/components/common 中,因为那里很难直观地找到。