# Быстрый старт с Vue.js

poster
В этом видео мы начнем разбираться с Vue.js. Vue - это javascript фреймворк для создания одностраничных приложений.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

В этом видео мы начнем разбираться с Vue.js. Vue - это javascript фреймворк для создания одностраничных приложений. То есть, можно сказать, что это аналог Angular либо React конечно же со своими плюсами и минусами. Я бы даже сказал, что шаблоны похожи очень сильно на первый ангуляр, а javascript логика на реакт или ембер. Также, core часть библиотеки в сжатом виде занимает 17kb. Конечно, это без роутера, хранилища состояния и других нужных частей, но даже с ними фреймворк достаточно легковесный.

Как мы можем начать использовать vue?

  1. Самый простой вариант, это подключить скрипт с vue с cdn к html странице
  2. Также можно установить с помощью npm пакета и потом собрать чем угодно, например с помощью webpack
  3. Также vue можно установить с помощью bower.
  4. Ну и самый нормальный вариант для небольших проектов, это Vue-cli.

Поэтому мы с вами и будем использовать Vue-cli. Он дает возможность в консоли развернуть новый проект с готовыми базовыми настройками. Если сравнивать с React, то это что-то, похожее на create-react-app.

Итак, для начала нам нужно глобально установить vue-cli. Для установки достаточно написать

npm install -g vue-cli

Если вы используете npm.

Для генерации нового проекта использующего webpack теперь достаточно написать

vue init webpack vue-test

При этом установщик спросит базовые вопросы насчет названий, хотите ли вы eslint и тесты. На все можно просто жать enter и no.

Ответив на все вопросы получаем сообщение, что проект был сгенерирован.

Теперь нужно установить все пакеты командой

npm install

После установки пакетов для запуска проект в девелопмент моде пишем

npm run dev

Для продакшена

npm run build

После запуска проекта получаем сообщение, что проект запущен на localhost:8080.

Наш базовый проект развернут, и готов к работе.

Итак давайте посмотрим на структуру нашего проекта.

В корне у нас лежит index.html. В нем находится div id="app", в который вставляется vue приложение. Все собраные файлы будут также вставлятся сюда автоматически.

В папке src у нас есть файл main.js, в котором инициализируется Vue приложение. Здесь мы импортируем vue из node_modules и App, который является основным компонентом приложения. Дальше мы создаем экземпляр класса Vue с нужными опциями. el - это DOM элемент, куда будет рендериться Vue. В template мы выводим наш компонент App и для того, чтобы он был доступен в шаблоне передаем его в components.

Теперь давайте посмотрим на App.vue. Все компоненты в vue имеют расширение .vue и состоят из трех частей: шаблона, скрипта и стилей.

Давайте сначала разберемся с скриптом. Внутри тега script мы импортируем HelloWorld компонент. Дальше мы экспортируем обьект, где указываем имя нашего компонента и в components передаем компонент Hello, так как мы используем его в шаблоне.

В стилях мы просто пишем стили, относящиеся к нашему компоненту.

Если мы посмотрим на компоненту HelloWorld, которая находится в components, то там такая же структура. Единственное отличие в том, что в обьекте, который мы возвращаем есть метод data, который возвращает обьект.

