Vs VueSzablon 2 W poprzednim wpisie pokazałem jak szybko zacząć pracę z Angular i Visual Studio Code. Obecnie jednak istnieje wiele innych popularnych framework-ów javascript. Jednym z nich jest Vue.js. Jest on dużo prostszy niż Angular i React.js. Dlatego często jest wybierany jako alternatywa.

Zobaczmy więc jak łatwo z nim przygotować środowisko do pracy nad pierwszą aplikacją Vue.js

Vue.js podobnie jak Angular i React używa komponentów, routingu i itp. Jego zaletą jest fakt, że sam sobie nie dodaje mnóstwa bibliotek. Zamiast tego później wybierasz z czego chcesz korzystać.  Przykładowo, jeśli chcesz korzystać  z menadżera stanów, to go instalujesz.

Vue.js powstał więc z myślą o szybkości. Ten fakt dotyczy też  tego, że nie wciska ci wszystkich funkcjonalności za jednym zamachem .

image_thumb64

Zanim zaczniesz pracę pamiętaj by sprawdzić czy masz zainstalowaną najnowszą wersje NodeJs. Obecnie w świecie JavaScript wszystko się instaluje przez system paczek NPM. Nie ma ściągania kodu ze stron internetowych tak, jak kiedyś.

Vue.js

Uruchom Visual Studio Code i wybierz folder swojej pracy.

VUE

Otwórz teraz terminal. Będzie nam potrzebny do uruchomienia systemu paczek NPM. Tak zainstalujemy wszystko, co nam jest potrzebne.

integrated Terminal

Każdy obecny framework JavaScript ma swój własny system CLI. W poprzednim wpisie użyliśmy Angular CLI do stworzenia nowej aplikacji. Podobnie jest z Vue.js.

npm install -g vue-cli

Paczkę odpowiadającą za system tworzenia aplikacji VUE instalujemy globalnie, czyli w obszarze niezależnym od konkretnego projektu. Dlatego po poleceniu install wstawiamy flagę –g.

npm install -g vue-cli

Instalacja potrwa kilka sekund. Teraz w konsoli mamy do dyspozycji polecenie vue. Przy pomocy tego polecenia możemy stworzyć aplikację VUE na podstawie gotowego szablonu.

vue init webpack my-vue-app

Nazwa folderu i aplikacji u mnie to “my-vue-app”. Ty jednak możesz wpisać cokolwiek innego.

Po uruchomieniu polecenia otrzymasz listę pytań.

vue init webpack

Jak powinna się nazywać twoja aplikacja? Jaki powinna mieć opis? Kto jest autorem tej aplikacji? W następnej opcji wybierz koniecznie “standalone” inaczej nie będziesz mógł tworzyć szablonów.

W następnym pytaniu wybrałem instalację podpaczki vue-router. Nie jest ona konieczna przy prostej aplikacji hello world, ale w aplikacji, w której planujemy wiele podstron paczka jest obowiązkowa.

Potem kreator sugeruje ci instalację pomocniczych narzędzi JavaScript. EsLint analizuje twój kod JavaScript i sugeruje jego poprawę. Karma to biblioteka służąca do tworzenia testów jednostkowych. Nightwatch służy do testów całościowych, które sprawdzą cały przepływ aplikacji.

D:\PanNiebieski\Projekty\Fun with Visual Studio Code\my\vue> vue init webpack my-vue-app

? Project name my-vue-app
? Project description For fun with Visual Studio Code
? Author Cezary Walenciuk <cezarywalenciuk@gmail.com>
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? No
? Setup unit tests with Karma + Mocha? No
? Setup e2e tests with Nightwatch? No

   vue-cli · Generated "my-vue-app".

   To get started:

     cd my-vue-app
     npm install
     npm run dev

   Documentation can be found at https://vuejs-templates.github.io/webpack

Po uzupełnieniu tych pytań utworzysz aplikację VUE. Konsola podpowiada co trzeba zrobić dalej, by uruchomić aplikację.

Najpierw jednak otwórz folder z utworzoną aplikacją VUE.

image

Aplikacja została utworzona, ale referencje do paczek nie zostały jeszcze uzupełnione.

npm install

Używając komendy npm install zostaną zainstalowane paczki z których korzysta VUE.js

Terminal npm install

Jakie paczki mają być zainstalowane? To jest określone w pliku package.json

image

Może zwrócić uwagę na rozbicie paczek na “dependencies” i “devdependencies”. Jak widać ta druga opcja wymaga większej ilości paczek.

