mermaid/docs/n00b-gettingStarted.md

179 lines
6.1 KiB
Markdown
Raw Normal View History

2021-03-13 08:42:01 +01:00
# A Mermaid User-Guide for Beginners
2020-07-16 06:30:23 +02:00
Creating diagrams and charts using mermaid code is simple.
2021-03-04 13:48:58 +01:00
>The live editor is enough for most general uses of mermaid
2021-04-17 08:41:27 +02:00
**Absolute beginners are recommended to view the Video [Tutorials](./Tutorials.md) on the Live Editor, to gain a better understanding of mermaid.**
2019-11-07 23:37:46 +01:00
2021-04-17 08:41:27 +02:00
## Four ways of using mermaid:
2021-03-06 10:59:16 +01:00
1. Using the mermaid [Live Editor](https://mermaid-js.github.io/mermaid-live-editor/).
2021-03-04 13:48:58 +01:00
- Learning the [Syntax](./n00b-syntaxReference) would be helpful.
2021-03-14 10:51:36 +01:00
2. Using [mermaid plugins](./integrations.md) with programs you are familiar with.
2020-07-26 03:15:37 +02:00
3. Hosting mermaid on a webpage, with an absolute link.
4. Downloading mermaid and hosting it on your Web Page.
2020-07-24 21:30:06 +02:00
2021-03-12 08:46:59 +01:00
**Note: It is our recommendation that you review all approaches, and choose the one that is best for your project.**
>More in depth information can be found on [Usage](./usage.md).
2021-04-17 08:41:27 +02:00
## 1. Using [The Live Editor](https://mermaidjs.github.io/mermaid-live-editor).
2021-03-28 03:14:56 +02:00
![Flowchart](./img/Live-Editor-Usage.png)
In the `Code` section one can write or edit raw mermaid code, and instantly `Preview` the rendered result on the panel beside it.
2020-02-23 07:16:26 +01:00
2020-11-15 12:25:02 +01:00
![Flowchart](./img/DiagramDefinition.png)
2020-02-23 08:10:08 +01:00
2021-03-02 01:24:48 +01:00
**Saving a Diagram:**
2021-04-18 00:55:28 +02:00
You may choose any of the methods below, to save it
2020-02-23 07:16:00 +01:00
2021-03-03 01:07:34 +01:00
![Flowchart](./img/Live-Editor-Choices.png)
2021-03-06 10:59:16 +01:00
**Configuration**
2021-03-03 01:04:44 +01:00
*The Mermaid configuration* is for configuring the appearance and behavior of mermaid diagrams. An easy introduction to mermaid configuration is found in the [Advanced usage](./n00b-advanced.md) section. A complete configuration reference cataloguing default values is found on the [mermaidAPI](Setup.md) page.
2020-11-15 12:25:02 +01:00
![Flowchart](./img/Configuration.png)
2021-04-17 08:41:27 +02:00
## 2. Using Mermaid Plugins:
2021-03-28 03:14:56 +02:00
Using plug-ins you can generate mermaid diagrams from within popular applications, the same way that you would use the Live Editor. Here's a list of [Mermaid Plugins](./integrations.md).
**This is covered in greater detail in the [Usage section](usage.md)**
2021-04-17 08:41:27 +02:00
## 3. Mermaid with Inline JavaScript
This method can be used with any common web server. Apache, IIS, nginx, node express [...], you pick your favourite.
2021-03-13 08:43:10 +01:00
You will need a text editting tool like Notepad++, to generate an html file. It is then deployed by a web browser (such as Firefox, Chrome, Safari, but not Internet Explorer).
2021-03-12 03:09:43 +01:00
Just create an HTML file locally and open it using a desired browser.
2021-03-12 03:09:43 +01:00
### Written in the html `<body>` section of the web page.
When writing the html file, we give the web browser three instructions inside the html code:
2020-02-27 10:07:25 +01:00
a. A reference for fetching the online mermaid renderer, which is written in Javascript.
2020-02-27 10:06:38 +01:00
b. The mermaid code for the diagram we want to create.
2020-02-27 10:06:38 +01:00
2020-11-15 12:25:02 +01:00
c. The `mermaid.initialize()` call to start the rendering process.
2021-04-17 08:41:27 +02:00
## Requirements for mermaidAPI to render a diagram:
2021-04-17 08:41:27 +02:00
**a. A reference to the external CDN in a `<script src>` tag, or a reference to mermaid.js as a separate file.:**
```html
<body>
2020-07-23 06:28:02 +02:00
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
</body>
```
2021-04-17 08:41:27 +02:00
**b. The embedded mermaid diagram definition inside a `<div class="mermaid">`:**
```html
<body>
Here is a mermaid diagram:
<div class="mermaid">
graph TD
A[Client] --> B[Load Balancer]
B --> C[Server01]
B --> D[Server02]
</div>
</body>
```
2020-07-24 21:30:06 +02:00
**Notes**: every mermaid chart/graph/diagram definition, has to have separate `<div>` tags.
2021-04-17 08:41:27 +02:00
**c. The `mermaid.initialize()` call.**
2021-03-12 03:09:43 +01:00
`mermaid.initialize()` calls take all the definitions contained in `<div class="mermaid">` tags it can find in the html body and render. Example:
```html
<body>
<script>mermaid.initialize({startOnLoad:true});</script>
</body>
```
2021-03-28 03:14:56 +02:00
2021-03-13 08:42:01 +01:00
**Notes**:
2021-03-28 03:14:56 +02:00
Mermaid rendering is initalized with `mermaid.initialize()`.You can place `mermaid.initialize()` inside of `mermaid.min.js` for brevity. However, doing the opposite lets you control when it starts looking for `<div>`tags inside the web page with `mermaid.initialize()`, such as when you think that noy all `<div>` tags may not have been loaded when `mermaid.min.js` runs.
`startOnLoad` is one of the parameters that can be defined by `mermaid.initialize()`
2021-03-28 03:14:56 +02:00
| Parameter | Description | Type | Values |
| --------- | --------------- | ------ | ---------------------------------------------------- |
|startOnLoad| Toggle for Rendering upon loading | Boolean | true, false |
2021-03-12 08:46:59 +01:00
2021-04-17 08:41:27 +02:00
**Here is a full working example of the mermaidAPI being called through the CDN:**
2020-07-16 06:30:23 +02:00
```html
<html>
<body>
2020-07-23 06:28:02 +02:00
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});</script>
Here is one mermaid diagram:
<div class="mermaid">
graph TD
A[Client] --> B[Load Balancer]
2019-11-28 12:34:26 +01:00
B --> C[Server1]
B --> D[Server2]
</div>
2019-11-28 12:34:26 +01:00
And here is another:
<div class="mermaid">
graph TD
2019-11-28 12:34:26 +01:00
A[Client] -->|tcp_123| B(Load Balancer)
B -->|tcp_456| C[Server1]
B -->|tcp_456| D[Server2]
</div>
</body>
</html>
```
2021-03-13 08:42:01 +01:00
**Another Option:**
In this example mermaid.js is referenced in `src` as a separate JavaScript file, in an example Path.
```html
2020-07-23 06:31:49 +02:00
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="mermaid">
graph LR
A --- B
B-->C[fa:fa-ban forbidden]
B-->D(fa:fa-spinner);
</div>
<div class="mermaid">
graph TD
A[Client] --> B[Load Balancer]
B --> C[Server1]
B --> D[Server2]
</div>
2021-03-28 03:14:56 +02:00
<script src="The\Path\In\Your\Package\mermaid.js"></script>
2020-07-23 06:31:49 +02:00
<script>mermaid.initialize({startOnLoad:true});</script>
</body>
</html>
2020-07-23 06:28:02 +02:00
```
2021-03-12 08:46:59 +01:00
---
2021-04-17 08:41:27 +02:00
## 4. Adding Mermaid as a dependency.
2021-03-12 08:46:59 +01:00
1. install node v10 or 12, which would have npm
2021-03-12 08:46:59 +01:00
2. download yarn using npm by entering the command below:
npm install -g yarn
3. After yarn installs, enter the following command:
yarn add mermaid
4. To add Mermaid as a Dev Dependency
yarn add --dev mermaid
2021-03-13 08:42:01 +01:00
**Comments from Knut Sveidqvist, creator of mermaid:**
2021-03-12 08:46:59 +01:00
- In early versions of mermaid, the `<script src>` tag was invoked in the `<head>` part of the web page. Nowadays we can place it in the `<body>` as seen above. Older parts of the documentation frequently reflects the previous way which still works.