Geddy.js – MVC Web Framework für Node



Geddy.js – MVC Web Framework für Node

0 0


geddy-lightning-talk

My Presentation for the Geddy.js Lightning-Talk at the Javascript User Group Leipzig, Germany

On Github der-On / geddy-lightning-talk

Geddy.js

MVC Web Framework für Node

von Matthew Eernisse / @mde

geddyjs.orgGoogle Group #geddy auf Freenode.net

Was ist Geddy?

Geddy ist ein MVC Web Framework für node.js, angelehnt an die Ruby on Rails API.

Geddy enthält ein eigenes ORM, genannt "model".

Geddy ist Ressourcenorientiert und erstellt automatisch eine RESTful API.

Was kann Geddy?

  • REST
  • CLI
  • Datenbanken: MongoDB, LevelDB, MySql, SQLite, Postgresql, Riak, In-Memory, Dateisystem
  • Migrationen für SQL-Datenbanken
  • Sessions: Cookie, Memcache, Redis, MongoDB, In-Memory
  • Template-Engines: EJS, Jade, Handlebars, Mustache, Swig
  • Jedes Model in Geddy kann eine andere Datenbank verwenden.

Und was noch?

  • Multithreaded dank Cluster
  • Ressourcen Scaffolding
  • Generatoren
  • Eigener Task-Runner "Jake"
  • Realtime mit Socket.io
  • I18n
  • Authorisierung mit Passport

Installation

            $ nmp install -g geddy
            $ geddy gen app my-first-geddy-app
            $ cd my-first-geddy-app
            $ geddy gen scaffold book title:string description:text
            $ geddy gen scaffold user name:default username:string password:string
            $ geddy
          

Geddy App Struktur

  • app/controllers
  • app/models
  • app/views
  • config/
  • public/
  • lib/
  • log/
  • node_modules/
  • test/
  • Jakefile
  • jakelib/

Scaffolding

Bei einem Ressourcen Scaffold erstellt Geddy

  • einen Ressource Controller,
  • ein Ressource Model,
  • Einen einfachen Test-Stub unter test/,
  • und einfache Html-Templates für alle CRUD Aktionen der Ressource.

Model

"Model" ist ein eigenstängies Node Module, welches auch ausserhalb von Geddy genutzt werden kann.

  • MongoDB-artige Query-Objekte
  • Relationen mittels Fremdschlüsseln in Form von hasMany, hasOne, belongsTo
  • Enthält bereits Grundlegende Validierungen: present, absent, length, format (RegExp), confirmed, withFunction
  • Lifecycle Events für Erstellung, Validierung, Aktualisierung, Speicherung, Löschung

Jake

Jake ist der von Geddy genutzte Task-Runner. Auch Jake ist ein eigenständiges Node Modul und kann ausserhalb von Geddy genutzt werden.

Jake-Tasks sind in Javascript geschrieben:

            namespace("foo", function() {
              describe("displays bar");
              task("bar", function() {
                console.log("bar";
              });
            });

            $ geddy jake foo:bar // -> bargit
          
Jake war zuerst da, erst dann kam Grunt.

Wer benutzt Geddy?