前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue项目引入markdown

vue项目引入markdown

作者头像
陨石坠灭
发布于 2018-10-19 07:16:17
发布于 2018-10-19 07:16:17
2.1K00
代码可运行
举报
文章被收录于专栏:全栈之路全栈之路
运行总次数:0
代码可运行

git地址:https://github.com/showdownjs/showdown 其实引入markdown挺简单的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install showdown

接下来是用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div style="width:100%;min-width:1200px">
      <div style="display:inline-block;width:50%;">
            <!-- textarea之间不要有空格 -->
            <textarea v-model='content'></textarea>
      </div>
      <div style="display:inline-block;width:50%;">
            <div id="show-content"></div>
      </div>
  </div>
</template>
<script>
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;
        }
    }
}
</script>
<style>
#show-content{
  padding:25px;
}
</style>

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div >
      <el-row>
          <el-col :span="12" >
              <el-input type="textarea" v-model="content" :autosize="{ minRows: 20, maxRows: 80}" placeholder="请输入内容" >
              </el-input>
          </el-col>
          <el-col :span="12" >
              <div id="show-content" class="text-left">

              </div>
          </el-col>
      </el-row>
  </div>
</template>

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


接下来的是扩展与优化:

1. 快捷键的监听

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

参考:JavaScript让Textarea支持tab按键的方法

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
<el-input id="markdown-editor" type="textarea" ...
...

引入函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {surpportTab} from '@/assets/js/textarea_extend.js'

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
surpportTab('markdown-editor');
...

2. ctrl+S进行保存

同样可以写在textarea_extend.js中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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();
      }
  });
}

调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {surpportTab,surpportSave} from '@/assets/js/textarea_extend.js'
...
surpportSave('markdown-editor',function(){
    alert('已保存!');
});

最后,发现了一款不错的markdown编辑器,可以直接拿来使用: 一款强大的Vue-markdown编辑器插件

