2016-12-13 14:50:23 +00:00
|
|
|
# Démarrage Rapide
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Electron vous permet de créer des applications de bureau avec du JavaScript
|
|
|
|
fournissant un runtime avec des API riches natives (système d'exploitation).
|
|
|
|
Vous pourriez le voir comme une variante d'un Node.js directement exécutable
|
2016-12-13 14:50:23 +00:00
|
|
|
sur le bureau au lieu des serveurs Web.
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Cela ne signifie pas que Electron est une liaison JavaScript à l'interface
|
|
|
|
utilisateur graphique (GUI). Au lieu de cela, Electron utilise des pages
|
|
|
|
Web comme GUI, donc vous pouvez aussi le voir comme un navigateur minimal
|
2016-12-13 14:50:23 +00:00
|
|
|
Chromium, contrôlé par JavaScript.
|
|
|
|
|
|
|
|
### Processus principal
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Dans Electron, le processus qui exécute le script `main` de` package.json`
|
|
|
|
est appelé __ le processus principal__. Le script qui s'exécute dans le
|
|
|
|
processus principal peut afficher une interface graphique en créant des
|
2016-12-13 14:50:23 +00:00
|
|
|
pages Web.
|
|
|
|
|
|
|
|
### Processus de rendu
|
|
|
|
|
|
|
|
Puisque Electron utilise Chromium pour afficher des pages Web, Chromium
|
2016-12-13 18:42:13 +00:00
|
|
|
Multi-process architecture est également utilisé. Chaque page Web d'Electron
|
2016-12-13 14:50:23 +00:00
|
|
|
fonctionne avec son propre processus, qui est appelé __le processus de rendu.__.
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Dans les navigateurs normaux, les pages Web sont habituellement exécutées
|
|
|
|
dans un environnement aux ressources indépendantes. Les utilisateurs d'électrons
|
|
|
|
ont cependant le pouvoir d'utiliser les API Node.js dans des pages Web permettant
|
2016-12-13 14:50:23 +00:00
|
|
|
un système d'exploitation de niveau inférieur d'interactions.
|
|
|
|
|
|
|
|
### Différences entre le processus principal et le processus de rendu
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Le processus principal crée des pages Web en créant des instances `BrowserWindow`.
|
|
|
|
Chaque instance `BrowserWindow` exécute la page Web dans son propre processus
|
|
|
|
de rendu. Lorsqu'une occurrence `BrowserWindow` est détruite, le processus
|
2016-12-13 14:50:23 +00:00
|
|
|
de rendu correspondant est également terminée.
|
|
|
|
|
|
|
|
Le processus principal gère toutes les pages Web et leur processus rendu correspondant.
|
|
|
|
Chaque processus de rendu est isolé et ne se soucie que de la page Web en cours
|
|
|
|
d'exécution.
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Dans les pages Web, l'appel des API relatives aux GUI natives n'est pas autorisé
|
|
|
|
car la gestion des ressources natives GUI dans les pages Web sont très dangereuse,
|
|
|
|
il est facile de perdre des ressources. Si vous souhaitez effectuer des opérations
|
|
|
|
GUI dans une page Web, le Processus de la page Web doit communiquer avec le
|
2016-12-13 14:50:23 +00:00
|
|
|
processus principal pour lui demander d'effectur ces opérations.
|
|
|
|
|
|
|
|
Dans Electron, nous avons plusieurs façons de communiquer entre le processus principal et
|
2016-12-13 18:42:13 +00:00
|
|
|
le processeurs. Comme [`ipcRenderer`] (../ api / ipc-renderer.md) et [`IpcMain`]
|
|
|
|
(../ api / ipc-main.md) pour envoyer des messages, et les [Remote] (../ api / remote.md)
|
|
|
|
pour la communication de style RPC. Il y a aussi une entrée de FAQ sur
|
2016-12-13 14:50:23 +00:00
|
|
|
[comment partager des données entre des pages Web] [share-data].
|
|
|
|
|
|
|
|
## Écrivez votre première application Electron
|
|
|
|
|
|
|
|
Généralement, une application Electron est structurée comme ceci:
|
|
|
|
|
|
|
|
```text
|
|
|
|
your-app/
|
|
|
|
├── package.json
|
|
|
|
├── main.js
|
|
|
|
└── index.html
|
|
|
|
```
|
|
|
|
|
|
|
|
Le format de `package.json` est exactement le même que celui des modules de Node, et
|
|
|
|
le script spécifié par le champ `main` est le script de démarrage de votre application,
|
|
|
|
qui exécutera le processus principal. Un exemple de votre `package.json` peut être
|
|
|
|
comme cela:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"name" : "your-app",
|
|
|
|
"version" : "0.1.0",
|
|
|
|
"main" : "main.js"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
__Note__: Si le champ `main` n'est pas présent dans` package.json`, Electron
|
|
|
|
tenter de charger un fichier `index.js`.
|
|
|
|
|
|
|
|
Le fichier `main.js` devrait créer des fenêtres et gérer les événements du système.
|
|
|
|
Exemple:
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
const {app, BrowserWindow} = require('electron')
|
|
|
|
const path = require('path')
|
|
|
|
const url = require('url')
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
// Gardez une référence globale de l'objet fenêtre, sinon, la fenêtre
|
2016-12-13 14:50:23 +00:00
|
|
|
// sera automatiquement fermée lorsque l'objet JavaScript est récupéré.
|
|
|
|
let win
|
|
|
|
|
|
|
|
function createWindow () {
|
|
|
|
// Créer la fenêtre du navigateur.
|
|
|
|
win = new BrowserWindow({width: 800, height: 600})
|
|
|
|
|
|
|
|
// charger index.html de l'application.
|
|
|
|
win.loadURL(url.format({
|
|
|
|
pathname: path.join(__dirname, 'index.html'),
|
|
|
|
protocol: 'file:',
|
|
|
|
slashes: true
|
|
|
|
}))
|
|
|
|
|
|
|
|
// Ouvrir DevTools.
|
|
|
|
win.webContents.openDevTools()
|
|
|
|
|
|
|
|
// Émis lorsque la fenêtre est fermée.
|
|
|
|
win.on('closed', () => {
|
2016-12-13 18:42:13 +00:00
|
|
|
// Déréférencer l'objet fenêtre, habituellement vous stocker des fenêtres
|
|
|
|
// dans un tableau si votre application prend en charge plusieurs fenêtres,
|
2016-12-13 14:50:23 +00:00
|
|
|
// c'est l'heure où vous devez supprimer l'élément correspondant.
|
|
|
|
win = null
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
// Cette méthode sera appelée lorsque Electron aura terminé l'initialisation
|
|
|
|
// et est prét à créer des fenêtres de navigation. Certaines API ne peuvent
|
2016-12-13 14:50:23 +00:00
|
|
|
// être utilisées qu'après le lancement de cet événement.
|
|
|
|
app.on('ready', createWindow)
|
|
|
|
|
|
|
|
// Quittez lorsque toutes les fenêtres sont fermées.
|
|
|
|
app.on('window-all-closed', () => {
|
2016-12-13 18:42:13 +00:00
|
|
|
// Sur macOS, il est fréquent que les applications et leur barre de menus
|
2016-12-13 14:50:23 +00:00
|
|
|
// restent actives jusqu'à ce que l'utilisateur quitte explicitement avec Cmd + Q
|
|
|
|
if (process.platform !== 'darwin') {
|
|
|
|
app.quit()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
app.on('activate', () => {
|
2016-12-13 18:42:13 +00:00
|
|
|
// Sur macOS, il est fréquent de recréer une fenêtre dans l'application lorsque
|
2016-12-13 14:50:23 +00:00
|
|
|
// l'icône du dock est cliquée et qu'il n'y a pas d'autres fenêtres ouvertes.
|
|
|
|
if (win === null) {
|
|
|
|
createWindow()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
// Dans ce fichier, vous pouvez inclure le reste du code du processus principal
|
|
|
|
// spécifique de votre application. Vous pouvez également les mettres dans des
|
2016-12-13 14:50:23 +00:00
|
|
|
// fichiers distincts et les écrire ici.
|
|
|
|
```
|
|
|
|
|
|
|
|
Enfin, `index.html` est la page web que vous voulez afficher:
|
|
|
|
|
|
|
|
```html
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<title>Hello World!</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>Hello World!</h1>
|
|
|
|
Nous utilisons le noeud <script>document.write(process.versions.node)</script>,
|
|
|
|
Chrome <script>document.write(process.versions.chrome)</script>,
|
|
|
|
et Electron <script>document.write(process.versions.electron)</script>.
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
```
|
|
|
|
|
|
|
|
## Exécuter votre application
|
|
|
|
|
|
|
|
Une fois que vous avez créé vos fichiers `main.js`,` index.html` et `package.json`,
|
2016-12-13 18:42:13 +00:00
|
|
|
vous voudriez probablement essayer d'exécuter votre application localement pour la
|
2016-12-13 14:50:23 +00:00
|
|
|
tester et vous assurer qu'elle fonctionne comme prévu.
|
|
|
|
|
|
|
|
### `electron`
|
|
|
|
|
|
|
|
[`electron`](https://github.com/electron-userland/electron-prebuilt) est
|
|
|
|
un module `npm` qui contient des versions pré-compilées d'Electron.
|
|
|
|
|
|
|
|
Si vous l'avez installé globalement avec `npm`, vous n'en aurez pas besoin
|
|
|
|
dans le répertoire source de votre application:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
electron .
|
|
|
|
```
|
|
|
|
|
|
|
|
Si vous l'avez installé localement:
|
|
|
|
|
|
|
|
#### macOS / Linux
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ ./node_modules/.bin/electron .
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Windows
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ .\node_modules\.bin\electron .
|
|
|
|
```
|
|
|
|
|
|
|
|
### Executable d'Electron téléchargé manuellement
|
|
|
|
|
|
|
|
Si vous avez téléchargé Electron manuellement, vous pouvez également utiliser
|
|
|
|
binaire pour exécuter votre application directement.
|
|
|
|
|
|
|
|
#### Windows
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ .\electron\electron.exe your-app\
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Linux
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ ./electron/electron your-app/
|
|
|
|
```
|
|
|
|
|
|
|
|
#### macOS
|
|
|
|
|
|
|
|
```bash
|
|
|
|
$ ./Electron.app/Contents/MacOS/Electron your-app/
|
|
|
|
```
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
`Electron.app` fait partie du package de libération de l'Electron, vous pouvez
|
2016-12-13 14:50:23 +00:00
|
|
|
télécharger à partir [here](https://github.com/electron/electron/releases).
|
|
|
|
|
|
|
|
### Exécuter en tant que distribution
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Une fois que vous avez terminé d'écrire votre application, vous pouvez
|
|
|
|
créer une distribution en suivant le guide [Distribuer une application]
|
2016-12-13 14:50:23 +00:00
|
|
|
(./application-distribution.md) puis exécuter l'application packagée.
|
|
|
|
|
|
|
|
### Essayez cet exemple
|
|
|
|
|
2016-12-13 18:42:13 +00:00
|
|
|
Clonez et exécutez le code dans ce didacticiel en utilisant le
|
2016-12-13 14:50:23 +00:00
|
|
|
[`electron/electron-quick-start`] (https://github.com/electron/electron-quick-start).
|
|
|
|
|
|
|
|
**Note**: Exécuter cela nécessite [Git](https://git-scm.com) et [Node.js](https://nodejs.org/en/download/) (que comprend [npm](https://npmjs.org)) sur votre système.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Clone the repository
|
|
|
|
$ git clone https://github.com/electron/electron-quick-start
|
|
|
|
# Go into the repository
|
|
|
|
$ cd electron-quick-start
|
|
|
|
# Install dependencies
|
|
|
|
$ npm install
|
|
|
|
# Run the app
|
|
|
|
$ npm start
|
|
|
|
```
|
|
|
|
|
|
|
|
Pour plus d'exemples app, consultez la section
|
|
|
|
[list of boilerplates](http://electron.atom.io/community/#boilerplates)
|
|
|
|
Créé par la communauté impressionnante d'électrons.
|
|
|
|
|
|
|
|
[share-data]: ../faq.md#how-to-share-data-between-web-pages
|