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编辑器就完成了,接下来,上图:

99a11910830f

简单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('已保存!');

});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

厉害了!阿里安全图灵实验室在ICDAR2017 MLT竞赛刷新世界最好成绩

摘要: 近日,阿里安全图灵实验室(Alibaba Turing Lab)的ATL Cangjie OCR算法在ICDAR2017的MLT(Competition on Multi-lingual scene text detection)自然场景多语言文本检测竞赛中刷新了世界最好成绩&#x…

Spring Boot 一个依赖搞定 session 共享,没有比这更简单的方案了!

有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道gblfy说的是对的了! 文章目录一、背景二、分析思路三、实战1. 创建工程2. pom.xml3. redis配置4. 使用5. 项目打包6. 启动项…

孩子学计算机最佳年龄,孩子学编程最佳年龄是几岁

孩子学编程最佳年龄是几岁2021-01-18 16:58:11文/董玉莹孩子学习编程的最好是几岁?本文整理了相关内容,欢迎阅读。孩子学习编程的最好是几岁6-18岁!从国内外的典型案例来看6-18岁是孩子学习“编程”的最佳时机,这个阶段的孩子左右…

python画两条曲线_python – 在Matplotlib中绘制两个图之间的线

在许多情况下,来自其他答案的解决方案是次优的(因为只有在计算点之后没有对图进行任何更改时它们才有效). 更好的解决方案是使用专门设计的ConnectionPatch: import matplotlib.pyplot as plt from matplotlib.patches import ConnectionPatch import numpy as np f…

5G基站功耗,到底有多大?

戳蓝字“CSDN云计算”关注我们哦!作者 | 小枣君来源 | 鲜枣课堂前不久,从某运营商流出的一张图,在小枣君的朋友圈里被广泛传播。就是这张(点击可看放大观看):图中显示的,是该运营商在广州、深圳…

“前端+应用”两大监控利器商业化首发 ARMS领跑APM市场

摘要: 日前,阿里巴巴中间件(Aliware)旗下产品业务实时监控服务ARMS正式商用。首发商用的ARMS目前涵盖应用监控和前端监控两大功能。由此,ARMS的商业化正式填补了阿里云在APM(Application Performance Management)领域空…

Spring Boot2 整合 Shiro ,两种方式全总结!

前言:在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro。 文章目录一、Spring Security 和 Shiro 的比较二、原生的整合2.1. 创建一个 Spring Boot 项目…

html5 coverflow,使用FancyCoverFlow实现3D无限循环切换视图

FancyCoverFlow重写了gallery实现了画廊特效。这里记录下具体的使用方法:1 在布局文件中添加控件android:id"id/fancy_cover"android:layout_width"match_parent"android:layout_height"wrap_content"android:layout_marginTop"…

5G精华问答 | 5G关键技术解读

5G的概念虽然很早就已经提出,但是对于大多数用户来说,真正听到并且对5G有了初步的了解还是在今年。今天就让我们来看看关于5G的精华问答吧。1Q:5G标准是怎么来的,由谁制定的?A:5G是由“第三代合作伙伴计划组…

关于python的保留字_Python中的保留字

原博文 2020-01-29 20:03 − Python 包含的保留字可以执行如下命令进行查看: →import keyword →keyword.kwlist [False, None, True, and, as, assert, break, class, continue, d...01000 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设…

Spring Boot2 整合 Ehcache

用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场景下,我们还是会…

传奇谢幕,回顾霍金76载传奇人生

摘要: 根据外媒报道,著名物理学家斯蒂芬威廉霍金(Stephen William Hawking)去世,享年76岁,霍金的家人已经确认了这一消息。 原文地址:http://click.aliyun.com/m/43771/ “在爱因斯坦生日这天&a…

数据中台与苏秦挂六国相印

戳蓝字“CSDN云计算”关注我们哦!作者 | 一一来源 | 边缘计算社区阅读本文前先思考一个问题:数据中台如何创造更多价值?1梁宁看中台——什么是数据中台梁宁老师是阿里巴巴的湖畔大学产品模块学术主任、百度集团顾问。有人问梁宁,中…

python中函数定义_Python中函数的定义与使用

原博文 2020-02-27 16:46 − 一、函数基本定义 定义函数的目的是为了让一段代码可以被重复使用 函数定义的语法: def 函数名([参数,参数.....]): 函数主体代码(多行代码) [return [返回值]]注:函数中的函数体都通过缩进来定义 实例一&#xf…

非计算机专业教学改革,非计算机专业算法分析与设计教学改革论文

非计算机专业算法分析与设计教学改革论文【摘要】算法分析与设计不仅是计算机专业的核心课程,同时也是与计算机有关的非计算机专业的专业课。本人针对非计算机专业学生在学习过程中存在的若干问题,就教学内容、教学手段和考核方式等方面提出了改革措施。…

阿里SaaS性能测试平台PTS最佳实践

摘要: PTS(Performance Testing Service)是web化的卓越的SaaS性能测试平台,具备强大的分布式压测能力,可方便的模拟海量用户的真实业务场景。PTS铂金版在功能上强调页面可视化编排,目前也在快速迭代中&…

go 根据输入类型执行对应的方法_安全很重要:Go项目的安全评估技术

在今年夏天我们对Kubernetes的评估成功之后,我们收到了大量Go项目的安全评估需求。为此,我们将在其他编译语言中使用过的安全评估技术和策略调整适配到多个Go项目中。我们从了解语言的设计开始,识别出开发人员可能无法完全理解语言语义特性的…

云化要求下,数据库架构如何演进?

戳蓝字“CSDN云计算”关注我们哦!作者简介:王涛SequoiaDB联合创始人&CTO如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构…

看阿里云如何为直播用户营造临场沉浸感?

摘要: 2016年可以说是VR元年,从Facebook的Oculus,HTC的Vive到Sony的PS VR,层出不穷的VR设备和VR内容让用户逐步开始体验到了虚拟现实的魅力。VR视频和VR直播俨然已经成为了展览会议、活动赛事的标配,甚至向婚庆、新闻、…

html计时器组件,vue 计时器组件的实现代码

整理文档,搜刮出一个vue 计时器组件的代码,稍微整理精简一下做下分享。:sendSync"sendSync":autoStart"autoStart":defaultVal"defaultVal">{{countString}}export default {data() {return {isStart: false,globalTim…