Installations

Pour installer le projet il vous faudra avoir NODE JS installé sur votre ordinateur. Si vous ne l'avez pas, vous pouvez le télécharger directement sur le site officiel de Node JS.
Si vous avez déjà Node JS installer sur votre système c’est parfait. Ouvrez un cmd dans le dossier du projet ou déplacer vous dedans, une fois cela fait entrer cette commande.

CMD

$ npm i

Une fois cela fait ouvrir votre navigateur et aller a l'addresse http://localhost:4444


Command prompt Teta

Comment lancer le command prompt ?

Premièrement ouvré un cmd a la racine du projet. Une fois cela fait vous avez deux façon d'utiliser Teta

$ npm run teta

Ou en lançant une commande precise exemple :

$ npm run teta lp

Afficher l'aide

Vous pouvez afficher l'aide (une liste des commande disponible) avec cette commande :

$ help

Quitter l'inviter de commande

Pour quitter l'inviter de commande vous pouvez faire Ctrl+c ou taper la commande :
$ exit ou x

Liste des commandes

Création d'une nouvelle page

Il existe deux syntaxe pour créer une page :

$ New Page ou np

Une fois lancer vous aurez deux possibilité :
Défaut
Vous donnez un nom et il sera attribué à tout les fichiers ainsi qu'à l'url.
Personnaliser
Vous pourrez choisir le nom du contrôleur, de la vue et du css ainsi que des ou de l'url.

Cette commande vous permet de générer le contrôleur, la vue et le css. Il est a noter que les fichiers créé auront un "code" par défault. A la création d'une page s'elle si ne cera donc pas vide. Mais vous pourrez la modifier comme vous voulez.

Supprimer une page

! Attention cette action est irréversible !

Cette option supprima le controller la vue et enleverra dans la page dans les routes disponible, par contre il ne supprimera pas le ou les fichiers utiliser par cette page dans le dossier public. la commande suivante vous permet donc de choisir quelle page vous voulez supprimer :

$ dp

Une liste de toutes les pages existante s'affichera, il vous suffira par la suite de taper exactement le nom de la page et les fichiers seront supprimé.

Lister les pages existante

$ lp

Cette commande affiche de façon "lisible" les informations sur les pages déja créée utilisable par le routeur.

Exemple :

- - - -
Page name : test
link : ['test']
views : test.ejs
Controller : test.js
- - - -

Arreter le serveur

Si vous n'arrivez pas a éteindre le serveur de façon conventionnel vous pouvez utilisé cette command pour tuer les processus serveur en utilisant son port (le command prompt trouvera le port dans le fichier .env).

$ kserv

L'architecture du projet

Le projet fonctionne avec la la logique du MVC (Model Vue Controller).
En plus des dossier du model logique vous trouverez d'autre dossier d'ont l'utilisation va vous êtres briéèvement expliqué.

Arborescence

