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
description: Exemple de données asynchrones avec Nuxt.js
4
4
github: async-data
5
5
documentation: /guide/async-data
6
-
---
7
-
8
-
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
> Nuxt.js can be used to create authenticated routes easily.
11
+
> Nuxt.js peut être utilisé pour créer facilement des routes authentifiées.
12
12
13
-
## Using Express and Sessions
13
+
## Utilisation de Express et des sessions
14
14
15
-
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p><p>To add the sessions feature in our application, we will use `express` and `express-session`, for this, we need to use Nuxt.js programmatically.</p>
15
+
Pour ajouter la fonctionnalité de sessions dans notre application, nous utiliserons `express` et `express-session`. Pour cela, nous devons utiliser Nuxt.js de manière programmatique.
//Analyse du corps de requête pour y accéder via `req.body`
32
34
app.use(bodyParser.json())
33
35
34
-
//Sessions to create req.session
36
+
//Mise en place de sessions pour y accéder via `req.session`
35
37
app.use(session({
36
38
secret:'super-secret-key',
37
39
resave:false,
38
40
saveUninitialized:false,
39
41
cookie: { maxAge:60000 }
40
42
}))
41
43
42
-
//POST /api/login to log in the user and add him to the req.session.authUser
44
+
//Accès à `/api/login` en POST pour connecter l'utilisateur et l'ajouter à `req.session.authUser`
43
45
app.post('/api/login', function (req, res) {
44
46
if (req.body.username==='demo'&&req.body.password==='demo') {
45
47
req.session.authUser= { username:'demo' }
@@ -48,16 +50,16 @@ app.post('/api/login', function (req, res) {
48
50
res.status(401).json({ error:'Bad credentials' })
49
51
})
50
52
51
-
//POST /api/logout to log out the user and remove it from the req.session
53
+
//Accès à `/api/logout` en POST pour déconnecter l'utilisateur et le retirer de `req.session`
52
54
app.post('/api/logout', function (req, res) {
53
55
deletereq.session.authUser
54
56
res.json({ ok:true })
55
57
})
56
58
57
-
//We instantiate Nuxt.js with the options
59
+
//Nous instancions Nuxt.js avec les options
58
60
constisProd=process.env.NODE_ENV==='production'
59
61
constnuxt=newNuxt({ dev:!isProd })
60
-
//No build in production
62
+
//Pas de build en production
61
63
if (!isProd) {
62
64
constbuilder=newBuilder(nuxt)
63
65
builder.build()
@@ -67,7 +69,8 @@ app.listen(3000)
67
69
console.log('Server is listening on http://localhost:3000')
68
70
```
69
71
70
-
And we update our `package.json` scripts:
72
+
Et nous modifions nos scripts dans `package.json` :
73
+
71
74
```json
72
75
// ...
73
76
"scripts": {
@@ -77,24 +80,25 @@ And we update our `package.json` scripts:
77
80
}
78
81
// ...
79
82
```
80
-
Note: You'll need to run `npm install --save-dev cross-env` for the above example to work. If you're *not* developing on Windows you can leave cross-env out of your `start` script and set `NODE_ENV` directly.
81
83
82
-
## Using the store
84
+
Note : vous devrez exécuter `npm install --save-dev cross-env` afin de faire fonctionner l'exemple précédent. Si vous n'êtes pas en train de développer sur Windows, vous pouvez laisser cross-env en dehors de votre script `start` et définir `NODE_ENV` directement.
85
+
86
+
## Utilisation du store
83
87
84
-
We need a global state to let our application know if the user is connected **across the pages**.
88
+
Nous avons besoin d'un état global pour informer notre application si l'utilisateur reste **connecté entre les pages**.
85
89
86
-
To let Nuxt.js use Vuex, we create a `store/index.js` file:
90
+
Pour laisser Nuxt.js utiliser Vuex, nous créons un fichier `store/index.js`:
87
91
88
92
```js
89
93
importVuefrom'vue'
90
94
importVuexfrom'vuex'
91
95
92
96
Vue.use(Vuex)
93
97
94
-
// Polyfill for window.fetch()
98
+
// Polyfill pour `window.fetch()`
95
99
require('whatwg-fetch')
96
100
97
-
conststore=() =>newVuex.Store({
101
+
conststore=newVuex.Store({
98
102
99
103
state: {
100
104
authUser:null
@@ -115,16 +119,17 @@ const store = () => new Vuex.Store({
115
119
exportdefaultstore
116
120
```
117
121
118
-
1.We import`Vue`and`Vuex` (included in Nuxt.js) and we tell Vue to use Vuex to let us use`$store`in our components
119
-
2.We `require('whatwg-fetch')`to polyfill the `fetch()`method across all browsers (see [fetch repo](https://github.com/github/fetch))
120
-
3.We create our `SET_USER`mutation which will set the `state.authUser`to the connected user
121
-
4.We export our store instance to Nuxt.js can inject it to our main application
122
+
1.Nous importons`Vue`et`Vuex` (inclus dans Nuxt.js) et nous indiquons à Vue d'utiliser Vuex afin de pouvoir utiliser`$store`dans nos composants.
123
+
2.Nous utilisons `require('whatwg-fetch')`afin d'obtenir un polyfill pour la méthode `fetch()`pour tous les navigateurs (consultez le [dépôt fetch](https://github.com/github/fetch)).
124
+
3.Nous créons notre mutation `SET_USER`qui va instancier `state.authUser`avec l'utilisateur connecté.
125
+
4.Nous exportons notre instance du *store* vers Nuxt.js afin qu'il puisse l'injecter dans notre application principale.
122
126
123
-
### nuxtServerInit() action
127
+
### Fonction nuxtServerInit()
124
128
125
-
Nuxt.js will call a specific action called `nuxtServerInit` with the context in argument, so when the app will be loaded, the store will be already filled with some data we can get from the server.
129
+
Nuxt.js appellera une action spécifique nommée `nuxtServerInit` avec le contexte comme argument. Ainsi, lorsque l'application sera chargée, le store sera déjà rempli avec certaines données que nous pouvons obtenir du serveur.
130
+
131
+
Dans notre `store/index.js`, nous pouvons ajouter l'action `nuxtServerInit` :
126
132
127
-
In our `store/index.js`, we can add the `nuxtServerInit` action:
To make the data method asynchronous, nuxt.js offers you different ways, choose the one you're the most familiar with:
141
+
Pour rendre la méthode de données asynchrone, Nuxt.js vous offre différents moyens, choisissez celui avec lequel vous êtes le plus à l'aise :
142
+
143
+
1. Retourner une `Promise`, Nuxt.js attendra la résolution de la promesse avant d'afficher le composant.
144
+
2. En utilisant [`async` / `await`](https://github.com/lukehoban/ecmascript-asyncawait) ([en savoir plus](https://zeit.co/blog/async-and-await)).
137
145
138
-
1. returning a `Promise`, nuxt.js will wait for the promise to be resolved before rendering the component.
139
-
2. Using the [async/await proposal](https://github.com/lukehoban/ecmascript-asyncawait) ([learn more about it](https://zeit.co/blog/async-and-await))
146
+
### L'action login()
140
147
141
-
### login() action
148
+
Nous ajoutons une action`login` qui sera appelée à partir de nos composants de pages pour connecter l'utilisateur :
142
149
143
-
We add a `login` action which will be called from our pages component to log in the user:
Ensuite, nous pouvons utiliser `$store.state.authUser` dans nos composants de pages pour vérifier si l'utilisateur est connecté ou non dans notre application.
187
195
188
-
Then we can use `$store.state.authUser` in our pages components to check if the user is connected in our application or not.
196
+
### Rediriger l'utilisateur s'il n'est pas connecté
189
197
190
-
### Redirect user if not connected
198
+
Ajoutons une route `/secret` dont le contenu ne peut être vu que par un utilisateur connecté :
191
199
192
-
Let's add a `/secret` route where only the connected user can see its content:
193
200
```html
194
201
<template>
195
202
<div>
196
-
<h1>Super secret page</h1>
197
-
<router-linkto="/">Back to the home page</router-link>
203
+
<h1>Page super secrète</h1>
204
+
<router-linkto="/">Retour à l'accueil</router-link>
198
205
</div>
199
206
</template>
200
207
201
208
<script>
202
209
exportdefault {
203
-
//we use fetch() because we do not need to set data to this component
210
+
//Nous utilisons`fetch()` car nous n'avons pas besoin d'associer les données à ce composant
204
211
fetch ({ store, redirect }) {
205
212
if (!store.state.authUser) {
206
213
returnredirect('/')
@@ -210,4 +217,4 @@ export default {
210
217
</script>
211
218
```
212
219
213
-
We can see in the `fetch`method that we call `redirect('/')`when our user is not connected.
220
+
Nous pouvons voir dans la méthode `fetch`que nous appelons `redirect('/')`lorsque notre utilisateur n'est pas connecté.
description: Cached Components example with Nuxt.js
2
+
title: Composants en cache
3
+
description: Exemple de composants mis en cache avec Nuxt.js
4
4
github: cached-components
5
5
documentation: /api/configuration-cache
6
6
---
7
-
8
-
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
description: Custom Loading Component example with Nuxt.js
2
+
title: Composant de chargement personnalisé
3
+
description: Exemple de composant de chargement personnalisé avec Nuxt.js
4
4
github: custom-loading
5
5
livedemo: https://custom-loading.nuxtjs.org
6
6
documentation: /api/configuration-loading
7
-
---
8
-
9
-
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
description: Exemple de routes personnalisées avec Nuxt.js
4
4
github: custom-routes
5
5
livedemo: https://custom-routes.nuxtjs.org
6
-
documentation: /guide/routing#dynamic-routes
7
-
---
8
-
9
-
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
description: Internationalization (i18n) example with Nuxt.js
2
+
title: Internationalisation (i18n)
3
+
description: Exemple d'internationalisation (i18n) avec Nuxt.js
4
4
github: i18n
5
5
livedemo: https://i18n.nuxtjs.org
6
6
documentation: /guide/routing#middleware
7
-
---
8
-
9
-
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
<pstyle="width: 294px;position: fixed; top : 64px; right: 4px;"class="Alert Alert--orange"><strong>⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou <ahref="https://github.com/vuejs-fr/nuxt"target="_blank">participer à la traduction</a> de celle-ci dès maintenant !</strong></p>
0 commit comments