看了这篇文章之后的感慨:我们不编写代码,我们只是代码库的搬运工。。。T_T

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/09/02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
如何在小程序中实现人脸识别功能
本文将介绍在小程序端,使用腾讯云云智AI应用服务来进行人脸识别检测分析,实现人脸识别等功能。
123456a134
2018/11/13
21.8K4
如何在小程序中实现人脸识别功能
如何在小程序中实现人脸识别功能
在如何在小程序中实现文件上传下载文章中,我们介绍了小程序的上传基本使用教程,文末我们留下了一个引子。本文将介绍在小程序端,使用腾讯云云智AI应用服务来进行人脸识别检测分析,实现人脸识别等功能。
腾讯云AI
2019/03/01
6K0
智能图像签名生成脚本
https://cloud.tencent.com/document/product/867/17719
杜志强
2019/03/21
1K0
php 请求名片识别
签名 $appid = config('YUN_APP_ID'); $bucket = ''; $secret_id = config('YUN_SECRET_ID'); $secret_key = config('YUN_SECRET_KEY'); $expired = time() + 2592000; $current = time(); $rdm = rand(); //$fileid = 'getAuthAuto'; $srcStr = 'a='.$appid.'&b='.$bucket.'&k=
php-尚金殿
2019/01/14
1.8K0
php 请求名片识别
智能云上手指南:语音合成 API 快速接入
6月21日,腾讯云在2017「云+未来」峰会上推出了战略新品——智能云,宣布将腾讯积累近20年的AI能力向政府、企业和开发者开放,其中首批开放计算机视觉、智能语音识别、自然语言处理的三大核心能力。腾讯
腾讯云开发者社区
2017/06/22
2.7K0
腾讯云ASR产品-PHP实现实时语音鉴权请求
(2)腾讯云控制台开通实时语音权限 https://console.cloud.tencent.com/asr
HI hero
2021/06/24
3.5K0
腾讯云ASR产品-PHP实现实时语音鉴权请求
智能云上手指南:如何使用万象优图服务的 Python SDK
6 月 21 日,腾讯云在 2017「云+未来」峰会上推出了战略新品——智能云,宣布将腾讯积累近 20 年的 AI 能力向政府、企业和开发者开放,其中首批开放计算机视觉、智能语音识别、自然语言处理的三
腾讯云开发者社区
2017/06/21
2.7K0
腾讯云ASR产品-PHP实现录音文件识别极速版鉴权请求
(2)腾讯云控制台开通实时语音权限 https://console.cloud.tencent.com/asr
HI hero
2021/10/11
6.6K14
小程序开发:上传图片到腾讯云
使用对象存储服务 COS 时,可通过 RESTful API 对 COS 发起 HTTP 匿名请求或 HTTP 签名请求,对于签名请求,COS 服务器端将会进行对请求发起者的身份验证。
goodspeed
2020/12/22
16.5K0
小程序开发:上传图片到腾讯云
腾讯云 COS 访问方法
签名即输入 SecretId、SecretKey、有效时间时间戳,原始请求,得到以下签名内容的过程:
dandelion1990
2024/01/02
2.1K0
腾讯云 COS 访问方法
内嵌日志服务控制台
日志服务提供 日志服务控制台 内嵌到其他系统的能力,满足不需要登录腾讯云控制台即可查询分析日志的诉求。通过内嵌日志服务控制台页面,可以给用户带来以下方便:
日志服务CLS小助手
2021/02/07
9630
腾讯云OCR文字识别“测评”
前不久有朋友为了方便工作,问我“怎么把图片中的文字提取出来”,我当时就想到手机QQ扫一扫刚好可以实现这个功能,就让他先将图片传到手机,然后再用手机QQ扫一扫 。
神无月
2018/06/01
20.6K0
腾讯云OCR文字识别“测评”
腾讯云OCR文字识别“测评”
本文目录 前言 API选择 腾讯云OCR 简介: 请求头: 返回内容 计费方式 调用注意事项 PHP源码分享 使用体验: 前言 前不久有朋友为了方便工作,问我“怎么把图片中的文字提取出来”,我当时就想到手机QQ扫一扫刚好可以实现这个功能,就让他先将图片传到手机,然后再用手机QQ扫一扫 告诉他之后,我也感觉有点不妥,要是一张两张还好,要是图片多了,一直把图片传到手机,用手机QQ扫是极其影响工作效率的,然后就去百度了下看看有没有那种在线识别的,居然没找到。于是乎,作为一个“程序员”,哪能被这些东西给难倒
神无月
2018/06/06
52.3K1
基于(PHP)人脸核身微信H5页面(普通模式)搭建
(2)腾讯云控制台开通人脸核身权限 https://console.cloud.tencent.com/faceid/access
HI hero
2020/11/23
3.4K0
【玩转腾讯云】【腾讯云机器翻译TMT】机器翻译入门
通过https://cloud.tencent.com/register注册腾讯云账号
LinSP
2020/05/02
10.1K2
CKafka系列学习文章 - 手动拼接和自动拼接请求URL(十)
导语:我们来搭建开发环境调用消息队列 CKafka--手动拼接和自动拼接请求URL,来调用获取消费分组offset的接口
发哥说消息队列
2019/09/05
1K0
微信群发sdk「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135884.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/19
1.4K0
GitHub Actions + 腾讯云COS + SCF云函数 + 自动刷新CDN 完美自动化部署静态网站
作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践.
用户8851537
2021/07/30
1.6K0
微信普通H5接入腾讯云慧眼活体人脸核身SAAS服务
腾讯云慧眼人脸核身(原金融级身份认证升级版)是一组对用户身份信息真实性进行验证审核的服务套件,提供各类认证功能模块,包含证件 OCR 识别、活体检测、人脸1:1对比等能力,以解决行业内大量对用户身份信息核实的需求,广泛应用于金融、运营商、共享出行等领域。
周朋伟
2020/11/10
9.2K4
微信普通H5接入腾讯云慧眼活体人脸核身SAAS服务
【玩转腾讯云】GitHub Actions + 腾讯云COS + SCF云函数刷新CDN 自动化部署静态网站
作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践.
Stille
2020/04/21
6.1K3
【玩转腾讯云】GitHub Actions + 腾讯云COS + SCF云函数刷新CDN 自动化部署静态网站
推荐阅读
相关推荐
如何在小程序中实现人脸识别功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档