设为首页 加入收藏

TOP

使用 Create-React-App 开发 Chrome 扩展(一)
2019-09-17 18:03:25 】 浏览:37
Tags:使用 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() {
  v
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇仿百度图片首页--HTML+CSS练手项.. 下一篇java开发中,一些小的JS应用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目