使用 Create-React-App 开发 Chrome 扩展
整理 Kindle 标注、书签和笔记从未如此简单!
Kindle 标注管理应用 Kindle Mate 只支持 Windows,不支持 Mac。标注只是解析我的剪贴文本文件,配合 FileReader API,写个 Chrome 扩展解析文本文件就好了。
初始化项目
安装 React 脚手架 create-react-app
npm i -g create-react-app
初始化项目
create-react-app my-clippings --typescript
--typescript 表示使用 typescript。强烈推荐使用 ts,Vue 3.x 使用 ts 重写,Angular 2.x+ 只能使用 ts,ts 是大势所趋。
删除 src/serviceWorker.ts 文件,用不着。
支持 Sass
安装 node-sass 即可。
若要支持 css modules,文件名从 index.scss 改为 index.module.scss 即可。
npm i -D node-sass
读取文件
读取的文件是 Kindle 中的 /documents/My Clippings.txt 文件,Kindle 设置任何语言都是这个文件。只不过在不同语言下的显示不一样。
使用 FileReader API 可以轻松读取文本文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<input type="file" accept=".txt" id="file-upload" />
<script>
const dom = document.querySelector("#file-upload");
dom.onchange = function(event) {
const file = event.currentTarget.files[0];
const reader = new FileReader();
reader.readAsText(file);
reader.onload = () => {
const temp = reader.result;
console.log(temp);
};
};
</script>
</body>
</html>
解析文本
要解析的文本为下面的格式,使用简单的正则表达式即可解析。
根据 Kindle 设置的语言,中文与英文的格式会稍有不同,需要做不同的解析。
==========
娱乐至死 (尼尔·波兹曼)
- 您在位置 #1882-1884的标注 | 添加于 2019年6月2日星期日 上午10:07:30
古希腊哲学家在2500年以前就说过,人常常以自己的形象塑造上帝。现在,电视政治又添了新招:那些想当上帝的人把自己塑造成观众期望的形象。
==========
娱乐至死 (尼尔·波兹曼)
- 您在位置 #1925-1927的标注 | 添加于 2019年6月2日星期日 上午10:11:09
历史的消失根本不需要如此残酷的手段,表面温和的现代技术通过为民众提供一种政治形象、瞬间快乐和安慰疗法,能够同样有效地让历史销声匿迹,也许还更恒久,并且不会遭到任何反对。
==========
娱乐至死 (尼尔·波兹曼)
- 您在位置 #1961-1963的标注 | 添加于 2019年6月2日星期日 上午10:14:42
自由不是靠关掉电视实现的。电视对于大多数人来说,是生活中最有吸引力的东西。我们生活在一个绝大多数人不会关掉电视的世界里。如果我们不直接从电视得到某种信息,我们也会通过其他人得到它。
==========
配置 manifest.json
发布 Chrome 应用需要配置 manifest.json 。
更多设置可以查看开发文档
{
"name": "My Clippings", // 扩展名
"short_name": "Clippings",
"description": "Organizing your Kindle Highlight、Bookmark and Notes so easy.", // 描述
"version": "0.0.6", // 版本号,每次提交到 chrome 应用中心
"version_name": "0.0.6",
"manifest_version": 2,
"author": "Steve Xu",
"browser_action": {
// 点击应用图标的操作
"default_icon": "icon-48.png",
"default_title": "My Clippings"
},
"homepage_url": "https://github.com/nusr/my-clippings",
"offline_enabled": true, // 允许离线运行
"permissions": ["activeTab", "tabs", "storage"], // 使用的 chrome 权限
"icons": {
// 图标
"16": "icon-16.png",
"32": "icon-32.png",
"48": "icon-48.png",
"64": "icon-64.png",
"128": "icon-128.png",
"200": "icon-200.png"
},
"content_security_policy": "script-src 'self'; object-src 'self';", // 允许加载的文件
"background": {
"scripts": ["background.js"], // 外部运行的 js
"persistent": false
}
}
// background.js
// 点击扩展图标,打开新的 Tag 页面
function activeNewTab() {
var chrome = window.chrome;
if (!chrome) {
return;
}
chrome.browserAction.onClicked.addListener(function() {
var url = chrome.extension.getURL("index.html");
if (window.tabId) {
chrome.tabs.update(window.tabId, { selected: true });
} else {
chrome.tabs.create({ url: url }, function(tab) {
window.tabId = tab.id;
});
}
});
chrome.tabs.onRemoved.addListener(function(tabId) {
if (tabId === window.tabId) {
window.tabId = null;
}
});
}
activeNewTab();
上传到 Chrome 网上应用商店
Chrome 网上应用商店上传地址是 https://chrome.google.com/webstore/developer/dashboard。
上传应用需要支付 5 美元的开发者费用。对于没有信用卡的人来说,淘宝可以找到相关代付途径,或者寻求朋友帮助。
支付完成就可以上传应用了,一个账号最多上传 20 个应用。
使用 Create-React-App 开发 Chrome 扩展的更多相关文章
- 如何扩展 Create React App 的 Webpack 配置
如何扩展 Create React App 的 Webpack 配置 原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...
- 开发 chrome 扩展 GitHub-Remarks 的一些想法以及遗憾
前文 对于单页应用中如何监听 URL 变化的思考 说到我在开发 chrome 扩展 GitHub Remarks 中遇到的一个问题,本文来聊聊开发这个扩展的前后心路历程. 为什么开发这个扩展?前文说到 ...
- 使用create react app教程
This project was bootstrapped with Create React App. Below you will find some information on how to ...
- 深入 Create React App 核心概念
本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...
- 在 .NET Core 5 中集成 Create React app
翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...
- tap news:week5 0.0 create react app
参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...
- 手把手教你开发chrome扩展
转载:http://www.cnblogs.com/walkingp/archive/2011/04/04/2003875.html 手把手教你开发chrome扩展一:开发Chrome Extenst ...
- 手把手教你开发Chrome扩展三:关于本地存储数据
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
- 手把手教你开发Chrome扩展二:为html添加行为
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 上一节我们 ...
随机推荐
- java命名总结
下文主要来源于网上,我做了一些编辑整理. “如果你不知道一件事物叫什么, 你就不知道它是什么. 如果你不知道这是什么, 你就不可能坐下来写代码.” ----萨姆·加德纳(Sam Gardiner) 1 ...
- 公司-IT-Yahoo:百科
ylbtech-公司-IT-Yahoo:百科 雅虎(英文名称:Yahoo!,NASDAQ:YHOO)是美国著名的互联网门户网站,也是20世纪末互联网奇迹的创造者之一.其服务包括搜索引擎.电邮.新闻等, ...
- 让typecho支持PHP7
在PHP7环境下新安装Typecho默认是使用Pdo_Mysql数据库引擎驱动 如果之前Typecho运行环境不是PHP7,后来才升级为PHP7的,那么,需要将你的Typecho数据库引擎修改为Pdo ...
- Centos7无法播放mp4视频(待验证)
新安装Centos7后,发现无法正常播放本地mp4视频 可以尝试安装 yum -y install ffmpeg 安装之后,需要重启电脑才能生效 浏览器安装年flash,只能播放部分视频,也有可能是s ...
- EF Code First 快速创建
以.net framework为例,包括数据库管理类库和启动项目两个项目文件 数据库管理类库 新建一个类库,名称为XXX.Database 管理nuget包,引入库EntityFramework 6. ...
- Dockerfile常用指令说明
具体解释:https://blog.csdn.net/achenyuan/article/details/80231922 将dockerfile文件和生成好的jar 使用ftp工具上传到linux服 ...
- Redis实现实时热点查询
Redis内存淘汰 定义: 指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况 机制存在原因: Redis最常见的两种应用场景为缓存和持久存储 首先要明确的一个问题是 ...
- js实现html表格<td>标签中带换行的文本显示出换行效果
遇见问题 如下内容中我写了几行,但是表格中并未按行显示,换行符反而变成了空格,于是想自己转换下 思考问题 1.可以看到表格的内容是后端传来的数据,于是想直接在后端转换下,把换行符替换成<br&g ...
- Idea 目录结构下有红色波浪线
问题截图: 解决方案: Build -> Rebuild Project
- kafka 如何保证数据不丢失
一般我们在用到这种消息中件的时候,肯定会考虑要怎样才能保证数据不丢失,在面试中也会问到相关的问题.但凡遇到这种问题,是指3个方面的数据不丢失,即:producer consumer 端数据不丢失 b ...