Data - это грубо говоря модель или состояние компонента. Например, в данном случае у нас в data есть поле message и оно нам сразу же доступно в шаблоне и мы его выводим.

Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.
Fedr Nekiforov
6 лет назад
Не будет ли платной серии по Vue?
monsterlessons
6 лет назад
Будет. По факту проект уже написан, осталось снять курс, но так как я уже месяц пытаюсь настроить камеру и свет, чтобы писать видео с камерой, то он задерживается.
Fedr Nekiforov
6 лет назад
Очень нужен) Запилите за пару дней)
monsterlessons
6 лет назад
За пару месяцев более реалистично))
Jivchik
8 лет назад
Большое спасибо за ваши уроки! очень подробно и понятно - с удовольствием просмотрел их по нескольку раз. Будет-ли продолжение серии по VUE? Очень интересно было бы посмотреть ваш урок по axios и конечно общему хранилищу vuex Спасибо!
monsterlessons
8 лет назад
На здоровье. В ближайшем времени новые видео не планируются.
Kos Key
8 лет назад
Подскажите разницу. в описании vue довольно часто можно увидеть new Vue({ data: { foo: 1 }, ... или вот такое: data() { return{ foo: 1 } }, ...
monsterlessons
8 лет назад
Первую запись можно использовать только при инициализации Vue, а вторую в всех компонентах. Первая запись в компонентах будет выбрасывать warning. По факту в 99% случаев используется вторая запись.
Moe Green
8 лет назад
мне интересно выражение - "... самым нормальным вариfнтом для небольших проектов считается vue-cli". почему - для небольших? что это означает? и еще - что за тема консоли zsh?
Moe Green
8 лет назад
заценим моего любимчика - vue.js ))
Alexandr Taldykin
8 лет назад
Подскажите как появилась строка <script type="text/javascript" src="/app.js"></script>? В каком файле прописывалось название файла app.js ?
monsterlessons
8 лет назад
Ни в каком. Это плагин для webpack, который на лету вставляет сбилдженый файл в index.html Делается это тут https://github.com/monsterlessons/quick-start-with-vue/blob/master/build/webpack.dev.conf.js new HtmlWebpackPlugin({ filename: 'index.html', template: 'index.html', inject: true }),
Valeriy Matvienko
8 лет назад
Плиз ставьте порядковые номера урока в названии, а то немного не понятно что в начале смотреть.
monsterlessons
8 лет назад
Я проставляю порядковые номера только в серии, когда уроки идут по-порядку. Когда уроки просто в категории, то это отдельные уроки по разным темам и они не обязательно упорядочены. Когда я сниму достаточно уроков по Vue, чтобы соединить их в серию, то создам ее, как, например, эту https://monsterlessons.com/project/series/funkcionalnyj-javascript-i-ramda
Aliaksandr Rumiantsau
9 лет назад
Ну на сегодняшний день найти материал по базовому vue довольно легко даже на русском языке. Много разрабов начинают рассматривать основы и заканчивают на этом свои серии, ютьюб уже кишит 'основами vue.js'. Я, конечно, понимаю если снова начинать курс с основ, то будет шире аудитория, но эта незанятая ниша более-менее продвинутого уровня так и остается огромной дырой и слабым местом русскоязычного сегмента.
monsterlessons
9 лет назад
Да, я абсолютно с этим согласен, но хотел бы, чтобы на моем сайте уроки были покрыты от начала до конца, так как люди часто пишут, что некоторые, даже несложные темы были им непонятны до моих видео. Надеюсь дойти до продвинутого уровня достаточно быстро))
Moe Green
8 лет назад
не знаю, сочтут ли это рекламой (тогда удалите), но на Udemy есть немец Max Schwarzmuller с отличным курсом по Vue.js. Я его покупал и по нем учился Vue.js. Там не база, там есть даже scope socket (кто ими пользуется?)
Moe Green
8 лет назад
ошибся - поправьте меня - я хотел сказать - Slot Scope в Vue.js
Алекс Бородулин
9 лет назад
Спасибо! Всё очень доходчиво!)
monsterlessons
9 лет назад
На здоровье)
Иван Древаль
9 лет назад
Я уже изучил базовый функционал и было бы интересно глянуть что посложнее, например vuex или серверный рендер. Огромное спасибо за обзор, мне лично vue нравится в разы больше реакта,
monsterlessons
9 лет назад
На здоровье. К сожалению, так как я выпускаю уроки только раз в неделю на данный момент, то до vuex и SSR я дойду еще не скоро))
Valerii Kuzivanov
9 лет назад
Привет! Да про nuxt.js хотелось бы послушать. А еще вопрос не по теме, курс по react.js(тот что был платный), теперь стал бесплатным или мне показалось?
monsterlessons
9 лет назад
Привет. Nuxt.js тоже есть в планах, но позже. Нет, тот курс так и остается платным либо вы нашли баг :D https://monsterlessons.com/project/series/internet-magazin-na-reactredux Вот этот платный курс
Rustam Apaev
9 лет назад
расскажи свое видение, когда его стоит изучать и использовать. Например, кто с реактом уже работает, есть ли ему смысл его пробовать и т.д.
monsterlessons
9 лет назад
Это просто технология. Кто работал с React или Angular 1 найдет похожие вещи в vue.js. Если рассматривать его как фреймворк, как плюс при поиске работы, то пока он не настолько популярен (и не факт что будет). Если вы выбираете на каком стеке писать проект, то React/Angular/Vue - это чистая вкусовщина. Можете попробовать Vue.js, это не займет у вас много времени. Я бы советовал использовать, если фреймворк нравится))
Valerii Kuzivanov
9 лет назад
Я сейчас пишу достаточно большое spa приложение на vue.js. По ощущениям всё нравится, возможностей хватает с лихвой. Из минусов бы выделил два момента. 1. Не очень хорошее качество библиотек по срвнению с AngularJS, но в реакте тоже самое большие библиотеки с тысячами звезд довольно такие крутые, а мелочь - шлак. 2. Еще не сформировались как таковые best practice. Та же структура приложения у каждого выглядит по своему. В a2-a5 с этим всё строже. Из плюсов, в сравнении с реактом это циклы и условия в шаблонах, аля ангуларжс. Удобней формы создавать и валидировать. Из css фреймворков посоветую выбирать между Vue-material/Element-UI
monsterlessons
9 лет назад
Best practices вряд ли будут, так как фреймворк не дает жесткой архитектуры, как Ember, например. Еще из плюсов в Vue отламывают и меняют API реже, чем в ng2-5. Если формы простые, то их в Vue создавать легко, но хороших решений для сложных форм как redux-forms, например, я пока не встречал на Vue, так что тут как раз ваш первый пункт абсолютно справедливый. Еще из плюсов модульный и нормальный css из коробки в котором можно из внешних компонентов переопределять стили.
Valerii Kuzivanov
9 лет назад
"и не факт что будет" - так с год назад говорили, а сейчас он уже второй после реакта по популярности. Западный рынок уже юзает его. Вот-вот должны подьехать проекты и в снг.
monsterlessons
9 лет назад
Я согласен с вами и надеюсь, что так и будет в дальнейшем. Но, имхо, на данный момент экосистема не настолько устоявшаяся, чтобы большие бизнес проекты делать на vue и быть уверенным, что найдешь любую нужную либу, а не прийдется писать самому.
Александр Агапов
9 лет назад
Большое спасибо за видео!
monsterlessons
9 лет назад
На здоровье)