Introductie tot Sails.js

Sails is een Javascript-framework dat is ontworpen om te lijken op de MVC-architectuur van frameworks zoals Ruby on Rails. Het maakt het proces van het bouwen van Node.js-apps eenvoudiger, met name API's, één pagina-apps en realtime-functies, zoals chat.


Installatie

Om Sails te installeren, is het vrij eenvoudig. De vereisten zijn om Node.js geïnstalleerd te hebben en ook npm, die wordt geleverd met Node. Dan moet men het volgende commando in de terminal afgeven:

sudo npm install sails -g

Maak een nieuw project

Om een ​​nieuw Sails-project te maken, wordt de volgende opdracht gebruikt:

vult nieuw myNewProject in

Sails genereert een nieuwe map met de naam myNewProject en voeg alle benodigde bestanden toe om een ​​basisapplicatie te laten bouwen. Om te zien wat er is gegenereerd, gaat u gewoon naar myNewProject map en voer de Sails-server uit door de volgende opdracht in de terminal op te geven:

zeilen stijgen

De standaardpoort van Sails is 1337, dus als je hem bezoekt http: // localhost: 1337 je zou de standaard Sails moeten krijgen index.html pagina.


Laten we nu eens kijken naar wat Sails voor ons heeft gegenereerd. In onze myNewProject map zijn de volgende bestanden en submappen aangemaakt:


De middelen Map

De middelen map bevat submappen voor de Javascript- en CSS-bestanden die tijdens runtime moeten worden geladen. Dit is de beste plaats om hulpbibliotheken op te slaan die door uw toepassing worden gebruikt.

De openbaar Map

Bevat de bestanden die openbaar beschikbaar zijn, zoals afbeeldingen die uw site gebruikt, het favicon, enz.

De config Map

Dit is een van de belangrijke mappen. Sails is ontworpen om flexibel te zijn. Het gaat uit van een aantal standaardconventies, maar het geeft de ontwikkelaar ook de mogelijkheid om de manier te veranderen waarop Sails de gemaakte app configureert om aan de behoeften van het project te voldoen. Het volgende is een lijst met configuratiebestanden die aanwezig zijn in de config map:

  • adapters.js - gebruikt om de database-adapters te configureren
  • application.js - algemene instellingen voor de toepassing
  • assets.js - activa-instellingen voor CSS en JS
  • bootstrap.js - code die wordt uitgevoerd voordat de app wordt gestart
  • locales - map met vertalingen
  • policies.js - Configuratie van gebruikersrechtenbeheer
  • routes.js - de routes voor het systeem
  • views.js - bekijk gerelateerde instellingen

De sails.js documentatie bevat gedetailleerde informatie over elk van deze mappen.

De keer bekeken Map

De weergaven van de toepassing worden opgeslagen in deze map. Als we naar de inhoud kijken, merken we dat de weergaven standaard worden gegenereerd als EJS (ingebed JavaScript). Ook de keer bekeken map bevat overzichten voor foutafhandeling (404 en 500) en ook het lay-outbestand (layout.ejs) en de weergaven voor de thuiscontroller, die zijn gegenereerd door Sails.

De api Map

Deze map is samengesteld uit een groot aantal submappen:

  • de adapters map bevat de adapters gebruikt door de toepassing om
    omgaan met databaseverbindingen
  • de controllers map bevat de toepassingscontrollers
  • de modellen van de toepassing worden opgeslagen in de modellen map
  • in de beleid map zijn opgeslagen regels voor gebruikerstoegang door gebruikers
  • de api-services geïmplementeerd door de app worden opgeslagen in de Diensten
    map

Configureer de applicatie

Tot nu toe hebben we onze applicatie gemaakt en hebben we gekeken naar wat standaard werd gegenereerd, nu is het tijd om de applicatie te configureren zodat deze aan onze behoeften voldoet.

Algemene instellingen

Algemene instellingen worden opgeslagen in de config / application.js het dossier. De configureerbare opties voor de toepassing zijn:

  • Naam van de toepassing (applicatie naam)
  • de poort waarop de app zal luisteren (haven)
  • de applicatieomgeving; kan ontwikkeling of productie zijn (milieu)
  • het niveau voor de logger, bruikbaar om de grootte van het logbestand te bepalen (logboek)

Merk op dat door de app in te stellen milieu voor productie, zorgt Sails ervoor dat de CSS en JS worden gebundeld en verkleind, waardoor het moeilijker wordt om fouten te debuggen.

routes

Applicatieroutes worden gedefinieerd in de config / routes.js het dossier. Zoals je zou verwachten, zal dit bestand degene zijn waarmee je het meest zult werken terwijl je nieuwe controllers aan de applicatie toevoegt.

De routes worden als volgt in het configuratiebestand geëxporteerd:

module.exports.routes = // route naar indexpagina van de home controller '/': controller: 'home', // route naar de auth-controller, login-actie '/ login': controller: 'auth' , actie: 'login', // route naar blogcontroller, actie toevoegen om een ​​bericht aan een blog toe te voegen // merk op dat we ook de HTTP-methode / het werkwoord gebruiken vóór het pad 'post / blog / add': controller: 'blog', actie: 'add_post', // route om de eerste blogpost te krijgen. De actie find zal // de databaserij met de gewenste informatie teruggeven '/ blog /: item': controller: blog, action: find

