localbookmark 本地网络书签,使用过pocket书签,感觉不错,但是由于网络原因,有时很慢,所以想弄一个本地的书签。另外增加个人书签,加密存储,登录才能查看。

Project setup

npm install

Compiles for development

npm run dev:chrome

Compiles and minifies for production

npm run build

#在此记录几个遇到的问题: ##1.chrome插件信息交互,popup.js、background.js、content.js、插件主页之间的交互,通用方法是

》发送消息chrome.runtime.sendMessage

》监听处理消息chrome.runtime.onMessage.addListener

在popup与background交互时,有帖子说采用chrome.extension.getBackgroundPage()可以直接获得background中的方法和变量,但是我测试失败,所以采用了通用的方法

在popup页sendMessage时,本想发送给background,但是插件主页收到了消息,所以才处理消息是判断了消息发送方。

##2.使用bluebird的Promise编写同步方法。 Promise.promisify可以很方便的将(params, callback)2个参数的函数转化为promise函数 例如Promise.promisify( crypto.randomBytes )

但是其他参数形式,需要些封装函数,例如:

var insertUser = function( doc){return new Promise( function( resolve, reject ){db.privateDoc.insert( doc, (err, res )=>{if( err )reject( err )elseresolve( res )} )})
}

##3.使用crypto加解密

// 加密
function crypMessage( msg, password,iv ){const cipher = crypto.createCipheriv('aes-128-cbc', password, iv);let crypted = cipher.update(msg,'utf8', 'hex')crypted += cipher.final('hex');console.log(crypted);return crypted;
}// 解密
function decrypMessage( data, password,iv ) {const decipher = crypto.createDecipheriv('aes-128-cbc', password, iv);let decryptpted  = decipher.update(data, 'hex', 'utf8')decryptpted += decipher.final().toString();console.log(decryptpted);return decryptpted;
}

##4 使用nedb存储数据,采用文件存储,但是才chrome中运行,存储读取功能正常,但是为查到数据文件存在哪?

##5 待完善功能: (1)加密后的记录,如何查重复,这里采用了md5摘要,后续找专业方法,比如文件一致性比较

(2)导入导出功能

参考文档

See Configuration Reference.

See AES加解密算法的模式介绍.

See node.js的Promise库-bluebird示例.

See Mozilla WebExtension APIs说明,部分与chrome API兼容.

此项目github链接是https://github.com/jahson88/localbookmark

本地网络书签,使用nodejs写的chrome插件相关推荐

  1. Chrome插件英雄榜

    作为一个Chrome插件的爱好者, 我经常写一些优秀插件的使用教程 也会把一些风评极好的插件,录制成视频 Chrome插件优势很大 Chrome插件与平台无关, Chrome插件可以运行于macOS, ...

  2. 知乎快捷取消我关注的问题chrome插件

    起因 昨天上知乎一看,发现自己关注的问题接近1000个了,不能忍,希望控制在500个以以内最好是100个以内.于是打开我关注的问题列表.发现这个列表已经由滚动加载变成了分页,并且不能在问题列表页面直接 ...

  3. python调用chrome插件_使用Python开发chrome插件

    标签: 谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaSc ...

  4. 网络爬虫最终方案:chrome插件

    最近因为已经提离职了所以比较空,这里分享一下我的一个针对js反爬的最终方案. 爬虫的核心: 爬虫的核心就是模拟正常用户访问.最低级的反爬虫会检测一些诸如referer,cookie之类的use-age ...

  5. chrome python插件_使用Python开发chrome插件

    谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaScript ...

  6. Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法

    Chrome 浏览器插件问题处理 第一章:问题描述 ① 问题一:请停用以开发者模式运行的插件 ② 问题二:该拓展程序未列在 chrome 网上应用商店中,并可能是在您不知情的情况下添加的 第二章:Ch ...

  7. python写chrome插件_用VueJS写一个Chrome浏览器插件

    浏览器基本已经天下大统了,放眼望去都是Chromium的天下.那么,能写一个浏览器插件也算是一种回报率不错的技能. 基本知识 浏览器插件官方的说法叫扩展程序,允许你为浏览器增加各种功能,但不需要深入研 ...

  8. 插件、页面-在csdn写markdown,基于chrome插件-by小雨

    最近朋友几篇文章介绍了改插件.页面-的文章. 关联文章的址地 由于csdn前当不并支撑markdown格式,因此针对csdn做了一个chrome插件,用来剖析markdown格式的文章. 限局:只支撑 ...

  9. 如何为豆瓣FM写一个chrome的歌词插件

    对于喜欢豆瓣FM的同学来说,没有歌词是件令人苦恼的事,下面我就来总结下怎样为豆瓣FM写一个chrome的歌词插件. --------------------------------- 1.需要的技能 ...

最新文章

  1. 世博、城市云和2020
  2. python super 理解(一)
  3. [JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇)
  4. html入门学习(一)
  5. 语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现
  6. 【机器学习】集成学习之梯度提升树GBDT
  7. Canvas Clock
  8. 用matlab设计滤波器实验报告,数字信号出来实验报告--matlab滤波器设计
  9. ssm框架mysql自增_手把手教你整合最优雅SSM框架
  10. 第七节:SpringBoot高级属性配置二
  11. POJ 3581:Sequence(后缀数组)
  12. MySQL(10)-----多表创建及描述表关系(一对多的分析和实现)
  13. arr访问绝对地址_ECSHOP源码里的图片的相对地址改为绝对地址 (1)
  14. SQL Bulk Insert
  15. HSpice中的测量语句(I)
  16. java声音变音代码实现_大话音频变声原理 附简单示例代码
  17. 你还在被触摸事件困扰吗?看看这篇吧
  18. 数学与泛型编程(6)编程的基本概念
  19. 景安网络快云mysql版本_景安快云数据库使用教程
  20. AI遮天传 ML-KNN

热门文章

  1. 推荐2个免费在线预览word,xlsx,pdf地址
  2. 善于使用F12开发人员工具来快速调试js代码
  3. Quartz 定时任务时间设置
  4. 程序员找工作的几点建议
  5. js替换字符串中全部“-”
  6. JS 实现替换字符串中所有指定字符总结
  7. linux gunzip解压到指定目录,gunzip 和 unzip 解压文件到指定的目录
  8. The Foundry Modo 13 for Mac(3D建模渲染工具)
  9. insmod nbd.ko 报错‘Invalid module format‘ 处理方法
  10. 离开计算机英语,计算机英语 揭开“cookies”之谜