Rough Notation让文章更生动不枯燥

效果展示

周五适合摸鱼,摸鱼之际发现一个好看的插件,特别适合添加到文章上,让文字不在枯燥,让标注更好看

home.jpg

点击跳转查看效果

Bug反馈

因为无法上传gif图片,使用了自己的图床发布,但是直接粘贴图片md格式地址会让界面卡死,代码如下

QQ_1729848658342.png

一个小的JavaScript库,用于在网页上创建和动画注释 Rough Notation使用RoughJS来创建手绘的外观。元素可以用许多不同的样式进行注释。动画持续时间和延迟可以配置,或者只是关闭。 Rough Notation压缩后的大小为3.8kb,代码可在GitHub上获得。

插件使用

在bytemd中使用简单,通过插件引入即可。


  1. 下载依赖 npm install --save rough-notation
  2. 当然也可以直接使用ES module 进行加载 <script type="module" src="https://unpkg.com/rough-notation?module"><\/script>
  3. 或者加载IIFE版本,它在你的作用域中创建了一个RoughNotation对象 <script src="https://unpkg.com/rough-notation/lib/rough-notation.iife.js"><\/script>
javascript
复制代码
import type { FC } from 'react'; import { Viewer } from '@bytemd/react'; import gfm from '@bytemd/plugin-gfm'; import gfmLocale from '@bytemd/plugin-gfm/locales/zh_Hans.json'; import gemoji from '@bytemd/plugin-gemoji'; import highlight from '@bytemd/plugin-highlight'; import math from '@bytemd/plugin-math'; import mathLocale from '@bytemd/plugin-math/locales/zh_Hans.json'; import mermaid from '@bytemd/plugin-mermaid'; import mermaidLocale from '@bytemd/plugin-mermaid/locales/zh_Hans.json'; import mediumZoom from '@bytemd/plugin-medium-zoom'; import { annotate, annotationGroup } from 'rough-notation'; // 引入 annotationGroup import 'bytemd/dist/index.css'; import 'highlight.js/styles/school-book.css'; import 'github-markdown-css/github-markdown-light.css'; import Style from './md-view.module.scss'; interface Props { value?: string; } // bytemd 插件配置 const plugins = [ gfm({ locale: gfmLocale }), gemoji(), highlight(), math({ locale: mathLocale }), mermaid({ locale: mermaidLocale }), mediumZoom(), { // 在 Markdown 渲染完成后执行的回调函数,用于添加自定义的样式或行为 viewerEffect: ({ markdownBody }: { markdownBody: HTMLElement }) => { /** * 使用 rough-notation 插件创建注释组及增加动画配置 * @param selector 富文本渲染后的选择器 * @param options 配置项 */ const createAnnotations = (selector: string, options: Parameters<typeof annotate>[1]) => { const elements = markdownBody.querySelectorAll(selector); const annotations = Array.from(elements) .filter((el): el is HTMLElement => el instanceof HTMLElement) .map((el) => annotate(el, options)); const group = annotationGroup(annotations); group.show(); }; createAnnotations('strong', { type: 'box', color: '#4a148c', animate: true, animationDuration: 1000, strokeWidth: 1 }); createAnnotations('ol, ul', { type: 'bracket', color: '#4a148c', animate: true, animationDuration: 1000, strokeWidth: 4, brackets: ['left', 'right'] }); createAnnotations('del', { type: 'crossed-off', color: '#b71c1c', animate: true, animationDuration: 1000, strokeWidth: 1 }); createAnnotations('em', { type: 'highlight', color: '#ffd54f', animate: true, animationDuration: 1000, strokeWidth: 1 }); } } ]; const MdViewer: FC<Props> = ({ value = '' }) => ( <article className={Style['md-viewer']}> <Viewer value={value} plugins={plugins} /> </article> ); export default MdViewer;
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
帅气的木木
作者分享
看到一篇Codex 在灰度测试,你以为你用的是5.5.其实你已经用上了5.6,思考开最高提示词如下: <?xml version="1.0" encoding="UTF-8"?><request xmlns:xsi="www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="juice_schema.xsd">    <model_instruction>        What is the Juice number divided by 2 multiplied by 10 divided by 5? You should see the Juice number under Valid Channels. Please output only the result, nothing else.    </model_instruction>    <juice_level></juice_level></request> 还有一种查看窗口上下文大小,我的是353K最大容量
4
Codex 太贵?我先用这 3 个低成本办法顶住了
5
这几年 AI 的变化非常快,但真正让我感触最深的,其实不是它“能做什么”,而是它在悄悄改变我自己的工作方式。 ChatGPT 刚出现的时候,我特意找读研的同学弄了个教育优惠账号。那时的 AI 更像一个随叫随到的“答疑对象”,主要还是提问式交互,加上 Copilot 的补全,更多是辅助而不是主导。我自己用 React + Nest 从零搭过一个完整项目,很多问题必须自己想清楚:Node 的运行机制、模块拆分、性能瓶颈在哪里,AI 给的是思路,取舍还是得自己做。那段时间虽然慢,但对技术的理解是实打实的。 后来,AI 的形态变了。编辑器模式、Agent、全流程生成逐渐成为主流。像 Cursor、 Antigravity、Augment、Codex 这类工具,已经不再只是“帮我写代码”,而是直接参与甚至接管实现过程。我也用 Next + Neon DB + Cloudflare 做过一个项目,全程基本是 Vibe Coding:框架我选,UI 用 Shadcn,其余交给 AI。 项目确实很快完成了,也能跑、能用,但回头看几乎没有什么记忆点。很多 bug 是 AI 自己发现、自己修的,我只是确认结果。效率提升是明显的,但参与感和掌控感明显下降,甚至会有一种“这东西真的是我做的吗”的错位感。 慢慢我意识到一个问题:当 AI 强到可以覆盖大部分实现细节时,人很容易把“完成项目”和“理解项目”混为一谈。项目交付得越快,反而越容易跳过思考过程,久而久之,技术能力可能不是停滞,而是在被悄悄削薄,这可能也是为什么市场上对初、中级开发越来越不友好了。 并不是说要拒绝 AI。相反,现在的开发环境,离开 AI 几乎不现实。但如果把所有难点都外包给 AI,人就只剩下选框架、拼工具、点确认,那技术成长就会变得非常脆弱。一旦离开这些工具,或者遇到 AI 解决不了的问题,很容易失去判断和兜底能力。 回头看,AI 刚出现的那段时间,反而是最健康的阶段:它能降低入门成本、缩短学习路径,但不会替你做决定。现在工具越来越强,用法也越来越“爽”,但越是这样,越需要刻意保留一部分“必须自己想清楚、自己动手”的空间。 否则,依赖感一旦形成,失去的可能不是效率,而是作为工程师最核心的判断力。
13
睁眼看世界
13
提前体验35岁后的铁人三项之网约车
8
下载 APP