本地网络书签,使用nodejs写的chrome插件
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插件相关推荐
- Chrome插件英雄榜
作为一个Chrome插件的爱好者, 我经常写一些优秀插件的使用教程 也会把一些风评极好的插件,录制成视频 Chrome插件优势很大 Chrome插件与平台无关, Chrome插件可以运行于macOS, ...
- 知乎快捷取消我关注的问题chrome插件
起因 昨天上知乎一看,发现自己关注的问题接近1000个了,不能忍,希望控制在500个以以内最好是100个以内.于是打开我关注的问题列表.发现这个列表已经由滚动加载变成了分页,并且不能在问题列表页面直接 ...
- python调用chrome插件_使用Python开发chrome插件
标签: 谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaSc ...
- 网络爬虫最终方案:chrome插件
最近因为已经提离职了所以比较空,这里分享一下我的一个针对js反爬的最终方案. 爬虫的核心: 爬虫的核心就是模拟正常用户访问.最低级的反爬虫会检测一些诸如referer,cookie之类的use-age ...
- chrome python插件_使用Python开发chrome插件
谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaScript ...
- Chrome 插件:自己写的插件提示请停用以开发者模式运行的插件处理方法,该拓展程序未列在chrome网上应用商店中,并可能是在您不知情的情况下添加的解决办法
Chrome 浏览器插件问题处理 第一章:问题描述 ① 问题一:请停用以开发者模式运行的插件 ② 问题二:该拓展程序未列在 chrome 网上应用商店中,并可能是在您不知情的情况下添加的 第二章:Ch ...
- python写chrome插件_用VueJS写一个Chrome浏览器插件
浏览器基本已经天下大统了,放眼望去都是Chromium的天下.那么,能写一个浏览器插件也算是一种回报率不错的技能. 基本知识 浏览器插件官方的说法叫扩展程序,允许你为浏览器增加各种功能,但不需要深入研 ...
- 插件、页面-在csdn写markdown,基于chrome插件-by小雨
最近朋友几篇文章介绍了改插件.页面-的文章. 关联文章的址地 由于csdn前当不并支撑markdown格式,因此针对csdn做了一个chrome插件,用来剖析markdown格式的文章. 限局:只支撑 ...
- 如何为豆瓣FM写一个chrome的歌词插件
对于喜欢豆瓣FM的同学来说,没有歌词是件令人苦恼的事,下面我就来总结下怎样为豆瓣FM写一个chrome的歌词插件. --------------------------------- 1.需要的技能 ...
最新文章
- 世博、城市云和2020
- python super 理解(一)
- [JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇)
- html入门学习(一)
- 语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现
- 【机器学习】集成学习之梯度提升树GBDT
- Canvas Clock
- 用matlab设计滤波器实验报告,数字信号出来实验报告--matlab滤波器设计
- ssm框架mysql自增_手把手教你整合最优雅SSM框架
- 第七节:SpringBoot高级属性配置二
- POJ 3581:Sequence(后缀数组)
- MySQL(10)-----多表创建及描述表关系(一对多的分析和实现)
- arr访问绝对地址_ECSHOP源码里的图片的相对地址改为绝对地址 (1)
- SQL Bulk Insert
- HSpice中的测量语句(I)
- java声音变音代码实现_大话音频变声原理 附简单示例代码
- 你还在被触摸事件困扰吗?看看这篇吧
- 数学与泛型编程(6)编程的基本概念
- 景安网络快云mysql版本_景安快云数据库使用教程
- AI遮天传 ML-KNN
热门文章
- 推荐2个免费在线预览word,xlsx,pdf地址
- 善于使用F12开发人员工具来快速调试js代码
- Quartz 定时任务时间设置
- 程序员找工作的几点建议
- js替换字符串中全部“-”
- JS 实现替换字符串中所有指定字符总结
- linux gunzip解压到指定目录,gunzip 和 unzip 解压文件到指定的目录
- The Foundry Modo 13 for Mac(3D建模渲染工具)
- insmod nbd.ko 报错‘Invalid module format‘ 处理方法
- 离开计算机英语,计算机英语 揭开“cookies”之谜