Представьте, что вы написали довольно абстрактный компонент таблицы, предназначенный для использования на страницах индекса ресурса (например, /users
, /posts
...).
Компонент имеет только два основных свойства - resourceName
и массив resources
для отображения.Чтобы правильно отобразить таблицу, вы создали некую структуру данных конфигурации, которая привязана к определенному типу ресурса - идентифицируется resourceName
.Каждый тип ресурса связан с массивом объектов, которые представляют различные столбцы таблицы, какие свойства они отображают и, возможно, компоненты, которые будут использоваться для отображения значения, и какие свойства используются для предоставления значения компоненту.
{
users: [{
property: 'id',
label: 'ID'
},
{
property: 'created_at',
label: 'Time of registration',
component: 'datetime-showcase',
passPropertyAs: 'value'
}],
//...
}
Я вижу 3 подхода:
- Каталог в корне приложения, где данные находятся в файле js.Компонент таблицы обращается к данным через
import tableConfigs from '@/config/tables'
.Существует вычисляемое свойство, которое предоставляет данные как
columns() {
return tableConfigs[this.resourceName];
}
Данные хранятся в центральном модуле Vuex.Вычисленное свойство с получателем, принимающим имя ресурса, используется для получения конфигурации таблицы. Данные хранятся в нескольких модулях vuex - по одному для каждого типа ресурса, а вычисленное свойство используется для получения данных изсостояние соответствующего модуля.
Каким образом (с точки зрения удобства обслуживания и производительности) эти типы данных должны храниться для использования компонентом таблицы?У меня есть похожая ситуация, подходящая для других компонентов - например, та, которая обрабатывает сортировку индекса ресурса, где все, что действительно отличается между различными индексами, - это то, что может быть отсортировано и какие метки использовать.