Vue.Js Flashcards

1
Q

How to install Vue and create a Vue project from template?

A

In terminal write: npm install -g @vue/cli

Then to create a project: Vue create project name

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Which function inserts your component into your html?

A

import { createApp } from Vue

createApp(component name”).mount({html selector})

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

How to create a Vue.js component?

A
  1. Create it in your script as a JS object (rarely used and unintuitive)
  2. Single file component method - create a separate file with sections : template (html), script (JS), style (CSS), and export it from the file into your main script
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое интерполяция во Vue? Как её использовать?

A
Интерполяция Vue это использование переменных из data() компонента внутри верстки. Используется так:
У нас есть компонент, с script фрагментом, который выглядит так:
script
 export default {
     data(){
        return {
              variable : 0,
        }
      }
  }
script

Используем:
template
p what is the value? It’s {{ variable }}! p
template

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Каким образом можно добавить обработку нажатия кнопки внутри one file компонента Vue?

A

Создать функцию обработки нажатия в секции в методе компонента под названием methods script:

export default{
    data(){
        return {
          "variable" : 0;
        }
    }
   methods(){
       clickprocess(){
          this.variable++;
       }
   }
}

Добавить обработку в template:
button @v-on:click=”clickprocess” button

v-on: click лучше заменить на короткую версию: @click

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как можно легко дебажить vue приложение?

A

