Skip to content

Commit 2fe007f

Browse files
KehoKeho
authored andcommitted
modifié : 02s-deploying.md.erb
modifié : 03-templates.md.erb
1 parent 7072ed8 commit 2fe007f

File tree

2 files changed

+44
-91
lines changed

2 files changed

+44
-91
lines changed

02s-deploying.md.erb

Lines changed: 5 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Déployer sur Meteor est simple. Ouvrez juste votre terminal allez dans le répe
3838
meteor deploy myapp.meteor.com
3939
~~~
4040

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é.
4242

4343
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`.
4444

@@ -48,47 +48,7 @@ Vous pouvez vous référer à [la documentation officielle](http://docs.meteor.c
4848

4949
[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.
5050

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).
9252

9353
### Meteor Up
9454

@@ -177,7 +137,7 @@ Si vous avez décidé d'utiliser Compose, mettez `setupMongo` à `false` et ajou
177137

178138
**Chemin de l'application Meteor**
179139

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.
181141

182142
**Variables d'environnement**
183143

@@ -191,7 +151,7 @@ Avant qu'on puisse déployer nous allons avoir besoin de configurer le serveur p
191151
mup setup
192152
~~~
193153

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 :
195155

196156
~~~bash
197157
mup deploy
@@ -209,4 +169,4 @@ mup logs -f
209169

210170
Ç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).
211171

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 !

03-templates.md.erb

Lines changed: 39 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,42 @@ number: 3
66
points: 1
77
photoUrl: http://www.flickr.com/photos/73449134@N04/8194499092/
88
photoAuthor: Mike Lewinski
9-
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.
1010
paragraphs: 46
1111
---
1212

1313
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.
1414

1515
Ce qui veut dire que dans ce chapitre nous nous occuperons de ce qu'il se passe dans le répertoire `/client`.
1616

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 :
1818

1919
~~~html
2020
<head>
2121
<title>Microscope</title>
2222
</head>
2323
<body>
2424
<div class="container">
25-
<header class="navbar">
26-
<div class="navbar-inner">
27-
<a class="brand" href="/">Microscope</a>
25+
<header class="navbar navbar-default" role="navigation">
26+
<div class="navbar-header">
27+
<a class="navbar-brand" href="/">Microscope</a>
2828
</div>
2929
</header>
30-
<div id="main" class="row-fluid">
30+
<div id="main">
3131
{{> postsList}}
3232
</div>
3333
</div>
3434
</body>
3535
~~~
3636
<%= caption "client/main.html" %>
3737

38-
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.
3939

4040
### Les templates Meteor
4141

4242
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.
4343

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).
4545

4646
<% note do %>
4747

@@ -53,7 +53,7 @@ Ca signifie également que vous pourriez aussi bien mettre tous vos fichiers dan
5353

5454
<% end %>
5555

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` :
5757

5858
~~~html
5959
<template name="postsList">
@@ -64,7 +64,7 @@ Nous sommes finalement prêt pour créer notre second template. Dans `client/vie
6464
</div>
6565
</template>
6666
~~~
67-
<%= caption "client/views/posts/posts_list.html" %>
67+
<%= caption "client/templates/posts/posts_list.html" %>
6868

6969
Et `post_item.html` :
7070

@@ -77,13 +77,13 @@ Et `post_item.html` :
7777
</div>
7878
</template>
7979
~~~
80-
<%= caption "client/views/posts/post_item.html" %>
80+
<%= caption "client/templates/posts/post_item.html" %>
8181

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ù.
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).
8383

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*.
8585

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`).
8787

8888
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).
8989

@@ -93,94 +93,87 @@ Finalement, les *block helpers* sont des balises spéciales qui contrôlent le f
9393

9494
### Aller plus loin
9595

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.
9797

9898
<% end %>
9999

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.
101101

102102
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`.
103103

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.
105105

106106
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.
107107

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-
110108
### Template Managers
111109

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.
113111

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.
115113

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.
117115

118116
<% note do %>
119117

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 ?
123119

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.
125121

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.
127123

128124
<% end %>
129125

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 :
131127

132128
~~~js
133129
var postsData = [
134130
{
135131
title: 'Introducing Telescope',
136-
author: 'Sacha Greif',
137132
url: 'http://sachagreif.com/introducing-telescope/'
138133
},
139134
{
140135
title: 'Meteor',
141-
author: 'Tom Coleman',
142136
url: 'http://meteor.com'
143137
},
144138
{
145139
title: 'The Meteor Book',
146-
author: 'Tom Coleman',
147140
url: 'http://themeteorbook.com'
148141
}
149142
];
150143
Template.postsList.helpers({
151144
posts: postsData
152145
});
153146
~~~
154-
<%= caption "client/views/posts/posts_list.js" %>
147+
<%= caption "client/templates/posts/posts_list.js" %>
155148

156149
Si vous l'avez fait correctement, vous devriez avoir quelque choses de similaire à ça dans votre navigateur :
157150

158151
<%= screenshot "3-1", "Nos premiers templates avec données statiques" %>
159152

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.
163154

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.
165156

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` :
167158

168159
~~~html
169160
<template name="postsList">
170-
<div class="posts">
161+
<div class="posts page">
171162
{{#each posts}}
172163
{{> postItem}}
173164
{{/each}}
174165
</div>
175166
</template>
176167
~~~
177-
<%= caption "client/views/posts/posts_list.html" %>
168+
<%= caption "client/templates/posts/posts_list.html" %>
169+
170+
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`.
178171

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." %>
180173

181-
### La valeur de "this"
174+
### Le helper de `domain`
182175

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` :
184177

185178
~~~js
186179
Template.postItem.helpers({
@@ -191,9 +184,7 @@ Template.postItem.helpers({
191184
}
192185
});
193186
~~~
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" %>
197188

198189
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.
199190

@@ -207,6 +198,8 @@ Ca signifie qu'à l'intérieur des deux balises `{{#each}}`, chaque article (pos
207198

208199
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.
209200

201+
<%= commit "3-2", "Configurer un helper `domain` à partir du `postItem`." %>
202+
210203
<% note do %>
211204

212205
### Magie JavaScript
@@ -229,6 +222,6 @@ Vous avez pu noter que vous n'aviez même pas eu besoin de recharger manuellemen
229222

230223
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.
231224

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 !
233226

234227
<% end %>

0 commit comments

Comments
 (0)