Убедитесь, что у вас установлены NodeJS и NPM и готовы к работе.
Создайте папку для вашего приложения Vue
mkdir myApp cd myApp
Инициализировать приложение
npm init -y
Установите Webpack и сделайте его зависимым от разработки. Webpack компилирует и собирает наше приложение в пакет, который позже можно развернуть в производственной среде.
npm install webpack --save-dev npm install webpack-cli --save-dev
Создайте две подпапки app и build.
mkdir app mkdir build
Webpack нужны инструкции о том, что ему нужно делать. Это делается путем создания файла конфигурации, специфичного для Webpack. Создайте файл webpack.config.js в корневой папке. Добавьте следующий фрагмент в webpack.config.js. Это сообщает webpack, что index.js является нашей точкой входа для приложения. Он также указывает имя и расположение пакета, который создаст Webpack.
Установите VueJS локально и сохраните его как зависимость времени выполнения
npm install vue --save
В пакете Vue существует множество различных реализаций Vue. Нам нужно указать Webpack, какую реализацию VueJS использовать. Измените webpack.config.js следующим образом.
const path = require('path'); const PATHS = { app: path.resolve(__dirname,'app'), build: path.resolve(__dirname,'build') }; module.exports = { entry: { app: PATHS.app + "/index.js" }, output: { path: PATHS.build, filename: 'bundle.js' }, resolve: { alias: { 'vue': 'vue/dist/vue.common.js' } } };
Создайте новый файл index.js в папке app и поместите в него следующий код
import Vue from 'vue'; new Vue({ el: '#app', data: { message: "Hello There" } });
Создайте новый файл index.html в папке build. Заполните файл следующим кодом.
<!doctype html> <html> <head> <title>My First Vue App </title> </head> <body> <div id="app"> <p>{{message}} </div> <script src="./bundle.js"></script> </body> </html>
Теперь, когда у нас есть файл JavaScript и файл html, теперь мы можем использовать Webpack для компиляции и сборки нашего приложения. Прежде чем использовать Webpack. Нам нужно сообщить NPM, что Webpack - это наш инструмент сборки. Это делается в файле package.json.
{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --progress --display-error-details" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "vue": "^2.3.3" }, "devDependencies": { "webpack": "^2.6.0" } }
Пришло время скомпилировать и собрать приложение.
npm run build
Вы должны увидеть новый файл bundle.js в папке build. Дважды щелкните index.html.
Вы создали свое первое приложение Vue. Однако это не устойчивый способ создания веб-приложений. Нам нужен способ обнаруживать изменения в нашем JavaScript и таблицах стилей, а также автоматически компилировать и создавать наше приложение. Это делается с помощью webpack-dev-server. Наряду со сборкой нашего приложения webpack-dev-server будет размещать наше приложение на своем внутреннем веб-сервере. Это очень удобно на этапе разработки, поскольку нам не нужно тратить время на настройку веб-сервера.
Установите webpack-dev-server как зависимость для разработки
npm install webpack-dev-server --save-dev
Нам нужно сообщить Npm, как использовать webpack-dev-server
{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --progress --display-error-details", "start": "webpack-dev-server --progress --colors --inline --content-base build" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "vue": "^2.3.3" }, "devDependencies": { "webpack": "^2.6.0", "webpack-dev-server": "^2.4.5" } }
Чтобы использовать webpack-dev-server, выполните команду запуска
npm run start
Если команда npm run start здесь не работает, проверьте, есть ли на этом компьютере другой веб-сервер и работает ли что-то еще на порту 8080. webpack-dev-server по умолчанию работает на порту 8080. Запустите браузер и перейдите к
Http: // localhost: 8080. Если вы не видите Hello World, нам нужно изменить настройки, чтобы веб-страница обслуживалась на порту, отличном от 8080. Измените webpack.config.js, чтобы приложение запускалось с порта, отличного от 8080.
const path = require('path') const PATHS = { app: path.resolve(__dirname,'app'), build: path.resolve(__dirname,'build') }; module.exports = { entry: { app: PATHS.app + "/index.js" }, output: { path: PATHS.build, filename: 'bundle.js' }, resolve: { alias: { 'vue': 'vue/dist/vue.common.js' } }, devServer: { host: '127.0.0.1', port: 4040, } };
Мы только что изменили конфигурацию webpack, чтобы наше приложение запускалось под портом 4040. Снова создайте приложение.
npm run start
В своем интернет-браузере перейдите по адресу http: // localhost: 8080 или http: // localhost: 4040, в зависимости от того, под каким именем вы настраивали приложение. Вы должны увидеть привет на веб-странице. Теперь перейдите и замените Hello there в index.js на что-нибудь другое. Webpack-dev-server автоматически обнаружит изменение, восстановит приложение за кулисами и обновит веб-страницу для вас. Теперь вы должны увидеть, как внесенные вами изменения отражаются на веб-странице.
Помимо обнаружения изменений в файлах JavaScript, Webpack также может обнаруживать изменения в файлах css, а также на лету перестраивать и обновлять наше приложение. Чтобы это сработало, нам нужно заранее поработать. Нам нужно установить пару загрузчиков, которые работают с таблицами стилей. Эти загрузчики зависят от разработки. Если веб-пакет запущен, выйдите из него, нажав CTRL-C.
npm install css-loader style-loader --save-dev
Измените файл webpack.config.js, чтобы он знал, когда и как обрабатывать загрузчики CSS и стилей, которые мы установили на предыдущем шаге.
const path = require('path') const PATHS = { app: path.resolve(__dirname,'app'), build: path.resolve(__dirname,'build') }; module.exports = { entry: { app: PATHS.app + "/index.js" }, output: { path: PATHS.build, filename: 'bundle.js' }, resolve: { alias: { 'vue': 'vue/dist/vue.common.js' } }, devServer: { host: '127.0.0.1', port: 4040, }, module: { rules: [ { test: /\.css$/, use: ['style-loader','css-loader'] } ] } };
В папке app создайте папку css и добавьте новый файл main.css. поместите следующие определения таблиц стилей в main.css
body { background: lightblue; }
Измените index.js, чтобы включить следующую строку в начало файла.
require('./css/main.css');
Скажите webpack собрать приложение и запустить приложение
npm run start
Перейдите на веб-страницу http: // localhost: 8080 (или http: // localhost: 4040). Вы должны увидеть голубой фон на своей веб-странице.
Теперь давайте изменим таблицу стилей, чтобы увидеть, как веб-пакет и обнаруживать изменения в файле css, а также пересобирать и перезагружать наше приложение на лету. Измените содержимое main.css следующим образом.
body { background: lightgreen; }
К тому времени, как вы измените таблицу стилей, webpack уже обнаружил изменение, выполнил и отобразил изменения. На веб-странице вы должны увидеть, что цвет фона становится светло-зеленым.
Теперь давайте заставим это приложение работать с Bootstrap. Установите бутстрап с помощью NPM. Мы не будем использовать флаг «- save-dev» при установке начальной загрузки. Bootstrap - это не зависимость от разработки, это зависимость от времени выполнения.
npm install bootstrap --save
Чтобы бутстрап работал с Webpack, нам понадобится пара дополнительных загрузчиков. Это загрузчик файлов и загрузчик URL. Помимо файлов CSS, бутстрап также включает шрифты, URL-адреса и изображения. Webpack необходимо знать, как обрабатывать различные типы ресурсов, которые поставляются с начальной загрузкой. Эти два загрузчика зависят от разработчиков.
npm install file-loader url-loader --save-dev
Измените файл webpack.config.js, чтобы указать, как обрабатывать различные типы ресурсов, которые поставляются с начальной загрузкой. Раздел «модуль» в webpack.config.js необходимо изменить следующим образом.
module: { rules: [ { test: /\.css$/, use: ['style-loader','css-loader'] }, { test: /\.png$/, use: "url-loader?limit=100000" }, { test: /\.jpg$/, use: "file-loader" }, { test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=application/font-woff' }, { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=application/octet-stream' }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, use: 'file-loader' }, { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, use: 'url-loader?limit=10000&mimetype=image/svg+xml' } ] }
Включите начальную загрузку в index.js, убедитесь, что оператор require для начальной загрузки стоит перед оператором require для «main.css». Это сделано для того, чтобы наши пользовательские стили не были перезаписаны загрузкой. Также включите в этот файл компонент начальной загрузки, чтобы проверить настройку.
require('bootstrap/dist/css/bootstrap.min.css'); require('./css/main.css'); import Vue from 'vue'; Vue.component('my-button', { template: '<input type="button" class="btn btn-primary" value="Hello bootstrap">' }) new Vue({ el: '#app', data: { message: "Hello There" } });
Измените index.html, включив в него компонент «my-button». Поскольку изменение касается html-файла, а webpack не обнаруживает изменений в html-файле, вам придется обновить веб-страницу самостоятельно, чтобы увидеть изменения.
Создайте приложение
npm run start
Перейдите на веб-страницу http: // localhost: 8080, вы должны увидеть кнопку со стилем начальной загрузки.
На этом завершается настройка для начала работы с Vue, Webpack и Bootstrap.