RapideNodeJS
.devcontainer #Les fichiers de configuration du container docker
  • base.Dockerfile
  • devcontainer.json
  • Dockerfile
  • Controller #Les fichiers controller de votre site.
  • formTest.js
  • home.js
  • Documentation #La documentation que vous lisez en ce moment.
    ~
    Model #Les fichiers Model et Class.
    ~
    Module #Des scripts au utilité diverse Ex : Gestion de base de données.
    Database #Module (dev) permettant de se connecter a une base de donées.
    Class
  • connexion.js
  • main.js
  • mysql.js
  • sqlite.js
  • PageUrls #Module permetant de récupérer les informations d'une page.
  • main.js
  • Public #Dossier contenant les fichier statique (CSS, Scripts, Image ...)
    Css
    Interne #Les style utilisé par default par les pages auto générée.
  • base.css
  • error.css
  • home.css
  • formTest.css
  • Scripts
  • ajaxFormTest.js
  • home.js
  • ServExpress #Dossier contenant le serveur.
    Class
  • Controller.js
  • Configuration #Les fichiers par défaut de configuration du site.
    Template
  • base.css
  • controller.js
  • view.ejs
  • .env
  • docker-compose.yml
  • Database #Dossier utilisée pour stocker les base de données sqlite.
  • default.db
  • Logs
  • container.txt
  • database.txt
  • server.txt
  • Media #Images et autres utilisée par le serveur.
  • favicon.ico
  • Module #Scripts et module utilisé uniquement par le serveur.
    BeautyLogs
  • main.js
  • Error
  • error.js
  • main.js
  • ServerInfo
    class
  • serverInfo.js
  • main.js
  • Server
  • controller.js
  • main.js
  • rendering.js
  • requestManager.js
  • router.js
  • Service
    Class
  • service.js #Scripts utilisé uniquement par le serveur.
  • Container
  • main.js
  • GestiLogs
    class
  • log.js
  • main.js
  • serverMain.mjs
  • main.js
  • Teta #Le dossier du command prompt.
  • handFiles.py
  • handString.py
  • teta.py
  • Tools #Scripts utilisé uniquement par le serveur.
  • normalisations.js
  • index.js
  • meta.json
  • start.sh
  • urls.json
  • Tools #Scripts qui peuvent être utilisé dans votre projet.
  • files.js
  • normalisations.js
  • Views #Les fichiers vues de votre projet.
    internal #Les fichiers vues par défault utilisé par le serveur.
    error
  • error.ejs
  • formTest.ejs
  • home.ejs
  • .env #Le fichier contenant les variable d'environnement du serveur.
  • .gitattributes
  • .gitignore #Permet d'ignorer les dossier & fichiers non utile au depôt Github.
  • docker-compose.yml #Fichier de configuration du container docker en mod dev.
  • index.html
  • install.sh #Fichier bash permettant l'installations des dépendance du projet.
  • package-lock.json
  • package.json Fichier de configuration utilisé par NPM.
  • README.md
  • MVC

    Vue

    Les fichiers vue (views anglais) utilise le langage de template EJS.
    Afin d'utiliser les données créé dans le contrôleur vous devez appeller l'object CR dans le fichier vue. Cette object contient toutes les données que vous avez envoyé au serveur depuis le contrôleur.

    Exemple d'utilisations:
    <p>
     <%= CR.loremIpsum =%>
    </p>

    Le nom de la variable que vous aurez utiliser dans le contrôleur sera exactement la même dans la vue. Car CR est un simple tableau associatif.

    Si vous avez besoin d'utiliser un fichier CSS, JS ou un média vous pouvez simplement en faire référence en donnant son emplacement dans le dossier public

    Exemple :
    #Pour un fichier CSS
    <head>
    #Comme on peut le voir dans l'exemple il suffit de faire référence au dossier CSS qui est dans le dossier Public
     <link type="text/css"rel="stylesheet" href='Css/Interne/base.css'>
    </head>
    #Pour un fichier script JS
    <script src="Scripts/home.js"></script>

    Controlleur

    Dans le contrôleur la variable fonctionController est un tableau dans lequel devra être mise chacune des variables qui devra être envoyée à la vue. Le premier `if` gère les informations envoyées à la vue et le deuxième lui gère la récupération des informations. Dans la deuxième image du contrôleur on traite les informations renvoyées par la page.
    Les informations sont envoyées sous cette forme : datas = `{ data_get, data_post };`
    Les données sont donc accessibles comme suit :
    Pour le POST: data.data_post
    Pour le GET: data.data_get

    Model

    Le dossier Model n'est pas utilisé par défaut par le serveur, il n'est là qu'à titre d'aide. Cependant si votre application n'a pas besoin d'utiliser de model vous pouvez laisser ce dossier vide. Il n’y a rien de spécial à faire pour les class et autres fichiers dans ce dossier.

    Dossier statique

    Dans ce dossier vont tous les fichiers dis statique (images, Feuille de style, Feuille de scripts etc…), par défaut c’est là que le serveur va aller les chercher. Il est possible de les classer dans des dossiers, il faut juste penser à indiquer le nom du dossier à l’endroit où le fichier sera appelé dans votre code.

    Css

    Dans ce dossier vont tous les fichiers de style. Le serveur ne cherchera pas automatiquement les fichiers de style, si vous faites référence à un-t-elle fichier dans l’une de vos vues pensez bien à ajouter le nom du dossier racine devant.

    Exemple :
    Css/home/main.css

    Scripts

    Si vous faites référence à des scripts dans l’une de vos vues c’est à cette endroit qu’ils faudra les mettre. Comme pour les css le serveur ne recherche pas directement les fichiers de scripts. Il faudra donc penser à ajouter le dossier racine devant le lien.

    Exemple :
    Scripts/home/main.js

    Fichiers de configuration

    Le fichier env

    Ce fichier contient les variables d’environnement qui sont utilisé comme paramètres pour le serveur et ses modules. Chacune de ses variables peuvent être définis par l’utilisateur.

    #Server
    PORT : { Integer } #Le port utiliser par le serveur
    DEV : { Boolean } #Active le mod ‘développement’ ( défaut ‘false’)
    #Database
    DATABASE_TYPE : { String } #Cette variable peut prendre deux valeur sqlite | mysql
    DATABASE_NAME : { String } #Le nom de la base de données utilisée par le serveur (dans le cas d’une base de données sqlite il n’est pas nécessaire d’ajouter .db après le nom)
    DATABASE_HOST : { String } #L’url d’accès à la base de données Ex : localhost (a laissé vide si c’est une base de données sqlite)
    DATABASE_USER : { String } #Le nom de l’utilisateur que le serveur doit utiliser pour communiquer avec le serveur de base de données
    DATABASE_PASSWORD : { String } #le mot de passe de l’utilisateur utilisé pour se connecter au serveur de base de données
    DATABASE_PORT= { Integer } #Le port du serveur de la base de données. Normalement le port et le host sont dans la même ligne. (défaut ‘3306’)
    #-Mysql
    Pour plus d’informations sur chacun de ses paramètres vous pouvez vous référer a la documentation officielle : https://www.npmjs.com/package/mysql
    MYSQL_CHARSET : { String } #Le type de charset utilisé par la base de données (défaut ‘utf8’)
    MYSQL_DEBUG : { Boolean | String } #Active le mode de débogage de mysql. (défaut ‘false’)
    MYSQL_TIMEZONE : { String } #La zone horaire du serveur (défaut ‘local)
    #-Sqlite
    SQLITE_PATH : { String } #L’url ou le chemin directe vers le fichier de base de données
    SQLITE_VERSION : { Integer } #La version de sqlite que doit utilisé le serveur
    #Media
    STATICDIR : { String } #Le nom du dossier ou le serveur doit chercher les fichiers statique ( par défaut ‘Public’)
    ICON : { String } #L’url ou chemin de la favicon ( par défaut ‘ServExpress/media/favicon.ico’)

    Le fichier urls.json

    Ce fichier contient les informations de chacune des pages créer par le cmd. Vous pouvez éditer à la main ce fichier et rajouter vos propres pages si vous le souhaiter cependant n’oublier pas de créer ou renommer les fichiers en conséquence. Pour rajouter des routes classiques c’est-à-dire des pages web ou juste des controller créer un objet comme ceci dans le tableau ‘user’.

    Exemple :
    {
     "link" : [
      "exemple"#Le nom que vous allez utiliser dans votre code
      ],
     "views" : "exemple.ejs"#Le nom de la vue (si il y a une vue)
     "controller" : "exemple.js"#Le nom du controleur que vous allez utiliser dans votre code
    }

    Dépendance

    Le projet étant principalement créer en JavaScript les dépendances seront principalement gérer par NPM, dans le futur il probable d’avoir l’intégration d’un Framework JS ou de Webpack.

    Npm Package

    Pour trouver une liste toujours à jour des package utilisé ouvrer le fichier "package.json"