Vuejsでmarkdownサーバー端を使ってレンダリングした例
あはは、またvuejsのpackageを紹介しに来ました。miaolz 123/vue-markdown。対応するアプリケーションシーンは、エディタを使ったり、コメントシステムでサポートしたりしたいです。このpackageはちょっと多いです。たとえばデフォルトでemojiを支持するなら、これは完璧です。laravistの新版はvue-markdownを使って評論を誇張します。
インストール
直接npmを使ってインストールします。
簡単です。直接にこうしてもいいです。
Vuejsサーバー端レンダリングmarkdown例
本論文で紹介したvue-markdownは、いくつかのアプリケーションシーンの中では超使いやすいです。特に、コメントシステムに対してmarkdownの需要をサポートしたいです。皆さんの勉強に役に立つように、私たちを応援してください。
インストール
直接npmを使ってインストールします。
npm install --save vue-markdown
使用簡単です。直接にこうしてもいいです。
import VueMarkdown from 'vue-markdown'
new Vue({
components: {
VueMarkdown
}
})
あるいは、具象化の例を挙げると、例えば私たちはComment.vueコンポーネントを使ってコメントをレンダリングしています。このコンポーネントの中で直接に指定できます。
import VueMarkdown from 'vue-markdown';
<template>
<div>
<vue-markdown :source="comment.body"></vue-markdown>
</div>
</template>
export default { // ... other codes
props:['comment'],
data(){
return {
comment : this.comment
}
},
components: {
VueMarkdown
},
// ... other codes
}
これをレンダリングする時:
<div class="comments">
<div class="comments" v-for="comment in comments">
<comment :comment="comment">
</comment>
</div>
</div>
ここで私達はまずcomment propsを通じて(このcommentは対象です)、Comment.vueを通してveu-markdownコンポーネントにコメントのbodyフィールドの内容を伝えます。ここのcomment.bodyはデータベースに保存されているのはコメントのmarkdown形式の内容です。Vuejsサーバー端レンダリングmarkdown例
const Koa = require('koa');
const _ = require('koa-route');
const vsr = require('vue-server-renderer');
const fs = require('fs');
const indexjs = require('./component/index.js');
const Vue = require('vue');
const MD = require('markdown-it')
const server = new Koa();
const route = {
index: (ctx, id) => {
// markdown
const md = new MD().render(fs.readFileSync('./markdown/' + id + '.md', 'utf-8'));
// vue html
const app = new Vue({
data: {
main: md
},
template: `
<div>
<div class="main" v-html="main"></div>
</div>`
});
//
const context = {
htmlTitle: id
};
// html
const renderer = vsr.createRenderer({
template: fs.readFileSync('./template/index.template.html', 'utf-8')
});
//
renderer.renderToString(app, context, (err, html) => {
if (err) {
ctx.response.status = 500;
} else {
ctx.response.body = html;
}
})
}
};
server.use(_.get('/post/:id', route.index));
server.listen(8080);
<!DOCTYPE html>
<html lang="CH-ZN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{{htmlTitle}}</title>
</head>
<body>
<!--vue-ssr-outlet-->
</body>
</html>
締め括りをつける本論文で紹介したvue-markdownは、いくつかのアプリケーションシーンの中では超使いやすいです。特に、コメントシステムに対してmarkdownの需要をサポートしたいです。皆さんの勉強に役に立つように、私たちを応援してください。