markdown html vue,vue项目引入markdown
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相关推荐
- Jhipster生成前端为Vue的项目引入Element-UI
Jhipster生成前端为typescript 的Vue的项目引入Element-UI 在main.ts /* 引入element-ui */ import * as ElementUI from ' ...
- vue+element-ui项目引入第三方图标库:阿里巴巴矢量图标库(问题:小方框)
因为element-ui内置的小图标非常有限,所以有时候,我们需要自定义或引入第三方图标库. 先介绍下阿里巴巴矢量图标库iconfont: 这个截图只显示了第一行的图标库,还有很多. 也许,我们需要的 ...
- vue前端项目引入iconfont阿里图标(font class)
1.首先进入阿里图标库官网(iconfont-阿里巴巴矢量图标库),选取你所要的图标,将其添加购物车. 2.然后进入购物车,点击添加进项目 3.点击下载到本地 4.将下载的文件复制下来 5.在main ...
- vite+vue3+TS项目引入antd-vue的问题记录
文章目录 1.vite创建的vue+TS项目引入antd-vue 2.antd-vue定制主题报错 记录博,用于记录Vue3项目中遇到的问题 1.vite创建的vue+TS项目引入antd-vue 由 ...
- Vue项目集成Markdown标记语言编辑器(MavonEditor)
文章目录 前言 一.可用的Markdown集成技术 二.使用步骤 1.安装mavonEditor包 2.导入并使用mavonEditor 3.官方API 总结 前言 Markdown是一种标记语言,相 ...
- Vue 中引入markdown富文本编辑器并根据md格式渲染
Vue 中引入markdown富文本编辑器 在vue组件中,比较好用的是mavon-editor,github文档地址 https://github.com/hinesboy/mavonEditor ...
- markdown editor_基于 Vue+Vditor 所见即所得Markdown编辑器
今天给大家推荐一款超牛的Vue.js构建多功能markdown编辑器Arya. markdown-online-editor 基于vue+vditor开发在线Markdown富文本编辑器,star高达 ...
- vue中将md转成html,Vue/Vue中Html和Markdown互相转换/README.md · 倚栏听风/LearningNotes - Gitee.com...
# Vue中Html和Markdown互相转换 ## 前言 最近想实现的一个功能,就是将系统中的博客进行导出成Markdown格式,后面经过了调研发现有两种方法能够满足需求,一个是Java后台中将HT ...
- blue html中转换,Vue/Vue中Html和Markdown互相转换/README.md · bluemoon/LearningNotes - Gitee.com...
# Vue中Html和Markdown互相转换 ## 前言 最近想实现的一个功能,就是将系统中的博客进行导出成Markdown格式,后面经过了调研发现有两种方法能够满足需求,一个是Java后台中将HT ...
最新文章
- 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码
- 原子操作之sync/atomic
- python基础语法合集-Python基础语法介绍
- go int32不能打印0_Go并发实战--sync WaitGroup
- problem a: 简单的整数排序_什么是基数排序?
- Centos与Ubuntu
- python中文开发环境_Python开发环境配置
- P2782 友好城市
- python调用edge_Abaqus中Python通过findAt方法建立region区域
- 计算机二级数据库系统知识点,2020年全国计算机二级Access复习知识点:分布式数据库系统...
- 安卓系统刷机怎么刷机_手机怎么刷机
- 应急响应.windows
- 分享一个完全免费的高质量 PPT 模板下载网站
- Photoshop CS6版本安装及破解教程
- 2017年技术分享会 - 大数据前沿技术分析与应用
- 软件测试周刊(第24期):最不重要的素质就是智商
- ARM ADS中的AXD 调试经验集锦
- 烤仔看世界 | “女王”的骗局
- 如何用无监督模型,防范信用卡欺诈?
- Kaggle -Linear Regression with Time Series