You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 02s-deploying.md.erb
+5-45Lines changed: 5 additions & 45 deletions
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ Déployer sur Meteor est simple. Ouvrez juste votre terminal allez dans le répe
38
38
meteor deploy myapp.meteor.com
39
39
~~~
40
40
41
-
Bien sûr, vous devrez faire attention à remplacer "myapp" avec un nom de votre choix, de préférence un qui n'est pas déjà utilisé.
41
+
Bien sûr, vous devrez faire attention à remplacer "myapp" avec un nom de votre choix, de préférence un qui n'est pas déjà utilisé.
42
42
43
43
Si c'est votre premier déploiement d'application, il vous sera demandé de créer un compte Meteor. Et si tout va bien après quelques secondes vous serez capable d'accéder à votre application à l'adresse `http://myapp.meteor.com`.
[Modulus](https://modulus.io/) est une bonne option pour déployer des applications Node.js. C'est un des fournisseurs PaaS (platform-as-a-service) qui supporte officiellement Meteor, et il y a déjà quelques personnes qui exécutent des applications Meteor en production dessus.
50
50
51
-
<% note do %>
52
-
53
-
### Demeteorizer
54
-
55
-
Modulus a rendu open-source un outil appelé [demeteorizer](https://github.com/onmodulus/demeteorizer) qui convertit votre application Meteor dans une application NodeJS standard.
56
-
57
-
<% end %>
58
-
59
-
Commencez par [créer un compte](https://modulus.io/register). Pour déployer une application sur Modulus, nous aurons besoin d'installer l'outil en ligne de commande de Modulus :
60
-
61
-
~~~bash
62
-
npm install -g modulus
63
-
~~~
64
-
65
-
Et s'authentifier avec :
66
-
67
-
~~~bash
68
-
modulus login
69
-
~~~
70
-
71
-
Nous allons créer un projet Modulus (notez que vous pouvez également faire ça via le tableau de bord web de Modulus) :
72
-
73
-
~~~bash
74
-
modulus project create
75
-
~~~
76
-
77
-
L'étape suivante sera de créer une base de données MongoDB pour notre application. Nous pouvons créer une base de données MongoDB avec [Modulus lui-même](https://modulus.io/codex/database/getting_started), [Compose](https://www.compose.io/) ou avec un autre founisseur de cloud MongoDB.
78
-
79
-
Une fois que nous avons créé notre base de données MongoDB, nous pouvons obtenir le paramètre 'MONGO_URL' pour notre base de données de l'UI web de Modulus (Dashboard > Databases > Select your database > Administration), puis utilisez le pour configurer votre application comme ceci :
80
-
81
-
~~~bash
82
-
modulus env set MONGO_URL "mongodb://<user>:<pass>@mongo.onmodulus.net:27017/<database_name>"
83
-
~~~
84
-
85
-
Il est temps maintenant de déployer votre application. C'est aussi simple que taper :
86
-
87
-
~~~bash
88
-
modulus deploy
89
-
~~~
90
-
91
-
Nous avons maintenant déployé avec succès notre application sur Modulus. Référez vous à [la documentation Modulus](https://modulus.io/codex/projects) pour plus d'informations à propos de l'accès aux logs, la configuration des domaines personnalisés et SSL.
51
+
Vous pouvez en apprendre plus à propos de Modulus en lisant leur [guide de déploiement pour application Meteor](http://help.modulus.io/customer/portal/articles/1647770-using-meteor-with-modulus).
92
52
93
53
### Meteor Up
94
54
@@ -177,7 +137,7 @@ Si vous avez décidé d'utiliser Compose, mettez `setupMongo` à `false` et ajou
177
137
178
138
**Chemin de l'application Meteor**
179
139
180
-
Maintenant que notre configuration Meteor Up a pris vie dans un répertoire différent, nous allons avoir besoin de faire pointer Meteor Up vers notre application en utilisant la propriété `app`. Entrez juste votre chemin local complet, que vous pouvez trouver en utilisant la commande `pwd` dans le temrinal quand vous êtes placé dans votre répertoire.
140
+
Maintenant que notre configuration Meteor Up a pris vie dans un répertoire différent, nous allons avoir besoin de faire pointer Meteor Up vers notre application en utilisant la propriété `app`. Entrez juste votre chemin local complet, que vous pouvez trouver en utilisant la commande `pwd` dans le temrinal quand vous êtes placé dans votre répertoire.
181
141
182
142
**Variables d'environnement**
183
143
@@ -191,7 +151,7 @@ Avant qu'on puisse déployer nous allons avoir besoin de configurer le serveur p
191
151
mup setup
192
152
~~~
193
153
194
-
Ça prendre quelques minutes en fonction de la performance du serveur et de la connectivité réseau. Après le succès de l'installation, vous pouvez finalement déployer votre application avec :
154
+
Ça va prendre quelques minutes en fonction de la performance du serveur et de la connectivité réseau. Après le succès de l'installation, vous pouvez finalement déployer votre application avec :
195
155
196
156
~~~bash
197
157
mup deploy
@@ -209,4 +169,4 @@ mup logs -f
209
169
210
170
Ça vous donne une vue d'ensemble des capacités de Meteor Up. Pour plus d'informations, nous vous suggérons de visiter [le dépôt Github de Meteor Up](https://github.com/arunoda/meteor-up).
211
171
212
-
Ces trois façons de déployer des applications Meteor devrait être suffisantes pour la plupart des cas. Bien sûr, nous savons que plusieurs d'entre vous préféreront avoir un contrôle complet et configurer leur serveur Meteor de bout en bout. Mais c'est un sujet pour un autre jour... ou peut-être un autre livre !
172
+
Ces trois façons de déployer des applications Meteor devrait être suffisantes pour la plupart des cas. Bien sûr, nous savons que plusieurs d'entre vous préféreront avoir un contrôle complet et configurer leur serveur Meteor de bout en bout. Mais c'est un sujet pour un autre jour… ou peut-être un autre livre !
contents: Découvrir le langage de templating de Meteor, Handlebars.|Créer vos trois premiers templates.|Comment fonctionne les managers de Meteor.|Avoir un prototype de base fonctionnel avec des données statiques.
9
+
contents: Découvrir le langage de templating de Meteor, Spacebars.|Créer vos trois premiers templates.|Comment fonctionne les managers de Meteor.|Avoir un prototype de base fonctionnel avec des données statiques.
10
10
paragraphs: 46
11
11
---
12
12
13
13
Pour faciliter le développement dans Meteor, nous allons adopter une approche de l'extérieur vers l'intérieur. En d'autres termes, nous allons créer une simple page html/javascript, puis nous la rattacherons à la mécanique interne de l'application plus tard.
14
14
15
15
Ce qui veut dire que dans ce chapitre nous nous occuperons de ce qu'il se passe dans le répertoire `/client`.
16
16
17
-
Créez un nouveau fichier appelé `main.html` dans votre répertoire `/client` et insérez le code suivant :
17
+
Si vous ne l'avez pas déjà fait, créez un nouveau fichier appelé `main.html` dans votre répertoire `/client` et insérez le code suivant :
Ce sera le template principal de notre application. Comme vous pouvez le voir c'est du langage HTML excepté pour la balise `{{> postsList}}`, qui est un point d'insertion pour le template `postsList` que nous verrons bientôt. Maintenant, créez deux templates supplémentaires.
38
+
Ce sera le template principal de notre application. Comme vous pouvez le voir c'est du langage HTML excepté pour la balise d'inclusion de template `{{> postsList}}`, qui est un point d'insertion pour le template `postsList` que nous verrons bientôt. Maintenant, créez deux templates supplémentaires.
39
39
40
40
### Les templates Meteor
41
41
42
42
En son coeur, un site d'actualités social est composé d'articles organisés en listes, et c'est exactement de cette façon que nous allons organiser nos templates.
43
43
44
-
Créons un répertoire `/views` dans `/client`. C'est ici que nous mettrons tous nos templates, et pour garder les choses en ordre nous allons également créer `/posts` dans `/views` juste pour nos templates relatifs aux articles (posts).
44
+
Créons un répertoire `/templates` dans `/client`. C'est ici que nous mettrons tous nos templates, et pour garder les choses en ordre nous allons également créer `/posts` dans `/templates` juste pour nos templates relatifs aux articles (posts).
45
45
46
46
<%notedo%>
47
47
@@ -53,7 +53,7 @@ Ca signifie également que vous pourriez aussi bien mettre tous vos fichiers dan
53
53
54
54
<%end%>
55
55
56
-
Nous sommes finalement prêt pour créer notre second template. Dans `client/views/posts`, créez `posts_list.html` :
56
+
Nous sommes finalement prêt pour créer notre second template. Dans `client/templates/posts`, créez `posts_list.html` :
57
57
58
58
~~~html
59
59
<templatename="postsList">
@@ -64,7 +64,7 @@ Nous sommes finalement prêt pour créer notre second template. Dans `client/vie
Notez l'attribut `name="postsList"` de la balise template. C'est le nom qui sera utilisé par Meteor pour garder la trace de quel template va où.
82
+
Notez l'attribut `name="postsList"` de la balise template. C'est le nom qui sera utilisé par Meteor pour garder la trace de quel template va où (le nom du fichier n'est pas important).
83
83
84
-
Il est temps de présenter le système de templating de Meteor, [Handlebars](http://handlebarsjs.com/). Handlebars est du html simple, avec l'ajout de trois choses : *partials*, *expressions* et *block helpers*.
84
+
Il est temps de présenter le système de templating de Meteor, **Spacebars**. Spacebars est du html simple, avec l'ajout de trois choses : *inclusions* (parfois désignée sous le nom de "partials"), *expressions* et *block helpers*.
85
85
86
-
*Partials* utilise la syntaxe `{{> templateName}}`, et dit simplement à Meteor de remplacer le partial avec le template du même nom (dans notre cas `postItem`).
86
+
*Inclusions* utilise la syntaxe `{{> templateName}}`, et dit simplement à Meteor de remplacer l'inclusion avec le template du même nom (dans notre cas `postItem`).
87
87
88
88
Expressions telles que `{{title}}` appelle une propriété de l'objet courant, ou retourne la valeur du template helper comme défini dans le template manager courant (plus d'information sur ce sujet plus tard).
89
89
@@ -93,94 +93,87 @@ Finalement, les *block helpers* sont des balises spéciales qui contrôlent le f
93
93
94
94
### Aller plus loin
95
95
96
-
Vous pouvez consulter le [site officiel d'Handlebars](http://handlebarsjs.com/) ou ce [tutorial pratique](http://javascriptissexy.com/handlebars-js-tutorial-learn-everything-about-handlebars-js-javascript-templating/) si vous voulez en apprendre plus à propos d'Handlebars.
96
+
Vous pouvez consulter la [documentation Spacebars](https://github.com/meteor/meteor/blob/devel/packages/spacebars/README.md) si vous voulez en apprendre plus à propos de Spacebars.
97
97
98
98
<%end%>
99
99
100
-
Armé avec cette connaissance, vous pouvez aisément comprendre ce qu'il se passe ici.
100
+
Armé de cette connaissance, vous pouvez dorénavant comprendre ce qui se passe ici.
101
101
102
102
Premièrement, dans le template `postsList`, nous faisons des itérations dans un objet posts avec le block helper {{#each}}...{{/each}}. Ensuite, pour chaque itération nous allons inclure le template `postItem`.
103
103
104
-
D'où vient l'object `posts` ? Bonne question. C'est un template helper, et nous allons le définir quand nous regarderons les template managers.
104
+
D'où vient cet objet `posts` ? Bonne question. C'est un **template helper** ; vous pouvez vous l'imaginer comme un substitut à un contenu dynamique.
105
105
106
106
Le template `postItem` lui-même est assez simple. Il utilise trois expression : `{{url}}` et `{{title}}` retourne des propriétés du document, et `{{domain}}` appelle un template helper.
107
107
108
-
Nous avons souvent mentionné "template helpers" au travers de ce chapitre sans vraiment expliquer ce qu'ils font. Mais afin de corriger ça, nous devons d'abord parler des managers.
109
-
110
108
### Template Managers
111
109
112
-
Jusqu'à maintenant, nous avons travaillé avec Handlebars, qui est du HTML avec quelques balises parsemées dedans. Contrairement aux autres langages tel que PHP (ou même des pages HTML classiques, qui contiennent du javascript), Meteor garde les templates et leur logique séparés, et ces templates ne font rien par eux-même.
110
+
Jusqu'à maintenant, nous avons travaillé avec Spacebars, qui est du HTML avec quelques balises parsemées dedans. Contrairement aux autres langages tel que PHP (ou même des pages HTML classiques, qui contiennent du javascript), Meteor garde les templates et leur logique séparés, et ces templates ne font rien par eux-même.
113
111
114
-
Afin d'exister, un template a besoin d'un **manager**. Vous pouvez imaginer le manager comme un chef qui prend des ingrédients bruts (vos données) et les prépare, avant de dresser une assiette qu'il va donner à un serveur (le template) qui ensuite va les présenter pour vous.
112
+
Afin d'exister, un template a besoin de **helpers**. Vous pouvez imaginer ces helpers comme un chef qui prend des ingrédients crus (vos données) et les prépare, avant de dresser une assiette (les templates) qu'il va donner à un serveur qui va ensuite vous les présenter.
115
113
116
-
En d'autres termes, pendant que le rôle du template est limité à l'affichage et aux itérations dans les variables, le manager est celui qui fait le gros travail en assignant une valeur à chaque variable.
114
+
En d'autres termes, pendant que le rôle du template est limité à l'affichage et aux itérations dans les variables, c'est celui des helpers qui fait en réalité le gros du travail en assignant une valeur à chaque variable.
117
115
118
116
<%notedo%>
119
117
120
-
### Managers ?
121
-
122
-
Quand nous demandons pour voir ce que les autres développeurs Meteor appelle les templates managers, la moitié dit des "controllers", et l'autre dit "ces fichiers où je met mon code javascript".
118
+
### Des controllers ?
123
119
124
-
Les managers ne sont pas vraiment des "controllers" (du moins, pas dans le sens de controllers MVC) et "CFOJMMCJS" n'est pas vraiment très parlant, donc nous rejetons les deux propositions.
120
+
Il peut sembler tentant de penser aux fichiers contenant tous les helpers d'un template comme une sorte de "controller". Mais cela peut être ambigu, puisque les "controllers" (du moins du point de vue MVC) ont habituellement un rôle légèrement différent.
125
121
126
-
Etant donné que nous cherchons encore une façon d'indiquer de quoi nous parlons, nous reviendrons sur le terme "manager" comme un raccourci pratique qui n'a pas de signification déjà existante aussi loin que les frameworks web existent.
122
+
Nous avons donc décidé de ne pas utiliser cette terminologie et de nous référer simplement à "les helpers du template" ou à "la logique du template" lorsque nous parlons du code JavaScript associé au template.
127
123
128
124
<%end%>
129
125
130
-
Pour garder les choses simples, nous allons nommer le manager comme le template, à l'exception du .js. Donc créons directement `posts_list.js` dans `/client/views/posts` et commençons à construire notre premier manager :
126
+
Pour garder les choses simples, nous allons nommer les fichiers contenant les helpers comme le template, mais avec une extension **.js**. Créons donc directement `posts_list.js` dans `/client/templates/posts` et commençons à construire notre premier helper :
Si vous l'avez fait correctement, vous devriez avoir quelque choses de similaire à ça dans votre navigateur :
157
150
158
151
<%=screenshot"3-1","Nos premiers templates avec données statiques"%>
159
152
160
-
<%=commit"3-1","Ajout d'un template d'une liste basique d'articles et de données statiques."%>
161
-
162
-
Nous faisons deux choses ici. Premièrement, nous insérons des données prototype dans le tableau `postsData`. Ces données viendrait normalement de la base de données, mais comme nous n'avons pas encore vu comment faire (prochain chapitre) nous allons tricher en utilisant des données statiques.
153
+
Nous faisons deux choses ici. Premièrement, nous insérons des données prototype dans le tableau `postsData`. Ces données viendraient normalement de la base de données, mais comme nous n'avons pas encore vu comment faire (prochain chapitre) nous allons tricher en utilisant des données statiques.
163
154
164
-
Deuxièmement, nous utilisons la fonction `Template.myTemplate.helpers()` pour définir un template helper appelé `posts` qui retourne simplement un tableau `postsData`.
155
+
Deuxièmement, nous utilisons la fonction `Template.myTemplate.helpers()` pour définir un template helper appelé `posts` qui retourne le tableau `postsData` défini auparavant.
165
156
166
-
Définir le helper `posts` signifie qu'il est désormais disponible à l'utilisation pour notre template :
157
+
Si vous vous souvenez, nous utilisons ce helper de `posts` dans notre template `postsList` :
Définir le helper de `posts` implique qu'il est maintenant disponible pour notre template, donc notre template sera capable de faire des itérations sur le tableau `postsData`, et d'envoyer chaque objet vers le template `postItem`.
178
171
179
-
Maintenant notre template sera capable de faire des itérations sur le tableau `postsData`, et d'envoyer chaque objet vers le template `postItem`.
172
+
<%=commit"3-1","Avec le template basique de posts list et les données statiques."%>
180
173
181
-
### La valeur de "this"
174
+
### Le helper de `domain`
182
175
183
-
Nous allons créer le manager `post_item.js` :
176
+
De même, nous allons créer `post_item.js` pour y renseigner la logique du template de `postItem` :
184
177
185
178
~~~js
186
179
Template.postItem.helpers({
@@ -191,9 +184,7 @@ Template.postItem.helpers({
191
184
}
192
185
});
193
186
~~~
194
-
<%=caption"client/views/posts/post_item.js"%>
195
-
196
-
<%=commit"3-2","Configurer un helper `domain` à partir du `postItem`."%>
187
+
<%=caption"client/templates/posts/post_item.js"%>
197
188
198
189
Cette fois la valeur du helper `domain` n'est pas un tableau, mais une fonction anonyme. Ce modèle est bien plus commun (et plus utile) comparé à nos précédents exemples de données simples.
199
190
@@ -207,6 +198,8 @@ Ca signifie qu'à l'intérieur des deux balises `{{#each}}`, chaque article (pos
207
198
208
199
Nous comprenons maintenant pourquoi `this.url` retourne l'URL de l'article courant. De plus, si nous utilisons `{{title}}` et `{{url}}` dans notre template `post_item.html`, Meteor sait ce que veut dire `this.title` et `this.url` et retourne les valeurs correctes.
209
200
201
+
<%=commit"3-2","Configurer un helper `domain` à partir du `postItem`."%>
202
+
210
203
<%notedo%>
211
204
212
205
### Magie JavaScript
@@ -229,6 +222,6 @@ Vous avez pu noter que vous n'aviez même pas eu besoin de recharger manuellemen
229
222
230
223
C'est parce que Meteor traque tous les fichiers dans le répertoire de votre projet, et rafraîchit automatiquement le navigateur quand il détecte une modification sur l'un d'entre eux.
231
224
232
-
Le Hot Code Reload de Meteor est très intelligent, en préservant même l'état de votre application entre deux rafraichissements
225
+
Le Hot Code Reload de Meteor est très intelligent, en préservant même l'état de votre application entre deux rafraichissements !
0 commit comments