Keer bekeken

Met betrekking tot weergaven zijn de configureerbare opties de sjabloon-engine die moet worden gebruikt en, als een lay-out al dan niet wordt gebruikt, voor weergaven.


modellen

Modellen zijn een weergave van de applicatiegegevens die zijn opgeslagen in een database. Modellen worden gedefinieerd door attributen en associaties te gebruiken. Bijvoorbeeld, de definitie van een Persoon model ziet er als volgt uit:

// Person.js var Person = name: 'STRING', leeftijd: 'INTEGER', geboortedatum: 'DATE', telefoonnummer: 'STRING', emailAdres: 'STRING'; export = Persoon;

De communicatie met de onderliggende database gebeurt via adapters. Adapters zijn gedefinieerd in api / adapters en zijn geconfigureerd in de adapters.js het dossier. Op het moment dat dit artikel wordt geschreven, wordt Sails geleverd met drie adapters: geheugen, schijf en mysql maar u kunt uw eigen adapter schrijven (raadpleeg de documentatie voor meer informatie).

Nadat u een model hebt gedefinieerd, kunt u erop werken door records te maken, records te zoeken, records bij te werken en te vernietigen.


Controllers

Controllers worden geplaatst api / controllers. Een controller wordt gemaakt met behulp van de volgende opdracht:

zeilen genereren controllercommentaar

Deze opdracht genereert een CommentController voorwerp. Acties worden binnen dit object gedefinieerd. Acties kunnen ook worden gegenereerd wanneer u de controller genereren commando:

zeilen genereren controller commentaar maken vernietigen tag-achtig

Dit zal een maken Commentaar controller met acties voor creëren, vernietigen, label en net zoals.

Acties ontvangen als parameters de verzoek- en de reactieobjecten, die kunnen worden gebruikt voor het ophalen van parameters van de URI (het verzoekobject) of uitvoer in de weergave (met behulp van het antwoordobject).

Om met het model te communiceren, wordt de callback van de toepasselijke actie gebruikt. Bijvoorbeeld in het geval van het opvragen van een database met vind, het volgende patroon wordt gebruikt om het model te manipuleren:

Blog.find (id) .done (err, blog) // blog is de databaserecord met de opgegeven id console.log (blog.content); 

Keer bekeken

Weergaven worden gebruikt om de gebruikersinterface van de toepassing af te handelen. Standaard worden weergaven verwerkt met behulp van EJS, maar elke andere sjabloonbibliotheek kan worden gebruikt. Het configureren van weergaven is eerder besproken in het hoofdstuk Configuratie.

Weergaven worden gedefinieerd in de /keer bekeken map en de sjablonen zijn gedefinieerd in de / Assests / templates map.

Er zijn voornamelijk vier soorten weergaven:

  • server-zijaanzichten
  • partities bekijken
  • lay-out weergaven
  • client-side views

Server-zijaanzichten

Het is hun taak om gegevens weer te geven wanneer de klant om een ​​weergave vraagt. Meestal de methode res.view komt overeen met een klant met de juiste weergave. Maar als er geen controller of actie bestaat voor een aanvraag, zal Sails de weergave op de volgende manier weergeven: /views/:controller/:action.ejs.

De lay-outweergave

De lay-out is te vinden in /views/layout.ejs. Het wordt gebruikt om de toepassingsactiva, zoals stylesheets of JavaScript-bibliotheken, te laden.

Bekijk het opgegeven bestand:

   <%- title %>    <%- assets.css() %> <%- assets.js() %>   <%- body %>  <%- assets.templateLibrary() %>  

De lijnen assets.css () en assets.js () laad de CSS en JS-assets van onze applicatie en de assets.templateLibrary laadt de client-sjablonen.

Sjablonen voor clients

Deze zijn gedefinieerd in de / Assets / templates en worden geladen zoals we hierboven zagen.


routes

We hebben besproken hoe routes kunnen worden geconfigureerd in het hoofdstuk Configuratie.

Er zijn verschillende conventies die Sails volgt wanneer routes worden afgehandeld:

  • als de URL niet is opgegeven in de config / routes.js de standaardroute voor een URL is /: Controller /: actie /: id met de voor de hand liggende betekenis voor controller en actie en ID kaart de parameter request zijn, afgeleid van de URL.
  • als :actie is niet gespecificeerd, Sails zal doorverwijzen naar de juiste actie. Out of the box, dezelfde RESTful routeconventies worden gebruikt als in Backbone.
  • als de gevraagde controller / actie niet bestaat, gedraagt ​​Sails zich als volgt:
    • als er een weergave bestaat, geeft Sails die weergave weer
    • als er geen weergave bestaat maar een model bestaat, zal Sails de JSON-vorm van dat model retourneren
    • Als geen van de bovenstaande punten bestaat, reageert Sails met een 404

Conclusie

Nu heb ik nauwelijks het oppervlak bekrast met wat Sails kan doen, maar houd het in de gaten, want ik zal dit volgen met een diepgaande presentatie die je laat zien hoe je een applicatie kunt bouwen, met behulp van Sails.

Houd er ook rekening mee dat Sails momenteel wordt ontwikkeld en voortdurend wordt gewijzigd. Dus zorg ervoor dat je de documentatie bekijkt om te zien wat er nieuw is.