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
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.
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
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
GestiLogs
-
class
- 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.
- 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"