mirror of
https://github.com/showdownjs/showdown.git
synced 2024-03-22 13:30:55 +08:00
docs: added tutuorial on how to create markdown editor
This commit is contained in:
parent
c4eef0b8c1
commit
fae04b6549
BIN
docs/assets/markdown-editor.png
Normal file
BIN
docs/assets/markdown-editor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 129 KiB |
|
@ -1,3 +1,4 @@
|
||||||
# Tutorials
|
# Tutorials
|
||||||
|
|
||||||
* [Add default class for each HTML element](add-default-class-to-html.md)
|
* [Add default class for each HTML element](add-default-class-to-html.md)
|
||||||
|
* [Markdown editor with Showdown](markdown-editor-with-showdown.md)
|
143
docs/tutorials/markdown-editor-with-showdown.md
Normal file
143
docs/tutorials/markdown-editor-with-showdown.md
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
# Markdown editor with Showdown
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
In this tutorial, you will create a simple in-browser Markdown editor using Showdown and some of its extensions. The purpose is to show how easy it is to include and configure Showdown in your project.
|
||||||
|
|
||||||
|
The fully working example you can see in [Fiddle][1].
|
||||||
|
|
||||||
|
## Step 1: Prepare project
|
||||||
|
|
||||||
|
1. Install [node.js](https://nodejs.org/en/).
|
||||||
|
1. Install project package management tool
|
||||||
|
|
||||||
|
!!! info ""
|
||||||
|
Showdown core library doesn't have any dependencies so the setup is pretty straightforward. However, you are strongly encouraged to use a package manager such as [**npm**](http://npmjs.com) or [**yarn**](https://yarnpkg.com) to manage project dependencies.
|
||||||
|
|
||||||
|
To install package management tool:
|
||||||
|
|
||||||
|
1. Create a directory called `showdown-editor` and recreate the following structure:
|
||||||
|
|
||||||
|
```
|
||||||
|
showdown-editor
|
||||||
|
├── css
|
||||||
|
│ └── style.css
|
||||||
|
├── js
|
||||||
|
│ └── script.js
|
||||||
|
└── index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Initialize `package.json` file by running the following interactive console command:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm init -y
|
||||||
|
```
|
||||||
|
|
||||||
|
This command creates `package.json` file in the root of the project folder, and populates the default content that you can change later if you wish.
|
||||||
|
|
||||||
|
## Step 2: Install Showdown
|
||||||
|
|
||||||
|
Inside the `showdown-editor` directory, run the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install showdown --save
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will install `showdown` inside the `node_modules` directory and save `showdown` as a dependency in the `package.json` file.
|
||||||
|
|
||||||
|
## Step 3: Update project files
|
||||||
|
|
||||||
|
Add the following content to the corresponding project files:
|
||||||
|
|
||||||
|
=== "index.html"
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8"/>
|
||||||
|
<link rel="stylesheet" href="css/style.css"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<textarea id="sourceTA" rows="10" cols="82">
|
||||||
|
Showdown Tutorial
|
||||||
|
=================
|
||||||
|
|
||||||
|
This is a showdown tutorial.
|
||||||
|
|
||||||
|
Showdown supports a number of cool features, namely:
|
||||||
|
|
||||||
|
- headers
|
||||||
|
- lists
|
||||||
|
- and other stuff too
|
||||||
|
|
||||||
|
It is also possible to include code:
|
||||||
|
|
||||||
|
var foo = 'bar';
|
||||||
|
|
||||||
|
var baz = {
|
||||||
|
markdown: 'is great',
|
||||||
|
showdown: 'is awesome'
|
||||||
|
}
|
||||||
|
|
||||||
|
Don't forget to check the [extensions wiki][1].
|
||||||
|
|
||||||
|
[1]: https://github.com/showdownjs/showdown/wiki/extensions
|
||||||
|
</textarea>
|
||||||
|
<hr/>
|
||||||
|
<button id="runBtn" onClick="run()">Convert</button>
|
||||||
|
<hr/>
|
||||||
|
<div id="targetDiv"></div>
|
||||||
|
|
||||||
|
<script src="node_modules/showdown/dist/showdown.min.js"></script>
|
||||||
|
<script src="js/script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! warning ""
|
||||||
|
Please note how Showdown and the script file are included to the `index.html` via the `script` tag at the bottom of the file.
|
||||||
|
|
||||||
|
=== "style.css"
|
||||||
|
|
||||||
|
```css
|
||||||
|
#sourceTA {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#targetDiv {
|
||||||
|
border: 1px dashed #333333;
|
||||||
|
width: 600px;
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "script.js"
|
||||||
|
|
||||||
|
```js
|
||||||
|
function run() {
|
||||||
|
var text = document.getElementById('sourceTA').value,
|
||||||
|
target = document.getElementById('targetDiv'),
|
||||||
|
converter = new showdown.Converter(),
|
||||||
|
html = converter.makeHtml(text);
|
||||||
|
|
||||||
|
target.innerHTML = html;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `script.js` file is simple: when the `runBtn` button is clicked, the script gets the text of the textarea, passes it through Showdown to convert the markdown text into HTML. The resulting HTML is then put inside the `targetDiv`, replacing the previous content.
|
||||||
|
|
||||||
|
## Step 4: Check the result
|
||||||
|
|
||||||
|
1. Open your `index.html` file. You should see your editor with prefilled markdown text in the text area.
|
||||||
|
1. Click `Convert` button. You show see the text to be converted to HTML:
|
||||||
|
|
||||||
|
![](../assets/markdown-editor.png)
|
||||||
|
|
||||||
|
The fully working example you can see in [Fiddle][1].
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
Congratulations! :tada: You have successfully created a simple Markdown editor!
|
||||||
|
|
||||||
|
[1]: http://jsfiddle.net/tivie/6bnpptkb/
|
Loading…
Reference in New Issue
Block a user