npm install showdown

接下来是用法:

export default {

data () {

return {

'content':'',

'converter':null

}

},

watch:{

'content':'contentChanged'

},

mounted(){ this.init(); },

methods: {

init(){

var showdown = require('showdown');

var converter = new showdown.Converter();

this.converter = converter;

},

contentChanged(){

var html = this.converter.makeHtml(this.content);

document.getElementById('show-content').innerHTML = html;

}

}

}

#show-content{

padding:25px;

}

于是,一个简单的markdown编辑器就完成了,接下来,上图:

简单markdown编辑器.png

由于我用的是elementUI,所以样式可能会有些许不一样的地方,其中不一样的地方:

好了,到此处,一个简单的markdown编辑器就已经做完了。

接下来的是扩展与优化,后期会持续更新:

1. 快捷键的监听

目前为止,按tab键textaera会失去焦点,那么要怎么做呢。

代码做部分修改:

首先,assets/js目录下创建textarea_extend.js文件,然后将上面参考网站的代码复制进去,然后将var textarea = document.getElementsByTagName('textarea')[0];及以下代码写在一个函数里面,具体如下:

export function surpportTab(id){

// var textarea = document.getElementsByTagName('textarea')[0];

var textarea = document.getElementById(id);

textarea.onkeydown = function(event) {

//support tab on textarea

if (event.keyCode == 9) { //tab was pressed

var newCaretPosition;

newCaretPosition = textarea.getCaretPosition() + " ".length;

textarea.value = textarea.value.substring(0, textarea.getCaretPosition()) + " " + textarea.value.substring(textarea.getCaretPosition(), textarea.value.length);

textarea.setCaretPosition(newCaretPosition);

return false;

}

if(event.keyCode == 8){

//backspace

if (textarea.value.substring(textarea.getCaretPosition() - 4, textarea.getCaretPosition()) == " ") {

//it's a tab space

var newCaretPosition;

newCaretPosition = textarea.getCaretPosition() - 3;

textarea.value = textarea.value.substring(0, textarea.getCaretPosition() - 3) + textarea.value.substring(textarea.getCaretPosition(), textarea.value.length);

textarea.setCaretPosition(newCaretPosition);

}

}

if(event.keyCode == 37){ //left arrow

var newCaretPosition;

if (textarea.value.substring(textarea.getCaretPosition() - 4, textarea.getCaretPosition()) == " ") {

//it's a tab space

newCaretPosition = textarea.getCaretPosition() - 3;

textarea.setCaretPosition(newCaretPosition);

}

}

if(event.keyCode == 39){

//right arrow

var newCaretPosition;

if (textarea.value.substring(textarea.getCaretPosition() + 4, textarea.getCaretPosition()) == " ") {

//it's a tab space

newCaretPosition = textarea.getCaretPosition() + 3;

textarea.setCaretPosition(newCaretPosition);

}

}

}

}

调用该方法:

在textarea控件上加上id:

...

...

引入函数:

import {surpportTab} from '@/assets/js/textarea_extend.js'

然后在init函数里面初始化textaera:

...

surpportTab('markdown-editor');

...

2. ctrl+S进行保存

同样可以写在textarea_extend.js中:

export function surpportSave(id,callbak){

var textarea = document.getElementById(id);

textarea.addEventListener('keydown', function(e) {

if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {

e.preventDefault();

callbak && callbak();

}

});

}

调用:

import {surpportTab,surpportSave} from '@/assets/js/textarea_extend.js'

...

surpportSave('markdown-editor',function(){

alert('已保存!');

});

