В чем разница между папками представлений и компонентов в проекте Vue?

129

Я просто использовал командную строку ( CLI) для инициализации проекта Vue.js. CLIСоздал src/componentsи src/viewsпапку.

Прошло несколько месяцев с тех пор, как я работал с проектом Vue, и структура папок кажется мне новой.

В чем разница между viewsи componentsпапками в проекте Вьет генерируемый vue-cli?

drsnark
источник
4
Я не думаю, что они разные в том смысле, что оба представляют собой однофайловые компоненты представления. Но просмотры ваших страниц (Home.vue, About.vue, Checkout.vue) можно хранить отдельно от ваших компонентов (Button.vue, LoadingSpinner.vue и т. Д.)
Джефф,
Это проливает свет на различия в структуре: blog.pusher.com/new-vue-cli-simplify-development
Connexo
10
@ Джефф, ты политик, если нет. Вы просто повторили вопрос Ops, но сумели сделать его похожим на ответ. РЖУНИМАГУ.
PrestonDocks

Ответы:

178

Прежде всего, обе папки, src/componentsи src/views, содержат компоненты Vue.

Ключевое отличие состоит в том, что некоторые компоненты Vue действуют как представления для маршрутизации.

При работе с маршрутизацией во Vue, обычно с Vue Router , маршруты определяются для переключения текущего представления, используемого в <router-view>компоненте. Эти маршруты обычно расположены в src/router/routes.js, где мы можем увидеть что-то вроде этого:

import Home from '@/views/Home.vue'
import About from '@/views/About.vue'

export default [
  {
    path: '/',
    name: 'home',
    component: Home,
  },
  {
    path: '/about',
    name: 'about',
    component: About,
  },
]

Компоненты, расположенные ниже src/components, с меньшей вероятностью будут использоваться в маршруте, тогда как компоненты, расположенные ниже, src/viewsбудут использоваться по крайней мере в одном маршруте.


Vue CLI стремится стать стандартным базовым набором инструментов для экосистемы Vue. Он обеспечивает бесперебойную работу различных инструментов сборки с разумными настройками по умолчанию, поэтому вы можете сосредоточиться на написании своего приложения, а не тратить дни на споры с конфигурациями. В то же время он по-прежнему предлагает гибкость для настройки конфигурации каждого инструмента без необходимости извлечения.

Vue CLI нацелен на быструю разработку Vue.js, он упрощает работу и предлагает гибкость. Его цель - дать возможность командам разного уровня подготовки создать новый проект и начать работу.

В конце концов, это вопрос удобства и структуры приложения .

  • Некоторые люди хотели бы иметь свои взгляды папки под src/routerкак это предприятием шаблонное.
  • Некоторые люди называют это страницами вместо просмотров .
  • У некоторых все компоненты находятся в одной папке.

Выберите структуру приложения, которая лучше всего подходит для проекта, над которым вы работаете.

Рики
источник
6
Это на 100% верно. Вы можете структурировать свое приложение любым удобным для вас способом. Я лично использую src / pages для всех маршрутов. В этой папке я создам подпапку для каждой «области» сайта. Пример "src / pages / questions" и в этой папке у меня будет index.vue, в котором будет список вопросов. У меня будет add.vue, который будет страницей для добавления вопросов и т.д. Эти «страницы» обычно просто собирают необходимые компоненты для создания «страницы». В моей папке «src / components» я буду создавать подпапки для таких вещей, как навигация, элементы формы, настраиваемые общие компоненты и т. Д.
Тим Викстром,
Я предполагаю, что такие компоненты, как всплывающие / модальные окна, src/componentsследуют этому соглашению?
Саймон Тиль
@Ricky, могу ли я попросить вас взглянуть на вопрос Vue.JS, связанный с исходным кодом в github книги Anthone Gore «Full-Stack Vue.js 2 и Laravel 5» здесь: stackoverflow.com/questions/ 59245577 /… ? В частности, обратите внимание на EDIT: раздел OP
Istiaque Ahmed
Можно ли сказать, что компоненты внутри представлений представляют собой набор компонентов? Например, в моем представлении списка может быть несколько компонентов, и эти компоненты размещены / заключены внутри одного компонента в представлении?
Ааюш
20

Я думаю, это скорее условность. Что-то многоразовое можно хранить в папке src / components, что-то, что связано с маршрутизатором, может храниться в src / views

Ravi
источник
7

Обычно повторно используемые представления рекомендуется размещать в src/componentsкаталоге. Примеры, такие как верхний колонтитул, нижний колонтитул, реклама, сетки или любые настраиваемые элементы управления, любят стилизованные текстовые поля или кнопки. Внутри представления можно получить доступ к одному или нескольким компонентам.

Представление может иметь компонент (ы), и представление фактически предназначено для доступа по URL-адресу навигации. Обычно они размещаются в src/views.

Помните, что вы не ограничены доступом к компонентам через URL-адрес. Вы можете добавить любой компонент router.jsи получить к нему доступ. Но если вы собираетесь это сделать, вы можете переместить его в, src/viewsа не вставлять src/components.

Компоненты - это элементы управления пользователя по аналогии с веб-формами asp.net.

Речь идет только о структурировании вашего кода для лучшего обслуживания и удобочитаемости.

navule
источник
1

Обе папки в основном одинаковы, поскольку они содержат компоненты, но эстетика Vue заключается в том, что компоненты, которые будут функционировать как страницы (перенаправленные на понравившуюся страницу для навигации), хранятся в /viewsпапке, в то время как повторно используемые компоненты, такие как поля формы, хранятся в /componentsпапке. ,

Чинеду Чаз
источник