Stylus 浏览器扩展开发-Cursor AI辅助
项目起源
作为一个经常需要长时间盯着屏幕的开发者,我一直在寻找一个简单的方法来保护眼睛。最初的想法很简单:将网页背景色替换成护眼的豆沙绿。虽然市面上已经有类似的扩展,但我想要一个更加轻量且可定制的解决方案。
这个简单的需求逐渐演变成了一个完整的浏览器扩展项目 —— Stylus。不仅实现了最初的护眼模式,还扩展出了更多实用的功能。

技术选型
在开发初期,我面临着技术栈选择的问题。传统的浏览器扩展开发往往需要处理很多底层细节,特别是在 Manifest V3 规范下。在调研过程中,我发现了 WXT (Web Extension Tools) 这个强大的工具。
选择 WXT 的原因:
- 提供了现代化的开发体验
- 内置了 TypeScript 支持
- 简化了扩展开发的复杂度
- 支持 React 等现代前端框架
- 完全兼容 Manifest V3 规范
技术栈概览:
- WXT 作为核心开发框架
- React 18 构建用户界面
- TypeScript 5 确保代码类型安全
- Stylus 处理样式
- Chrome Extension Manifest V3 规范

AI 辅助开发
在开发过程中,我大量使用了 Cursor AI 作为开发助手。这极大地提升了开发效率:
-
代码生成
- 快速生成样式模板
- 编写常用的注入函数
- 处理复杂的正则匹配规则
-
问题解决
- 快速定位和修复 bug
- 优化性能问题
- 提供最佳实践建议
-
文档编写
- 生成注释和文档
- 完善 README
- 编写用户指南
核心功能实现
护眼模式
最初的核心功能 —— 护眼模式的实现:
body {background-color: #c7edcc !important;color: #333333 !important;
}/* 调整文本颜色和背景 */
p, div, span, li, td, th, caption, label, input, textarea {background-color: #c7edcc !important;color: #333333 !important;
}/* 调整图片亮度 */
img {filter: brightness(0.95) !important;
}
样式注入系统
为了使扩展更加通用,我设计了一个灵活的样式注入系统:
- 支持多样式表管理
- 实时预览功能
- URL 匹配规则
- 样式优先级控制
国际化支持
考虑到不同用户的需求,添加了多语言支持:
- 简体中文
- 繁体中文
- 日语
- 韩语
- 英语
未来计划
-
性能优化
- 减少样式注入的性能开销
- 优化规则匹配算法
- 添加样式缓存机制
-
功能扩展
- 支持更多预设模板
- 添加样式分享功能
- 实现云端同步
-
社区建设
- 开源代码
- 建立用户反馈系统
- 完善文档和示例
总结
从一个简单的护眼需求,到一个功能完整的浏览器扩展,Stylus 的开发过程让我深入理解了浏览器扩展的开发模式。通过使用现代化的开发工具和 AI 辅助,大大提升了开发效率。希望这个项目能帮助到更多需要定制网页样式的用户。
欢迎访问 项目主页 了解更多详情,也欢迎提交 Issue 和 PR 来帮助改进项目。
📌 开发者必备工具: 在 Tool.tushuoit.com 发现免费在线工具集!推荐 App Store 截图生成器、应用图标生成器 和 [小红书引导图生成器]
相关文章:
Stylus 浏览器扩展开发-Cursor AI辅助
项目起源 作为一个经常需要长时间盯着屏幕的开发者,我一直在寻找一个简单的方法来保护眼睛。最初的想法很简单:将网页背景色替换成护眼的豆沙绿。虽然市面上已经有类似的扩展,但我想要一个更加轻量且可定制的解决方案。 这个简单的需求逐渐…...
DAY35|动态规划Part03|LeetCode:01背包问题 二维、01背包问题 一维、416. 分割等和子集
目录 01背包理论基础(一) 基本思路 C代码 01背包理论基础(二) 基本思路 C代码 LeetCode:416. 分割等和子集 基本思路 C代码 01背包理论基础(一) 题目链接:卡码网46. 携带研究材料 文字…...
创建空向量:std::vector<int> v,刚创建时大小为0
创建一个空的std::vector<int> v会在刚创建时具有大小(size)为0的特点。这意味着此时向量中没有任何元素,而且其容量(capacity)也返回0,表明还没有为这个向量分配任何内存空间3。换句话说,…...
VBA基础2
VBA基础2 sub过程语法对单元格进行赋值操作连续赋值不连续赋值 cells (行,列)行引用rows列引用 (columns)offset位移属性End属性(指定返回) 使用VBA编辑器需要用AltF11打开 或者VB编辑器打开 可…...
计算机网络-GRE基础实验二
前面我们学习了GRE隧道的建立以及通过静态路由指向的方式使得双方能够网络互联,但是通过静态路由可能比较麻烦,GRE支持组播、单播、广播因此可以在GRE隧道中运行动态路由协议使得网络配置更加灵活。 通过前面的动态路由协议的学习我们知道动态路由协议都…...
JSON 使用
JSON 使用 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但因其文本格式清晰简洁,被广泛用于数据交换和存储。本文将详细介绍JSON的使用方法,包括其语法、数据类型、如…...
Leetcode—1539. 第 k 个缺失的正整数【简单】
2024每日刷题(206) Leetcode—1539. 第 k 个缺失的正整数 C实现代码 class Solution { public:int findKthPositive(vector<int>& arr, int k) {int missing 1;int cur 1;int n arr.size();int missingCnt 0;int ptr 0;for(; missingCn…...
深入浅出:PHP 控制结构与循环语句
文章目录 引言控制结构条件判断if-else 语句elseif 语句嵌套的 if 语句三元运算符 switch 语句 循环语句for 循环遍历数组使用 range() while 循环基本用法无限循环循环控制语句break 语句continue 语句do-while 循环 综合案例参考资料 引言 PHP 是一种广泛用于服务器端开发的…...
深入解析 Loss 减少方式:mean和sum的区别及其在大语言模型中的应用 (中英双语)
深入解析 Loss 减少方式:mean 和 sum 的区别及其在大语言模型中的应用 在训练大语言模型(Large Language Models, LLM)时,损失函数(Loss Function)的处理方式对模型的性能和优化过程有显著影响。本文以 re…...
c++ auto
在C中,auto 是一种类型推导关键字,它允许编译器根据初始化表达式的类型自动推导变量的类型。自 C11 标准引入以来,auto 使得代码更加简洁,并且可以减少冗长的类型声明,尤其是在类型名称非常复杂或难以立即确定的情况下…...
python中的列表、元组、字典的介绍与使用
目录 一、区别介绍 1.使用场景以及区别图 2.详细介绍 列表 元组 字典 二、例子操作 (一)列表list 1.定义和初始化 2.访问元素(下标) 3.修改元素(下标) 4.添加元素(append、下标insert) 5.删除…...
深入浅出:PHP中的表单处理全解析
引言 在Web开发的世界里,表单是用户与服务器之间交互的重要桥梁。它们允许用户提交信息,并通过后端语言(如PHP)进行处理。本文将带你深入了解PHP中的表单处理,从基础的创建和提交到高级的安全措施和实用技巧ÿ…...
双绞线直连两台电脑的方法及遇到的问题
文章目录 前言一、步骤二、问题总结:问题1:遇到ping不通的问题。问题2:访问其他电脑上的共享文件时提示输入网络凭证问题3:局域网共享文件时提示“没有权限访问,请与网络管理员联系请求访问权限” 前言 办公室里有两台电脑,一台装了显卡用于…...
2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战解题全过程文档及程序
2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现: 2023 年开年,ChatGPT 作为一款聊天型AI工具,成为了超越疫情的热门词条;而在AI的另一个分支——绘图领域,一款名为Midjourney(MJÿ…...
Qt 设置QLineEdit控件placeholderText颜色
Qt 会根据QLineEdit控件显示文本的颜色自动设置placeholderText颜色,如果想自定义placeholderText颜色,可以通过以下方法。 在样式文件中增加以下设置: QLineEdit#lineEdit_userName, QLineEdit#lineEdit_password{border: none;padding: 6…...
麒麟 V10 系统(arm64/aarch64)离线安装 docker 和 docker-compose
前期准备 查看操作系统版本,跟本文标题核对一下 uname -a查看操作系统架构 uname -m下载离线包 下载 docker 离线包 地址:https://download.docker.com/linux/static/stable/ 选择系统架构对应的文件目录:aarch64,我目前使用…...
Windows基线自动化检查脚本
本批处理脚本的主要目的是对Windows系统进行安全性检查。检查了多个安全参数和设置,以确保系统符合特定的安全标准。当然也可能有些检查项不是很准确,需要根据实际环境再调试一下,以下是该脚本的详细描述和功能分析: 1. 脚本初始…...
离谱的梯形滤波器——增加过渡点
增加过渡点 频率采样法(Frequency Sampling Method)是一种设计FIR滤波器的方法,通过在频域中指定希望的频率响应,然后利用逆离散傅里叶变换(IDFT)来获得滤波器的脉冲响应。然而,这种方法容易导…...
tauri下的两个常用rust web框架:Leptos和Trunk
tauri下有两个常用rust web框架,就是Leptos和Trunk Leptos Leptos 是一个基于 Rust 的 Web 框架。您可以在他们的官方网站上了解更多关于 Leptos 的信息。本指南适用于 Leptos 的 0.6 版本。 Leptos Leptos 是一个用 Rust 编写的现代、高效且安全的 Web 框架。它…...
pubmed关键词搜索技能1:待更新
1,白话变为领域内学术词: 例如,我想要做蛋白质糖基化修饰以功能,这个领域课题,则 第一性原理,首先是拆分词汇:糖基化(一般比蛋白质、修饰、功能要在title中更常见,或者是…...
VINS-Mono跑EUROC数据集后,如何用evo工具包进行轨迹精度评估与可视化(附完整命令)
VINS-Mono轨迹精度评估实战:从EUROC数据集到evo工具包全流程解析 在完成VINS-Mono算法在EUROC数据集上的运行后,如何科学评估其轨迹精度成为算法优化和论文撰写的关键环节。本文将深入讲解使用evo工具包进行定量分析的完整流程,涵盖指标计算、…...
二维码生成新体验:Amazing-QR核心功能与个性化应用指南
二维码生成新体验:Amazing-QR核心功能与个性化应用指南 【免费下载链接】amazing-qr 💮 amazing QRCode generator in Python (supporting animated gif) - Python amazing 二维码生成器(支持 gif 动态图片二维码) 项目地址: ht…...
ESXI系统安装全攻略:从U盘启动到网络配置
1. ESXI系统安装前的准备工作 第一次接触ESXI系统的朋友可能会觉得有点懵,其实它就是一个专门用于虚拟化的操作系统。简单来说,它能让一台物理服务器变成多台虚拟服务器,特别适合用来搭建测试环境或者部署云服务。我自己在数据中心工作时&…...
Go语言中的工具链:从go build到go generate
Go语言中的工具链:从go build到go generate 前言 作为一个在小厂挣扎的Go后端老兵,我对工具链的理解就一句话:能自动化的绝不手动。 想当年在大厂时,工具链那叫一个完善,从代码编译到部署上线,全程自动化。…...
终极指南:3分钟掌握QMK Toolbox键盘固件刷写技巧
终极指南:3分钟掌握QMK Toolbox键盘固件刷写技巧 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox 你是否曾想过让你的机械键盘拥有独一无二的按键布局?或者想为心爱…...
S32K144开发环境避坑指南:SDK选择与Segger JLink配置详解
S32K144开发环境避坑指南:SDK选择与Segger JLink配置详解 第一次接触NXP S32K144微控制器时,最令人头疼的莫过于开发环境的搭建。记得去年接手一个汽车电子项目,团队花了整整三天时间才让调试器正常工作——不是因为硬件问题,而是…...
Qwen3-Reranker-0.6B部署教程:对接Weaviate向量数据库Hybrid Search集成
Qwen3-Reranker-0.6B部署教程:对接Weaviate向量数据库Hybrid Search集成 你是不是也遇到过这样的问题?用向量数据库做检索,明明搜出来一堆结果,但排在前面的总感觉不是最想要的。传统的向量相似度搜索,有时候就是差那…...
R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧)
R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧) 在生物信息学分析中,RNA-seq数据的标准化处理是确保后续差异表达分析可靠性的关键步骤。对于刚接触转录组数据分析的研究生和初级分析师来说,如何在R…...
vLLM-v0.17.1助力Java微服务:高并发下的模型推理集成方案
vLLM-v0.17.1助力Java微服务:高并发下的模型推理集成方案 1. 引言:当Java微服务遇见大模型推理 最近两年,大模型技术在企业应用中的落地速度远超预期。作为Java开发者,我们可能已经习惯了SpringBoot生态的舒适区,但当…...
电容选型实战指南
电容选型这件事,比电阻要复杂得多。电阻选错了,大多数情况是“烧了”或“不准了”;电容选错了,可能直接导致系统复位、EMI超标、寿命骤减、甚至爆炸。电容是电路中最“敏感”的元件之一,它的选型需要在电气性能、温度特性、寿命、成本、体积之间反复权衡。 一、 选型前的四…...
