Code Monkey home page Code Monkey logo

vue-lumen-tutorial's Introduction

Setup und Entwicklung

Um das vue-laravel Tutorial aufrufen zu können, sind folgende Schritte nötig.

  1. Backend-Abhängigkeiten installieren und Datenbankschema initialisieren

    Für die Backend-Abhängigkeiten wird Composer benötigt. Danach können die Abhängigkeiten installiert werden

    composer install
    

    Um die Datenbank zu konfigurieren, wird eine .env-Datei benötigt. Ist diese noch nicht vorhanden, kann folgender Befehl ausgeführt werden:

    composer run-script post-root-package-install
    

    Danach lassen sich die Datenbankmigrationen und die dazugehörige Befüllung mit Daten ausführen, sofern in der Datei .env die Datenbank korrekt hinterlegt wurde.

    php artisan migrate
    php artisan db:seed
    php artisan passport:install
    
  2. PHP Server für die API starten

    Für die API wird ein PHP-Server benötigt.

    php -S localhost:80 -t public
    
  3. Frontend-Abhängigkeiten installieren

    Für die Frontend-Abhängigkeiten verwenden wir den Node Package Manager.

    npm install
    
  4. webpack-dev-server starten.

    Für die Entwicklung wird ein lokaler webpack-dev-server eingesetzt.

    npm run dev
    
  5. Nun kann die Anwendung aufgerufen werden.

    http://localhost:8080
    

Frontend // Webanwendung

Das Frontend besteht aus einer vue.js-App, die die Daten der Backend-API abruft und entsprechende dynamische Webseiten generiert. Die Dokumentation des Frameworks findet sich auf der vue.js Website.

Zum Abruf der Daten wird Axios verwendet. Für die Authentifizierung wird ein entsprechender Token mitgesendet, sofern dieser im Local Storage gefunden werden kann. Das State Handling übernimmt dabei Vuex. Alle Funktionen bezüglich der Authentifizierung befinden sich unter public/src/js/store.js.

Routing

Zum Routing wird vue-router genutzt. Alle Routen finden sich in public/src/js/router.js. Auch wird hier vor jedem Routenaufruf geprüft, ob der Nutzer diese sehen darf und wenn nicht wird er zum Login weitergeleitet.

Material Design mit vuetify

Um im Frontend Material Design Komponenten einsetzen zu können, wird vuetify eingesetzt. Dieses bindet die Material Design Icons ein. Es wird dabei 'A-la-carte' genutzt, damit nur diejenigen Komponenten gebundled werden, die auch tatsächlich im Einsatz sind. Die Styles sind als Stylus-Dateien eingebunden und können in de vue-Komponenten per SCSS überschrieben werden. Zum Beispiel:

Es gibt folgende Elemente im Frontend:

  • Produkte
  • Firmen
  • Kontaktformular
  • Login
  • Adminbereich

Backend // API

Das Backend besteht aus einer Lumen-API, die alle Daten entsprechend aufbereitet aus der MySQL-Datenbank ausgibt. Die Dokumentation des Frameworks findet sich auf der Lumen Website.

Routen

Das Routing befindet sich in der routes/web.php. Momentan gibt es folgende Endpunkte:

  • /products liefert alle Produkte
    • /products/{id} liefert spezifisches Produkt
  • /companies liefert alle Firmen
    • /companies/{id} liefert spezifische Firma incl. deren Produkte
  • /contacts überträgt eine eingetragene Kontaktanfrage
  • /private/contacts liefert alle eingetragenen Kontaktanfragen (zugangsgeschützt)

Basisklassen

Die Basisklassen liegen unter /app und definieren die Entitäten und deren Relationen. Momentan existieren die Basisklassen für Firmen und Produkte.

Controller

Die Controller liegen unter /app/Http/Controllers. Die in den Controllern befindlichen Funktionen werden vom Routing aufgerufen und liefern entsprechende JSON-Objekte zurück. Dabei wird sich sogenannter Ressourcen bedient, die Collections von Entitäten zurückgeben. Momentan existieren Controller für Produkte und für Firmen.

Ressourcen

Die Ressourcen liegen unter app/Http/Resources und kapseln die Ausgabe der Entitäten. In Ressourcen wird somit definiert, welche tatsächlichen Eigenschaften der Entitäten an der Schnittstelle verfügbar sind. Momentan existieren Resourcen für Firmen und Produkte. Die Produkte werden auch von den Firmen gewrapped.

Release

Da im production-Mode kein webpack-dev-server benutzt wird und entsprechend kein Hot Module Replacement stattfindet, müssen hier die Quellen statisch kompiliert und hinterlegt werden. Dazu folgenden Befehl aufrufen:

npm run build

vue-lumen-tutorial's People

Contributors

aibim avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.