{
  "name": "my-vue-app",
  "version": "1.0.0",
  "description": "For fun with Visual Studio Code",
  "author": "Cezary Walenciuk <cezarywalenciuk@gmail.com>",
  "private": true,
  "scripts": {
    "dev": "node build/dev-server.js",
    "start": "npm run dev",
    "build": "node build/build.js"
  },
  "dependencies": {
    "vue": "^2.4.2",
    "vue-router": "^2.7.0"
  },
  "devDependencies": {
    "autoprefixer": "^7.1.2",
    "babel-core": "^6.22.1",
    "babel-loader": "^7.1.1",
    "babel-plugin-transform-runtime": "^6.22.0",
    "babel-preset-env": "^1.3.2",
    "babel-preset-stage-2": "^6.22.0",
    "babel-register": "^6.22.0",
    "chalk": "^2.0.1",
    "connect-history-api-fallback": "^1.3.0",
    "copy-webpack-plugin": "^4.0.1",
    "css-loader": "^0.28.0",
    "eventsource-polyfill": "^0.9.6",
    "express": "^4.14.1",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.1.4",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^2.30.1",
    "http-proxy-middleware": "^0.17.3",
    "webpack-bundle-analyzer": "^2.9.0",
    "semver": "^5.3.0",
    "shelljs": "^0.7.6",
    "opn": "^5.1.0",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^1.2.0",
    "rimraf": "^2.6.0",
    "url-loader": "^0.5.8",
    "vue-loader": "^13.0.4",
    "vue-style-loader": "^3.0.1",
    "vue-template-compiler": "^2.4.2",
    "portfinder": "^1.0.13",
    "webpack": "^3.6.0",
    "webpack-dev-middleware": "^1.12.0",
    "webpack-hot-middleware": "^2.18.2",
    "webpack-merge": "^4.1.0"
  },
  "engines": {
    "node": ">= 4.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

Paczki w devdependencies; są to paczki JS, które nam pomagają w tworzeniu aplikacji. Nie zostaną one umieszczone w aplikacji, gdy będziemy ją oglądać w oknie przeglądarki.

Przykładowo paczka “express” w devdependencies to paczka serwerowa NodeJs, która pozwala na tworzenie i uruchamianie serwera stron internetowych. Serwera jak “Apache” czy “IIS”.

Tylko paczka VUE zostanie wystawiona po stronie klienta przeglądarki. Obecnie mamy tylko dwie paczki.

"dependencies": {
    "vue": "^2.4.2",
    "vue-router": "^2.7.0"
  },

Po uzupełnieniu referencji do paczek JavaScript, aplikacja może zostać uruchomiona następującym poleceniem.

npm run dev

Otworzy się tobie następująca strona internetowa.

VUE.JS index

Jak to wszystko powstało? Otwierając ponownie plik “package.json” możesz zobaczyć, co robi polecenie “dev”.

{
  "name": "my-vue-app",
  "version": "1.0.0",
  "description": "For fun with Visual Studio Code",
  "author": "Cezary Walenciuk <cezarywalenciuk@gmail.com>",
  "private": true,
  "scripts": {
    "dev": "node build/dev-server.js",
    "start": "npm run dev",
    "build": "node build/build.js"
  },

Polecenie dev uruchamia serwerowy silnik Node.js, a ten przetwarza plik “dev-server.js”. Jak sama nazwa wskazuje odpowiada on za uruchomienia serwera lokalnego Express.

dev-serwer.js

Kod definicji serwera jest trochę złożony. Jest nawet w nim podział na środowiska “produkcyjne” i “ developerskie”. Porty i definicje środowisk znajdują się w pliku index.js. Tam też można zmienić port do swoich potrzeb.

port serwera

Przejdźmy jednak do samego tworzenia aplikacji internetowej przy użyciu VUE.

Znajdź plik src/componenets/HelloWorld.vue. Strony są tworzone w takich szablonach. Później za nas zostaną odpowiednio skompilowane na strony HTML.

HelloWorld.vue

Gdy go otworzysz zobaczysz, że składnia kodu w ogóle nie jest koloryzowana. Visual Studio Code zasugeruje ci pewien dodatek, który rozwiąże ten problem.

Brak kolorozywanie składni VUE

Zainstaluję więc dodatek do Visual Studio Code  - “Vetur”.

VUE

Teraz jest dużo lepiej

Koloryzowanie składni VUE

Jeśli masz doświadczenia z Angular 1.X.X możesz być pozytywnie zaskoczony. Składnia powiązań danych wygląda bardzo podobnie.

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>

Jak widzisz główny nagłówek strony jest określony na podstawie powiązania z właściwością “msg”.  Jest ona zwracana przez JavaScript trochę poniżej pliku “HelloWorld.vue”.

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>

Do małej zabawy dodałem swoje własne właściwości.

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      person : {
          name : "Cezary",
          surname: "Walenciuk"
        }
    }
  }
}
</script>

W podobny sposób mogę je powiązać z nagłówkami.

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <h2>{{ person.name }}</h2>
    <h3>{{ person.surname }}</h3>
    <ul>

Jak widzisz na stronie internetowej zostaną one odpowiednio wyświetlone.

Start page VUE

Jak debugować aplikacje VUE w Visual Studio Code?

Debugowanie

Jeśli czytałeś poprzedni wpis na temat uruchomienia Angulara to, co teraz zobaczysz będzie powtórką z poprzedniego wpisu.

Zainstaluję dodatek “Debugger for Chrome” do Visual Studio Code. Alternatywnie możesz zainstalować inny debugger do innej przeglądarki jak FireFox.

Debugger for Chrome

Aby debugować trzeba utworzyć plik “lanuch.json”. Wygenerowanie pliku jest bardzo proste. Wystarczy wybrać z menu opcję Debug –> Start Debugging.

A potem wybrać środowisko “Chrome”.

Debug Visual Studio Code

Do utworzonego pliku “lanuch.json” trzeba jeszcze dodać definicję powiązania przeglądarki z Visual Studio Code.


{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "chrome",
            "request": "launch",
            "name": "Launch Chrome against localhost",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceRoot}"
        },
        {
          "type": "chrome",
          "request": "attach",
          "name": "Attach to Chrome",
          "port": 9222,
          "webRoot": "${workspaceFolder}"
        }
    ]
}

Pamiętaj o odświeżeniu okna przeglądarki, aby uruchomić proces debugowania aplikacji.

Refresh Chrome

Teraz przy użyciu breakpoint-ów możesz analizować kod aplikacji VUE.

Visual Studio Code breakpoint

Mimo iż na poziomie Visual Studio Code operujemy na plikach VUE, a nie HTML debugowanie przechodzi bez żadnych problemów.

Teraz możesz zacząć swoją zabawę z Visual Studio Code i frameworkiem VUE.