准备软件环境

1. 软件环境

首先,需要使用到的软件和工具环境如下:

  • 一个最新的chrome浏览器
  • 编辑器vscode

2. 使用的js库

代码高亮库:prismjs

https://prismjs.com/download.html

markdown解析库:marked.min.js

https://github.com/markedjs/marked

搭建工程

创建一个md-reader目录,进入md-reader目录

1. 目录结构

然后,创建需要的文件

md-reader
|----src
| |--- manifest.json
| |--- images
| | |--- dog_128.png
| | |--- dog_48.png
| | └--- dog_16.png
| |
| |--- prism.css
| |--- prism.js
| |--- marked.min.js
| └--- main.js
|
|---- package.json

2. 配置文件说明

manifest.json

Chrome插件的配置文件,里面的配置项不做具体说明了。

{
// 清单文件的版本,这个必须写,而且必须是2
"manifest_version": 2,
// 插件的名称
"name": "Markdown plugin",
// 插件的版本
"version": "1.0.0",
// 插件描述
"description": "Converts and previews markdown to HTML right inside Chrome.",
// 插件图标
"icons": {
"128": "images/dog_128.png",
"48": "images/dog_48.png",
"16": "images/dog_16.png"
},
// 插件需要获取的权限
"permissions": ["tabs", "<all_urls>"],
"content_scripts": [{
"js": ["marked.min.js","prism.js", "main.js"],
"matches": ["*://*/*.md", "file://*/*.md", "*://*/*.markdown", "file://*/*.markdown"],
"run_at": "document_end"
}],
"web_accessible_resources": [
"prism.css"
]
}

prism.css 和 prism.js是代码高亮插件的css和js文件

marked.min.js 是markdown解析插件的js文件

main.js 主要执行文件,用来获取页面上的文本,并解析markdown内容后展示

main.js内容如下

(function(document) {

	//引入css
let link = document.createElement('link');
link.rel = 'stylesheet';
link.href = chrome.extension.getURL('prism.css');
document.head.appendChild(link); //marked基本设置
var renderer = new marked.Renderer();
marked.setOptions({
renderer: renderer,
gfm: true,
tables: true,
breaks: false,
pedantic: false,
sanitize: false,
smartLists: true,
smartypants: false,
highlight: function (code,lang, callback) {
return Prism.highlight(code, Prism.languages.javascript, lang);
}
}); //解析markdown
let markdowntext = document.body.innerText;
document.body.innerHTML = marked(markdowntext);
let pres = Array.from(document.getElementsByTagName("pre"));
pres && pres.forEach(pre=>{ pre.classList.add("language-all"); }) }(document));

加载使用插件

打开chrome设置 -> 更多工具 -> 扩展程序 -> 加载已解压的扩展程序

选择刚才的插件工程目录并加载

启用插件后,在本地随便建一个xxx.md文件,输入markdown文本。使用浏览器可以解析查看。

示例效果如下:

测试通过后,打包扩展程序,导出为plugin.crx文件

开发一个简单的chrome插件-解析本地markdown文件的更多相关文章

  1. 开发一个简单的babel插件

    前言 对于前端开发而言,babel肯定是再熟悉不过了,工作中肯定会用到.除了用作转换es6和jsx的工具之外,个人感觉babel基于抽象语法树的插件机制,给我们提供了更多的可能.关于babel相关概念 ...

  2. 搜索引擎快捷导航:一个简单的chrome插件(教程)

    一.如何通过练习来提高学习新框架的最好姿势是:基于现有的业务来学习.即从工作中学习,从实践中学.但是,如果一直只使用新的框架来重写旧的业务,成长也会趋近于0.第一次,使用新框架时收获可能颇丰:第二次, ...

  3. 【UI插件】开发一个简单日历插件(上)

    前言 最近开始整理我们的单页应用框架了,虽然可能比不上MVVM模式的开发效率,也可能没有Backbone框架模块清晰,但是好歹也是自己开发出来 而且也用于了这么多频道的东西,如果没有总结,没有整理,没 ...

  4. Chrome 插件: 起动本地应用 (Native messaging)

    Chrome 插件: 起动本地应用 (Native messaging) www.MyException.Cn  网友分享于:2014-08-01  浏览:3次   Chrome 插件: 启动本地应用 ...

  5. 接口测试从未如此简单 - Postman (Chrome插件)

    接口测试从未如此简单 - Postman (Chrome插件) 一个非常有力的Http Client工具用来测试Web服务的, 我这里来介绍如何用它测试restful web service 注:转载 ...

  6. Python开发一个简单的BBS论坛

    项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...

  7. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  8. 如何开发一个简单的HTML5 Canvas 小游戏

    原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...

  9. 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务

    [源码下载] 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后 ...

随机推荐

  1. vueRouter 子路由嵌套

    router.js import Vue from 'vue' import Router from 'vue-router' import contractPage from './views/co ...

  2. java如何编写多线程

    1.如何实现多线程 1.1实现Runnable接口,实现run()方法. public class Main4 implements Runnable { public static void mai ...

  3. IDEA 发布Api

    1.修改Main方法 代码: public class AlicsbapiApplication extends SpringBootServletInitializer { @Override pr ...

  4. 调参贝叶斯优化(BayesianOptimization)

    from sklearn.datasets import make_classification from sklearn.model_selection import cross_val_score ...

  5. 剑指offer 10:矩形覆盖

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? public class Solution { public ...

  6. 【python3】 函数 装饰器

    第一步 : 了解装饰器 装饰器模式,重点在于装饰,装饰的核心仍是被装饰的对象. 举一个栗子:我今天穿了一件短袖,但是突然一阵风,短袖没办法为我御寒,我想到的办法是将短袖变得更厚更长,但是改造之后,它就 ...

  7. Vue-admin工作整理(十八):Mock的使用方法

    # Mock简明文档           ## Mock.mock()           - Mock.mock( requestUrl?, requestType?, template|funct ...

  8. 用户端访问centos7上面的tomcat,访问页面出现的非常的慢?

    原因:因为客户端访问centos7上面的tomcat会先 建立session连接,这个连接会用到random的随机数,在linux系统中有一个熵池的概念(熵池是一个内核参数), 他要 用熵池里面的随机 ...

  9. 浅谈现公司的Spring Cloud微服务框架

    目录 说在前面 服务注册与发现 服务网关及熔断 配置中心 消息中心.服务链路追踪 小言 说在前面 本文偏小白,大佬慎入,若有错误或者质疑,欢迎留言提问,谢谢,祝大家新年快乐. spring cloud ...

  10. windows 根据端口查看进行PID 并杀掉进程

    1. 首先用netstat -ano | find “端口号”查出进程号 明明有端口号是17568和18892, 如何确定是17568呢 2. takslist 查询当前的进行 3. 如何杀死进程呢  ...