33. Зачем нужна местная регистрация?
Благодаря глобальной регистрации, даже если вы не используете компонент, он все равно может быть включен в вашу окончательную сборку. Таким образом, это создаст ненужный javascript в приложении. Этого можно избежать, используя локальную регистрацию, выполнив следующие действия:
i. Сначала вам нужно определить свои компоненты как простые объекты JavaScript.
var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }
Локально зарегистрированные компоненты не будут доступны в подкомпонентах. В этом случае вам необходимо добавить их в раздел компонентов.
var ComponentA = { /* ... */ }
var ComponentB = {
components: {
'component-a': ComponentA
},
// ...
}
ii.Вы можете использовать компоненты в разделе компонентов экземпляра vue,
new Vue({
el: '#app',
components: {
'component-a': ComponentA,
'component-b': ComponentB
}
})
34. В чем разница между локальной и глобальной регистрацией в модульной системе?
При локальной регистрации вам необходимо создать каждый компонент в папке компонентов (необязательно, но рекомендуется) и импортировать их в другой раздел компонентов файла компонента.
Допустим, вы хотите зарегистрировать компоненты A и B в компоненте C, конфигурация выглядит так, как показано ниже,
import ComponentA from './ComponentA'
import ComponentB from './ComponentC'
export default {
components: {
ComponentA,
ComponentB
},
// ...
}
Теперь и ComponentA, и ComponentB можно использовать внутри шаблона ComponentC.
При глобальной регистрации вам необходимо экспортировать все общие или базовые компоненты в отдельный файл. Но некоторые популярные бандлеры, такие как webpack, упрощают этот процесс, используя require.context для глобальной регистрации базовых компонентов в приведенном ниже файле записи (единовременно).
import Vue from 'vue'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'
const requireComponent = require.context(
// Относительный путь к папке компонентов
'./components',
//Нужно ли смотреть в подпапки
false,
// Регулярное выражение, используемое для сопоставления имен файлов базовых компонентов
/Base[A-Z]\w+\.(vue|js)$/
)
requireComponent.keys().forEach(fileName => {
// Получить конфигурацию компонента
const componentConfig = requireComponent(fileName)
// Получить имя компонента PascalCase
const componentName = upperFirst(
camelCase(
// Удалите начальный `. /` И расширение из имени файла
fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
)
)
//Зарегистрировать компонент глобально
Vue.component(
componentName,
//Ищите параметры компонента в `.default`, которые будут
// существовать, если компонент был экспортирован с помощью `export default`,
// в противном случае вернитесь к корню модуля.
componentConfig.default || componentConfig
)
})
Do'stlaringiz bilan baham: |