UNPKG

18.8 kBMarkdownView Raw
1# node-atlas #
2
3**For an international version of this document, [follow this link](https://www.npmjs.com/package/node-atlas).**
4
5> *NodeAtlas* est un framework Web MVC(2) côté serveur vous permettant de créer des sites évolutifs, conformes au W3C et bonnes pratiques SEO. Il permet de faire tourner des pages localisables et indexables ou de créer des maquettes HTML uniquement avec des vues. Cependant, en activant les contrôleurs, vous pourrez développer de puissantes applications web orientées données et composants ou orientés service avec des fonctionalités modernes et temps réel !
6
7[![Faites un don](https://img.shields.io/badge/don-%E2%9D%A4-ddddff.svg)](https://www.paypal.me/BrunoLesieur/5) [![Travis CI](https://api.travis-ci.org/Haeresis/node-atlas.svg)](https://travis-ci.org/Haeresis/node-atlas/) [![Package npm](https://badge.fury.io/js/node-atlas.svg)](https://www.npmjs.com/package/node-atlas) [![Node.js](https://img.shields.io/badge/nodejs-6.0%2C_last-brightgreen.svg)](https://nodejs.org/en/) [![Chat pour de l'Aide](https://img.shields.io/badge/gitter-rejoindre%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/NodeAtlas/Aide)
8
9
10
11## NodeAtlas c'est : ##
12
13- La porte d'entrée aux développeurs front-end dans le monde de [Node.js](https://nodejs.org/en/).
14- Du tout JavaScript ; pour les débutants venant des mondes PHP (Laravel) / Ruby (Rails) / Python (Django) / .NET / Java ou pour les experts JS.
15- De l'évolutivité avec :
16 - des vues sans se préoccuper des contrôleurs,
17 - la prise en main progressive de contrôleurs et points d'ancrage,
18 - de l'internationalisation (i18n) et de la localisations (l10n) rapide,
19 - la puissance d'Express (serveur web) et Socket.IO (échange client-serveur temps réel) pré-configuré, simple et ajustable,
20 - les préprocesseurs EJS, Pug, Less et Stylus embarqués et prêt à l'emploi,
21 - des outils interne de génération HTML sans serveur ou d'empaquetage, minifications, offuscations, optimisations de CSS et JS,
22 - des parties cliente/serveur adaptables pour de l'isomorphisme et du rendu côté serveur avec des outils de votre choix comme Vue ou React,
23 - ou encore ; de la manipulation de DOM côté serveur, du debug serveur dans le navigateur, de l'HTTPs facile à mettre en place.
24- De la combinaison d'instance NodeAtlas pour des architectures basés sur le service comme l'utilisation sous forme d'API REST,
25- Tous les modules npm, middleware Express/Socket.IO, des plugins utilisables (sessions, bases de données SQL/NoSQL, répartition de charge, proxy, développement à chaud).
26- [Un guide pas à pas français et international](https://node-atlas.js.org/), avec un support communautaire sur [Gitter](https://gitter.im/NodeAtlas) (Chat) [FR](https://gitter.im/NodeAtlas/Aide)/[EN](https://gitter.im/NodeAtlas/Help).
27- Des passionnés de web et de JavaScript <3 !
28- Et peut-être bientôt vous ?
29
30
31
32## Site officiel de NodeAtlas ##
33
34> **[Pour une documentation complète, vous pouvez vous rendre sur le site officiel de NodeAtlas](https://node-atlas.js.org/)** ([README.md mirroir ici](https://github.com/Haeresis/NodeAtlas/blob/gh-pages/README.fr.md)).
35
36- [README de la v1.x](https://github.com/Haeresis/NodeAtlas/blob/gh-pages/v1.x/README.fr.md).
37
38- [v1.x -> v2.x see CHANGELOG](https://github.com/NodeAtlas/node-atlas/blob/master/CHANGELOG.md).
39
40### Exemple de sites ##
41
42- [Tous les exemples fournis par la communauté NodeAtlas sur GitHub](https://github.com/NodeAtlas/).
43
44
45
46## Test rapide ##
47
48Installer
49
50```js
51npm install -g node-atlas
52```
53
54puis essayer un site standard NodeAtlas avec l'aide du `README.md`
55
56```js
57node-atlas --create hello-world
58```
59
60ou essayer un site Vue + NodeAtlas avec rendu côté serveur avec l'aide du `README.md`
61
62```js
63node-atlas --create hello-vue
64```
65
66
67
68## Explication d'utilisation ##
69
70### Étape 1 - Installation ###
71
72Installer *NodeAtlas* avec l'une des deux méthodes suivantes :
73
74- `npm install node-atlas` recommandée pour une utilisation en tant qu'API.
75- `npm install -g node-atlas` recommandée pour une utilisation à la ligne de commande.
76
77
78
79### Étape 2 - Configuration ###
80
81Créer un fichier `webconfig.json` et ses fichiers de dépendances pour configurer votre site.
82
83**website.json** exemple pour le développement :
84
85 ```js
86{
87 "languageCode": "en-gb", /* Définir la langue principale. */
88 "pageNotFound": "/page-404/", /* Assigner une vue dédiée à la page 404. */
89 "view": "common.htm", /* Assigner le layout global aux vues. */
90 "variation": "common.json", /* Assigner les fichiers de variations communes pour la localisation. */
91 "controller": "common.js", /* Assigner les fonctions du contrôleur appelé sur toutes les pages. */
92 "post": false, /* Par défaut, empêcher les requêtes de page en POST. */
93 "bundles": "bundles.json", /* Définir les fichiers CSS et JS concaténés ensemble et minifiés dans un fichier exterieur. */
94 "htmlGenerationBeforeResponse": true, /* Générer la page couramment affichée dans le dossier `serverless`. */
95 "cssBundlingBeforeResponse": true, /* Minifier les CSS dans des fichiers `.min` avant de renvoyer la page. */
96 "jsBundlingBeforeResponse": true, /* Offusquer les JS dans des fichiers `.min` avant de renvoyer la page. */
97 "enableLess": true, /* Utiliser des fichiers Less avec des fichiers `.map` pour la partie développement. */
98 "routes": "route.json" /* Définir toutes les urls fournis par le site dans un fichier extérieur. */
99}
100```
101
102**website.prod.json** exemple pour la production :
103
104```js
105{
106 "httpPort": 7777, /* Définir le vrai port HTTP pour l'application si le port 80 est déjà écouté. */
107 "urlPort": 80, /* Définir le port d'accès pour l'application depuis le net (proxy). */
108 "httpSecure": "security/server", /* Définir le répertoire où trouver les fichiers `server.key` et `server.crt` pour le HTTPs. */
109 "urlHostname": "www.my-website.com", /* Définir le hostname pour l'application sur le net. */
110 "urlRelativeSubPath": "example", /* Définir un sous dossier d'exécution pour l'URL de l'application. Par exemple : `https://www.my-website.com/example/`. */
111 "languageCode": "en-gb",
112 "pageNotFound": "/page-404/",
113 "view": "common.htm",
114 "variation": "common.json",
115 "controller": "common.js",
116 "post": false,
117 "routes": "route.json"
118}
119```
120
121**routes.json** exemple :
122
123```js
124{
125 "home": { /* Définir une clé à utiliser comme référence pour manipuler les paramètres définis ou d'url dans le code. */
126 "url": "/", /* Définir l'url d'accès à la page derrière cette route. */
127 "output": "home.html", /* Définir le chemin d'accès pour enregistrer le rendu au format HTML de manière statique. */
128 "view": "home.htm", /* Assigner une vue utilisée pour présenter l'information. */
129 "variation": "home.json", /* Assigner une variation spécifique utilisée pour localiser la page. */
130 "controller": "home.js" /* Assigner un contrôleur spécifique utilisé pour la page d'accueil (afficher les derniers articles, le nombre d'inscrit, etc.). */
131 },
132 "presentation": {
133 "url": "/presentation/",
134 "output": "presentation.html",
135 "view": "default.htm", /* Même vue utilisée avec... */
136 "variation": "presentation.json" /* ...une variation différente pour générer du contenu de page différent (voir `error`). */
137 },
138 "members": {
139 "url": "/members/",
140 "output": "members.html",
141 "view": "members.htm",
142 "variation": "members.json",
143 "controller": "members.js"
144 },
145 "memberV2": { /* Une nouvelle version de rendu pour les pages `member`. */
146 "url": "/members/:member/", /* La partie `:member` représente le membre courrament demandé... */
147 "output": "members/bob.html", /* ...et un faux utilisateur est utilisé pour un rendu statique dans le dossier des fichiers générés. */
148 "view": "member.htm",
149 "variation": "member.json",
150 "controller": "member.js"
151 },
152 "member": { /* La vieille version de des pages `memberV2`... */
153 "url": "/members-profile/:member/", /* ...avec une vieille route... */
154 "redirect": "/members/:member/", /* ...conservée pour rediriger sur la nouvelle page... */
155 "statusCode": 301 /* ...de manière permanente. */
156 },
157 "contact-us": {
158 "url": "/contact-us/",
159 "output": "contact-us.html",
160 "view": "contact-us.htm",
161 "variation": "contact-us.json",
162 "controller": "contact-us.js",
163 "post": true /* Permettre d'accéder à la page par demande en POST pour envoyer un email avec un formulaire. */
164 },
165 "home-fr-fr": {
166 "url": "/francais/",
167 "output": "francais/bienvenue.html",
168 "view": "home.htm",
169 "variation": "home.json",
170 "controller": "home.js",
171 "languageCode": "fr-fr" /* Un code de langue spécifique pour cette page. */
172 },
173 "presentation-fr-fr": {
174 "url": "/francais/presentation/",
175 "output": "francais/presentation.html",
176 "view": "default.htm",
177 "variation": "presentation.json",
178 "languageCode": "fr-fr"
179 },
180 "members-fr-fr": {
181 "url": "/francais/membres/",
182 "output": "francais/members.html",
183 "view": "members.htm",
184 "variation": "members.json",
185 "controller": "members.js",
186 "languageCode": "fr-fr"
187 },
188 "memberV2-fr-fr": {
189 "url": "/francais/membres/:member/",
190 "output": "francais/members/bob.html",
191 "view": "member.htm",
192 "variation": "member.json",
193 "controller": "member.js",
194 "languageCode": "fr-fr"
195 },
196 "member-fr-fr": {
197 "url": "/profile-de-membres/:member/",
198 "redirect": "/membres/:member/",
199 "statusCode": 301
200 },
201 "contact-us-fr-fr": {
202 "url": "/francais/contactez-nous/",
203 "output": "francais/contactez-nous.html",
204 "view": "contact-us.htm",
205 "variation": "contact-us.json",
206 "languageCode": "fr-fr",
207 "controller": "contact-us.js",
208 "post": true
209 },
210 "error-fr-fr": {
211 "url": "/francais/*", /* Toutes les pages commençant par `/francais/` pour la page d'erreur française. */
212 "output": "francais/page-404.html",
213 "view": "default.htm", /* Vue partagée par différentes routes (voir `presentation`). */
214 "variation": "page-404.json",
215 "languageCode": "fr-fr",
216 "statusCode": 404 /* Un status 404 approprié pour les pages d'erreur. */
217 },
218 "error": {
219 "url": "/page-404/", /* Page d'erreur par défaut défini avec `pageNotFound`. */
220 "output": "page-404.html",
221 "view": "default.htm",
222 "variation": "page-404.json",
223 "statusCode": 404
224 }
225}
226```
227
228autres fichiers...
229
230
231
232### Étape 3 - Création ###
233
234Créer des fichiers pour développer votre site !
235
236Structure de dossier *NodeAtlas* par défaut:
237
238```
239my-website/
240├─ node_modules/ ⤆ Tous les modules Node.js pour votre application.
241│ └─ node-atlas/
242│ ┊┉
243
244├─ assets/ ⤆ Tous les fichiers publiques peuvent être accédés en HTTP(s) sans route specifique définie.
245│ ├─ javascripts/
246│ │ ┊┉
247│ │
248│ ├─ stylesheets/
249│ │ ┊┉
250│ │
251│ ├─ media/
252│ │ ┊┉
253│ │
254│ ┊┉
255
256├─ views/ ⤆ La partie vue avec chaque type de vue pour le rendu.
257│ ├─ common.htm
258│ ├─ home.htm
259│ ├─ default.htm
260│ ┊┉
261│ └─ partials/ ⤆ Toutes les vues réutilisables.
262│ ├─ header.htm
263│ ├─ footer.htm
264│ ┊┉
265
266├─ variations/ ⤆ Tous les fichiers pour le remplissage de contenu avec `en-gb` par défaut…
267│ ├─ common.json
268│ ├─ home.json
269│ ┊┉
270│ │
271│ └─ fr-fr/ ⤆ …et également le `fr-fr`.
272│ ├─ common.json
273│ ├─ home.json
274│ ┊┉
275
276├─ controllers/ ⤆ La partie contrôleur pour manipuler la vue, la variation et les modèles avec les bases de données ou les paramètres d'url.
277│ ├─ common.js
278│ ├─ home.js
279│ ┊┉
280│ ├─ modules/ ⤆ Tous les modules internes.
281│ ├─ form-contact-us.js
282│ ┊┉
283
284├─ models/ ⤆ La partie modèle avec des fichiers de modèle utilisés par les contrôleurs pour remplir les vues.
285│ ┊┉
286
287├─ serverless/ ⤆ Toutes les maquettes HTML générées et utilisables par les Back-end avec autre chose que Node.js.
288│ ┊┉
289
290├─ server.js ⤆ Fichier utilisé pour faire tourner et configurer NodeAtlas pour une utilisation sous forme d'API.
291├─ webconfig.json ⤆ Fichier utilisé pour faire tourner le site sur localhost pour le développement.
292├─ webconfig.prod.json ⤆ Fichier utilisé pour faire tourner le site sur le net pour la production.
293├─ routes.json ⤆ Fichier utilisé par "webconfig.json" et "webconfig.prod.json" pour définir les routes.
294┊┉
295├─ webconfig.prod.en-gb.json ⤆ Fichier exemple utilisé pour faire tourner uniquement les routes `en-gb` sur un port…
296├─ routes.en-gb.json ⤆ …avec le fichier de route anglais…
297├─ webconfig.prod.fr-fr.json ⤆ …et faire tourner les routes `fr-fr` sur un autre port…
298├─ routes.fr-fr.json ⤆ …avec le fichier de route français.
299┊┉
300```
301
302### Étape 4 - Lancement ! ###
303
304Lancer *NodeAtlas* depuis le dossier `my-website` dans votre environnement de développement :
305
306- avec un fichier `server.js`:
307
308```
309node server.js
310```
311
312- avec la CLI :
313
314```
315node-atlas
316```
317
318- pour générer les assets :
319
320```
321node-atlas --generate
322```
323
324Lancer *NodeAtlas* dans votre environnement de production :
325
326- en standard:
327
328```
329node-atlas --path /var/www/my-website/ --webconfig webconfig.prod.json
330```
331
332- avec *Forever*:
333
334```
335forever start /usr/local/lib/node_modules/node-atlas/ --path /var/www/my-website/ --webconfig webconfig.prod.json
336```
337
338
339
340
341
342## Documentation ##
343
344### À propos de NodeAtlas ##
345
346- [Site complet et détaillé](https://node-atlas.js.org/NodeAtlas/)
347- [Pour maintenir et développer node-atlas.js](https://node-atlas.js.org/doc/node-atlas/)
348- [Discuter sur le chat ou demander de l'aide pour NodeAtlas](https://gitter.im/NodeAtlas/Aide)
349
350
351
352
353
354## NodeAtlas vs. les autres ##
355
356| | Type | Top Fonctions | Adapté pour | Node Module Package | Extensions | Sources de données | Langue principale |
357|---------------|---------------------------------------------------|-----------------------------------------|----------------------------------------------------|---------------------|---------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|-----------------------|
358| **NodeAtlas** | Framework Web **MVC(2)** | Simplicité, **Evolutivité**, Modularité | **Sites web**, Apps web, APIs REST, **Maquettage** | Oui | **Plugin Atlas**, Module npm, Middleware Express | **Builtin** : En-memoire, fichier (JSON), REST. Avec **module npm externe** : NoSQL (MongoDB...), SQL (MySql...)** | **Français** |
359| Express | Librairie serveur HTTP | Routage HTTP, middleware | Apps web simple | Oui | Middleware Express | | Anglais |
360| Hapi | Framework serveur HTTP | Modularité, securité | Apps web, APIs | Oui | Plugins Hapi | | Anglais |
361| Sails | Framework Web MVC | Familier à Rails, MVC | Apps web, APIs | Oui | | En memoire, Fichier, PostgreSQL, MySQL, MongoDB | Anglais |
362| Restify | Librairie HTTP REST | Simplicité, Routage REST | APIs REST Simple | Oui | | | Anglais |
363| LoopBack | Framework d'API | Connectivité d'Entreprise | Apps web, APIs | Oui | | En mémoire/fichier, SQL NoSQL, ATG, Email, REST, SOAP | Anglais |
364| Meteor | Platforme d'app JavaScript côté client et serveur | Framework Front-end et Back-end | Apps web | Non | Package et repository Meteor, Module npm | MongoDB, MySQL and PostgreSQL via 3rd-party Meteor packages | Anglais |
\No newline at end of file