markdown编辑器


利用`markdown_js`开源库实现todolist小项目的markdown日记本功能

todolist小项目地址

之前的介绍随笔todoList

markdown-js仓库

遇到的问题:

  1. 当从编辑器切换到list,然后再切换回来,之前输入的内容丢失

    解决办法:在随路由切换组件时,组件会destory,然后重新被mounted,这是导致在textarea输入的markdown字符丢失的原因。解决办法是,在编辑器组件的beforemount选项中写个函数,使得组件在渲染前检查应用statediary属性中是否有保存的值,如果有,则复制给组件的md属性。同时设置保存按钮,在保存时将数据保存到state中,如果没有用state,则应该通过emit方法,提交给父组件的data下的属性。

  2. 导入markdown_js出现问题。

    解决办法:之前我的导入方式是这样的:

import markdown from 'markdown';

htmlStr=markdown(input);

结果出错,原因在于markdown库导出的是一个对象,而不仅仅是一个函数。

解决办法:

import {markdown} from 'markdown';

htmlStr=markdown(input);

为markdown加上大括号后,就是从库中将markdown函数导出来。

意外的收获

犯了上面的错误之后,我到markdown的readme上一看,只有在CMD下的导入代码,没有在ES6下的导入方法,看来我要露一手了。

我抱着试试看的心态fork了这个项目,然后在readme中把我上面写的代码加了进去。然后给官方仓库提交了一个PR,没过几分钟,我的PR被merged了!当时看到还是挺开心的,毕竟是走出了为开源项目贡献的第一步啊,我感觉胸前的红领巾更鲜艳了。莫哈哈哈。。。

所以说,给开源项目贡献并不是想象中的那么难,如果编程功力不够,我们还可以从别的方面来出自己的一份力,比如:

  • 对于国外的项目,翻译文档
  • 完善他们的README
  • 使用中发现了BUG,给他们提交issues

总之一句话,我为人人,人人为我嘛。

最新文章

  1. C# 常用加密解密帮助类
  2. salt基本原理
  3. Spring 事物机制
  4. LightOJ 1074 Extended Traffic SPFA 消负环
  5. Learning WCF Chapter 3 Bindings One-Way and Duplex Communication
  6. 程序集引用异常 处理 app.config内控制runtime运行时应用的程序集版本指向 assemblyBinding结点 bindingRedirect
  7. 升级linux内核(2.6.32->3.10.81),安装docker
  8. new/delete 和 new[]/delete[]
  9. Ubuntu安装pycharm
  10. 关于iOS中几种第三方对XML/JSON数据解析的使用
  11. LeetCode之“树”:Sum Root to Leaf Numbers
  12. 记一次erlang语言bug导致rabbitmq的队列没有消费者的问题
  13. Activity之间的跳转和数据传输
  14. Orders matters: seq2seq for set 实验
  15. 抓取mooc中国随笔
  16. 08:Vigenère密码
  17. 大数据入门第二十二天——spark(二)RDD算子(1)
  18. Python字符串颜色输出
  19. 解决 Eclipse Indigo 3.7、ADT 中文字体偏小,完美 Consolas 微软雅黑混合字体!
  20. docker 镜像导入导出[转]

热门文章

  1. centos7,系统目录结构
  2. 深入浅出javascript(十二)继承——构造函数继承和组合继承
  3. 在aliyun遇到一些问题
  4. (数论)LightOJ -- 1245
  5. 用jquery制作一个二级导航下拉菜单
  6. noip第10课资料
  7. CSS 基础 优先级 选择器 继承
  8. 第一天:html+JavaScript函数
  9. [Proposal]Tank Battle——Infinite
  10. 使用更改跟踪(ChangeTracking)来实现数据类型变更