markdown html vue,vue项目引入markdown相关推荐

  1. Jhipster生成前端为Vue的项目引入Element-UI

    Jhipster生成前端为typescript 的Vue的项目引入Element-UI 在main.ts /* 引入element-ui */ import * as ElementUI from ' ...

  2. vue+element-ui项目引入第三方图标库:阿里巴巴矢量图标库(问题:小方框)

    因为element-ui内置的小图标非常有限,所以有时候,我们需要自定义或引入第三方图标库. 先介绍下阿里巴巴矢量图标库iconfont: 这个截图只显示了第一行的图标库,还有很多. 也许,我们需要的 ...

  3. vue前端项目引入iconfont阿里图标(font class)

    1.首先进入阿里图标库官网(iconfont-阿里巴巴矢量图标库),选取你所要的图标,将其添加购物车. 2.然后进入购物车,点击添加进项目 3.点击下载到本地 4.将下载的文件复制下来 5.在main ...

  4. vite+vue3+TS项目引入antd-vue的问题记录

    文章目录 1.vite创建的vue+TS项目引入antd-vue 2.antd-vue定制主题报错 记录博,用于记录Vue3项目中遇到的问题 1.vite创建的vue+TS项目引入antd-vue 由 ...

  5. Vue项目集成Markdown标记语言编辑器(MavonEditor)

    文章目录 前言 一.可用的Markdown集成技术 二.使用步骤 1.安装mavonEditor包 2.导入并使用mavonEditor 3.官方API 总结 前言 Markdown是一种标记语言,相 ...

  6. Vue 中引入markdown富文本编辑器并根据md格式渲染

    Vue 中引入markdown富文本编辑器 在vue组件中,比较好用的是mavon-editor,github文档地址 https://github.com/hinesboy/mavonEditor ...

  7. markdown editor_基于 Vue+Vditor 所见即所得Markdown编辑器

    今天给大家推荐一款超牛的Vue.js构建多功能markdown编辑器Arya. markdown-online-editor 基于vue+vditor开发在线Markdown富文本编辑器,star高达 ...

  8. vue中将md转成html,Vue/Vue中Html和Markdown互相转换/README.md · 倚栏听风/LearningNotes - Gitee.com...

    # Vue中Html和Markdown互相转换 ## 前言 最近想实现的一个功能,就是将系统中的博客进行导出成Markdown格式,后面经过了调研发现有两种方法能够满足需求,一个是Java后台中将HT ...

  9. blue html中转换,Vue/Vue中Html和Markdown互相转换/README.md · bluemoon/LearningNotes - Gitee.com...

    # Vue中Html和Markdown互相转换 ## 前言 最近想实现的一个功能,就是将系统中的博客进行导出成Markdown格式,后面经过了调研发现有两种方法能够满足需求,一个是Java后台中将HT ...

最新文章

  1. 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码
  2. 原子操作之sync/atomic
  3. python基础语法合集-Python基础语法介绍
  4. go int32不能打印0_Go并发实战--sync WaitGroup
  5. problem a: 简单的整数排序_什么是基数排序?
  6. Centos与Ubuntu
  7. python中文开发环境_Python开发环境配置
  8. P2782 友好城市
  9. python调用edge_Abaqus中Python通过findAt方法建立region区域
  10. 计算机二级数据库系统知识点,2020年全国计算机二级Access复习知识点:分布式数据库系统...
  11. 安卓系统刷机怎么刷机_手机怎么刷机
  12. 应急响应.windows
  13. 分享一个完全免费的高质量 PPT 模板下载网站
  14. Photoshop CS6版本安装及破解教程
  15. 2017年技术分享会 - 大数据前沿技术分析与应用
  16. 软件测试周刊(第24期):最不重要的素质就是智商
  17. ARM ADS中的AXD 调试经验集锦
  18. 烤仔看世界 | “女王”的骗局
  19. 如何用无监督模型,防范信用卡欺诈?
  20. Kaggle -Linear Regression with Time Series

热门文章

  1. SLS控制台内嵌操作指南
  2. 阿里云飞天洛神2.0:开放弹性的云网络NFV平台
  3. 助力共享经济,芝麻信用背后的技术
  4. 探索Java日志的奥秘:底层日志系统-log4j2
  5. 如何评估深度学习模型效果?阿里工程师这么做 1
  6. 基于POLARDB数据库的压测实践
  7. AI写程序,这事可没那么简单!
  8. 用Python及深度学习实现iPhone X的FaceID功能
  9. Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务
  10. 阿里安全开源顶尖技术“猎豹” 计算更快数据更安全