Скачать расширение Vue devtools (beta для третей версии Vue)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как реализовываться двухстороннее связывание? (Как связать например форму и переменную в компоненте?

A

С помощью v-bind:attribute и обработчика ввода

Template
    Form
        input type=text v-bind:value="variable" @input="processInput"
    Form
Template
export default{
    data(){
        return {
          "variable" : 0;
        }
    }
   methods(){
       process Input(input){
          this.variable = input.value
       }
   }
}

Process Input метод оптимизируется таким образом:
input type=text v-bind:value=”variable” @input=”variable = $event.target.value”

$event это зарезервированное во Vue значение

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

How to prevent a Vue form from submitting?

A

Form @submit.prevent

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как вставить один компонент Vue в другой?

Как передать ему данные?

A

Нужно импортировать в его секцию script, и зарегистрировать его в components поле экспорта:

script
import Component from “@/components/Component

export default {
    components:{
    Component, Component2
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Как передать данные в импортированный компонент?

A

Нужно использовать директиву v-bind, а внутри самого компонента использовать поле props в экспорте

Компонент родитель:
template
child :data=”parentVar”
template

Импортированный компонент
script
    export default {
        props: {
        data: {
            type: Array,
            required: true
        }    
    }    
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Можно ли изменять данные, переданные компоненту через props?

A

Нет

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как называется директива, заменяющая все типы двухстороннего связывания, включающая в себя событие (onclick например) и привязку v-bind?R

A

V-model = “variable”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как передать данные из импортированного компонента в компонента родителя?

A

Сгенерировать событие в компоненте ребенке с помощью emit, и подписаться на это событие в родителе

Пример:
Родитель -

template
child @create=”ProcessCreation” // список аргументов функции - данные, которые отсылает emit в ht,tyrt
template

Ребенок:
methods:{
    onclick(){
    this.$emit('create', this.data);
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как поместить что-либо вовнутрь импортированного компонента Vue?

A

В вёрстке дочернего компонента создать слот для элементов

template
   div
        slot slot
   div
template
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Как экспортировать сразу все компоненты и не включать их по одному?

A

Создать отдельный js файл, импортировать их туда, экспортировать обьект с этими всеми компонентами
В основном js файле массивом все зарегистрировать через функцию .component

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как обрабатывать данные в компоненте, который получает их через v-model?

A

Получить их в props (дефолтное имя переменной будет modelValue, но можно поставить v-model:variableName и в props компонента также поставить variableName) и повесить обработку события.

17
Q

Как обработать запрос на сервер при открытии страницы Vue?

A

Лучше всего будет обработать его в хуке жизненного цикла mounted()

18
Q

Как использовать функционал анимаций, встроенный во Vue?

A

Завернуть элементы, для которых нужна будет анимация в специальный элемент transition group (больше в документации)

19
Q

Как динамически добавить элементу класс или инлайн стиль?

A

используя специальный атрибут Vue “:class” (:style для стиля)

div :class=”{
‘className’: flag===true // условие
}”

20
Q

Как создать референс на DOM элемент компонента, для использования его в функциях жизненного цикла? Как получить к нему доступ?

A

Навесить ref с именем на элемент. Доступ получается через специальный обьект this.$refs.имя компонента

div ref=”element” div

mounted(){
console.log(this.$refs.element);
}

21
Q

Как создать постраничную навигацию во Vue?

A

Создать файл с названием router.js
В нем создать массив с объектами с полями path и component
Импортировать в него страницы компоненты vue
Создать обьект роутера с помощью функции createRouter

В основном скрипте подключить роутер

В темплейте главного компонента добавить тег router-view

router.js

import Main from “@/pages/Main” // страница, на которую будет перенаправлять
роутер
import {createRouter, createWebHistory} from “vue-router”
const routes = [
{ path:”\user”, component: Main},
{ path:”\nopage”, component: EmptyPage} // путь в адресной строке и имя используемого компонента
]

const router = createRouter(routes, history:createWebHistory(process.env.BASE_URL) // из документации

export default router

main. js
app. use(router).mount(верстка)

Main.vue
template
    div 
        router-view router-view
    div
template
22
Q

Как создать динамическую страничную навигацию?

A

В элементе вёрстки, который перенаправляет на другую страницу использовать функцию $router.push(‘добавляемый URL)
пример: div @click=”$router.push(“/page/${id}”)

А в routes роутера добавить путь {path:’/page/:id’, component: UserIDPage}

23
Q

Можно ли во Vue создавать пользовательские директивы?

A

Да, можно, подробнее в документации.
Их также нужно импортировать в main скрипт (как и общие компоненты), и затем подключать к приложению с помощью функции app.directive(имя директивы, директива)

24
Q

Как создать mixin во Vue?

A
Создать отдельный файл миксина, вставить в него нужный функционал
mixin.js
exportdefault{
   *свойства компонента* 
   //например data(){}
}

Вставить его можно, вставив в массив поля mixins его имя в экспорт компонента

Component.vue
export default{
mixins:[mixin]
}

25
Q

Как создать глобальные переменные с помощью глобального хранилища Vuex?

A

Вначале нужно создать хранилище с помощью функции из vuex “createStore”

store.js
import {createStore} from “vuex”

export default createStore({
state:{
likes:0}, // данные
getters:{
} // кешированные свойства, похожие на computed
mutations:{
addLike(){this.likes+=1}
} // функции, изменяющие данные
actions:{} // функции, использующие мутации
modules:{} // хранилище для кусочков состояния при увеличении масштабов приложения
})

Подключить его к приложению с помощью .use

import store
app.use(store)

Использование в компоненте:

h1 {{$store.state.likes}} h1 // $store - спец переменная для доступа к хранилищу

мутации:
button @click=”$store.commit(‘addLike’)

Можно упросить синтаксис, сделав импорт
import {mapState, mapGetters, mapActions, mapMutations} from ‘vuex’

и импорт в computed:{
…mapState({}),…mapGetters({})
}

теперь можно использовать все через this:
h1 {{this.likes}} h1

26
Q

Как можно улучшить декомпозицию, переместив нужные вещи в другие файлы?

A

Composition.api
Создаются файлы “хуки”, которые потом импортируются в компоненты

import ref from “vue”
пример хука: export function addLike2(){likes = ref(10) return likes++}
в функции можно писать функционал как ниже.
В хуке можно использовать методы жизненного цикла компонентов
Пример: onMounted(addLike2())//отработает при отрисофке компонента

Данные в хуки передаются через ref, и забираются через импорт ref

Пользоваться хуками можно через функцию setup(props){
    const likes = ref(0)
   function addLike({likes.value++})// value 
потому что обертка - передача по значению, а не по референсу
    const like= addLike2(likes)
} // все из функции setup будет доступно в компоненте