Sailsjs : anatomie d'un projet
Sailsjs est un framework basé sur nodejs suivant le model MVC et qui vous permet de créer facilement votre site web mais surtout votre backend. Lisez mon blog Qu'est ce que Sailsjs si vous ne connaissez pas ce framework. Dans ce blog, je vais vous présenter l'anatomie d'un projet sailsjs.
Création d'un projet sailsjs
Pour créer un projet sailsjs, vous devez installer nodejs et sailsjs. Si ce n'est pas encore fait, je vous invite à le faire avant de continuer.
Créez votre projet sailsjs avec la commande suivante
sails new myprojet
Cette commande vous demandera de choisir le type de projet que vous voulez créer
Choose a template for your new Sails app:
1. Web App · Extensible project with auth, login, & password recovery
2. Empty · An empty Sails app, yours to configure
(type "?" for help, or <CTRL+C> to cancel)
?
Choisissez 2
info: Installing dependencies...
Press CTRL+C to cancel.
(to skip this step in the future, use --fast)
info: Created a new Sails app `myprojet`!
Après quelques minutes, votre projet sailsjs sera créé.
Anatomie d'un projet sailsjs
Nous allons maintenant regarder la structure des fichiers d'un projet sailsjs. Pour explorer les fichiers de notre projet, nous avons besoin d'un éditeur. J'utilise visual code. Vous pouvez le télécharger gratuitement sur le site officiel.
Ouvrez votre repertoire myprojet avec l'éditeur visual code
Un projet sailsjs contient 6 répertoires et des fichiers. Les 6 répertoires sont :
- api
- assets
- config
- node_modules
- task
- views
Les répertoires d'un projet sailsjs
Répertoire api
Ce répertoire constitue l'intelligence de votre application. Il contient l'ensemble de votre logique. Dans le model MVC sur lequel est basé sailsjs, le répertoire api contient le M (Model) et le C (Controller). Le répertoire api contient 4 autres répertoires: controller, helpers, models et policies.
Répertoire controller
Le répertoire controller est l'endroit où vous allez coder votre logique. C'est la logique de votre application. C'est dans ce répertoire que vous allez générer les actions à exécuter. Pour générer une action, executez la commande suivante
sails generate action myaction
module.exports = {
friendlyName: 'Myaction',
description: 'Myaction something.',
inputs: {
},
exits: {
},
fn: async function (inputs, exits) {
return exits.success();
}
};
Répertoire helpers
Le répertoire helpers contient l'ensemble des tâches répétitives comme les services. C'est dans ce répertoire que vous aller générer les services qui seront utilisés par les controllers. Vous pouvez créer par exemple un service qui envoi des emails avec mailgun. (voir mon blog sailsjs & mailgun).
Pour générer un helper , executez la commande suivante
sails generate helper myhelper
module.exports = {
friendlyName: 'Myhelper',
description: 'Myhelper something.',
inputs: {
},
exits: {
},
fn: async function (inputs, exits) {
// All done.
return exits.success();
}
};
Répertoire models
Le répertoire models contient l'ensemble des entités (exemple client) de votre projet. C'est dans ce répertoire que vous allez générer la structure des entités de votre projet. Pour générer un model, executez la commande suivante
sails generate model mymodel
/**
* Mymodel.js
*
* @description :: A model definition. Represents a database table/collection/etc.
* @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models
*/
module.exports = {
attributes: {
// ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗
// ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
// ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
// ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗
// ║╣ ║║║╠╩╗║╣ ║║╚═╗
// ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝
// ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
// ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗
// ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝
},
};
Répertoire policies
Le répertoire policies contient l'ensemble des règles d'autorisation à vos actions. C'est dans ce répertoire que vous allez definir qui a droit à quoi.
un exemple de policy est de rejeter tous les appels non authentifiés.
/**
* authenticated
* @description :: Policy that rejects unauthorized requests.
*/
module.exports = (req, res, next) => {
if (!req.user) return res.forbidden();
return next();
};
Répertoire assets
Le répertoire assets contient l'ensemble de vos données statiques comme les images, les fichiers css, les fichiers js, les templates, le favicon.ico et le fichier robots.txt
Répertoire config
Le répertoire config contient l'ensemble des fichiers de configuration de votre application sailsjs. Ce répertoire contient 2 autres répertoires env et locales. Le répertoire env contient le fichier production.js dans le lequel vous definirez les paramètres d'exécution de votre application en mode production. Le répertoire locales contient les fichiers de langue pour créer une application multilangue avec sailsjs.
Répertoire node_modules
Le répertoire node_modules contient l'ensemble des modules necessaires à l'exécution de votre application. Ce répertoire est générer automatiquement par npm quand vous executez la commande npm install
.
Répertoire tasks
Ce répertoire est utilisé par grunt pour automatiser certaines tâches. Nous en parlerons plus en détail dans un autre blog.
Répertoire views
Ce répertoire contient l'ensemble de vos vues. C'est le V dans le model MVC. Le répertoire views contient toutes les pages visibles par l'utilisateur.
En plus des répertoires ci-dessus cités, une applications sailsjs contient aussi des fichiers comme:
- .sailsrc qui est un fichier de configuration pour l'application
- app.js qui est le fichier de démarrage de votre application
- Gruntfile.js qui est un fichier de configuration pour grunt
- package.json qui est fichier listant l'ensemble des dépendances de votre projet