<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Immerse</title>
    <description>The latest articles on DEV Community by Immerse (@immerse).</description>
    <link>https://dev.to/immerse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1561044%2Fec01152d-e087-4c45-9c5b-3d59f746bdba.png</url>
      <title>DEV Community: Immerse</title>
      <link>https://dev.to/immerse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/immerse"/>
    <language>en</language>
    <item>
      <title>Daily sharing of independent developer tools</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Thu, 28 Aug 2025 23:53:59 +0000</pubDate>
      <link>https://dev.to/immerse/daily-sharing-of-independent-developer-tools-4gc6</link>
      <guid>https://dev.to/immerse/daily-sharing-of-independent-developer-tools-4gc6</guid>
      <description>&lt;p&gt;Daily sharing of independent developer tools&lt;/p&gt;

&lt;p&gt;✨  Independent developer tools:&lt;br&gt;
Keyword Sheeter is a free keyword research tool that helps SEO professionals, content creators, and digital marketers quickly generate a large number of keyword ideas.&lt;/p&gt;

&lt;p&gt;👇  Click to go directly:&lt;br&gt;
&lt;a href="https://www.indietools.work/product/79685180-915c-4d40-ae02-c181bece59d2?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/79685180-915c-4d40-ae02-c181bece59d2?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers # WebDev # IndieTools # Hackers Daily Share
&lt;/h1&gt;

&lt;p&gt;✨  Independent developer tools:&lt;br&gt;
Keyword Sheeter is a free keyword research tool that helps SEO professionals, content creators, and digital marketers quickly generate a large number of keyword ideas.&lt;/p&gt;

&lt;p&gt;👇  Click to go directly:&lt;br&gt;
&lt;a href="https://www.indietools.work/product/79685180-915c-4d40-ae02-c181bece59d2?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/79685180-915c-4d40-ae02-c181bece59d2?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Daily Sharing</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Wed, 27 Aug 2025 23:52:10 +0000</pubDate>
      <link>https://dev.to/immerse/daily-sharing-5b4o</link>
      <guid>https://dev.to/immerse/daily-sharing-5b4o</guid>
      <description>&lt;h1&gt;
  
  
  Daily Sharing
&lt;/h1&gt;

&lt;p&gt;✨  Independent developer tools:&lt;br&gt;
Seed Keywords is a free SEO tool that helps users discover potential seed keywords.&lt;/p&gt;

&lt;p&gt;👇  Click to go directly:&lt;br&gt;
&lt;a href="https://www.indietools.work/product/798d9f3e-a4f1-44a9-991a-e477db750ed5?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/798d9f3e-a4f1-44a9-991a-e477db750ed5?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>seo</category>
      <category>independent</category>
      <category>indietools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Tue, 26 Aug 2025 23:54:39 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-29c7</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-29c7</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
Free Google Rank Checker 是一款免费工具，帮助用户检查网站在 Google 搜索结果中的排名情况&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
 ​&lt;a href="https://www.indietools.work/product/160d7c12-c962-46b4-bad5-3e944d358b04?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/160d7c12-c962-46b4-bad5-3e944d358b04?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>seo</category>
      <category>indietools</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Mon, 25 Aug 2025 23:50:23 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-3kl3</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-3kl3</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
Ahrefs Backlink Checker 是一款功能强大的 SEO 工具，专注于提供详尽的反向链接分析&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
&lt;a href="https://www.indietools.work/product/39d7042d-0bcf-4f3d-bf72-02b8911d0593?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/39d7042d-0bcf-4f3d-bf72-02b8911d0593?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>seo</category>
      <category>tooling</category>
      <category>webdev</category>
      <category>developer</category>
    </item>
    <item>
      <title>不追求完美主义了，先做个垃圾出来！</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Mon, 25 Aug 2025 02:12:34 +0000</pubDate>
      <link>https://dev.to/immerse/bu-zhui-qiu-wan-mei-zhu-yi-liao-xian-zuo-ge-la-ji-chu-lai--50o1</link>
      <guid>https://dev.to/immerse/bu-zhui-qiu-wan-mei-zhu-yi-liao-xian-zuo-ge-la-ji-chu-lai--50o1</guid>
      <description>&lt;p&gt;大家好，我是 Immerse，一名独立开发者、内容创作者、AGI 实践者。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  关注公众号：#沉浸式趣谈，获取最新文章（更多内容只在公众号更新)&lt;/li&gt;
&lt;li&gt;  个人网站：&lt;code&gt;https://yaolifeng.com&lt;/code&gt; 也同步更新。&lt;/li&gt;
&lt;li&gt;  转载请在文章开头注明出处和版权信息。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我会在这里分享关于&lt;code&gt;编程&lt;/code&gt;、&lt;code&gt;独立开发&lt;/code&gt;、&lt;code&gt;AI干货&lt;/code&gt;、&lt;code&gt;开源&lt;/code&gt;、&lt;code&gt;个人思考&lt;/code&gt;等内容。&lt;/p&gt;

&lt;p&gt;如果本文对您有所帮助，欢迎动动小手指一键三连(&lt;code&gt;点赞&lt;/code&gt;、&lt;code&gt;评论&lt;/code&gt;、&lt;code&gt;转发&lt;/code&gt;)，给我一些支持和鼓励，谢谢！&lt;/p&gt;

&lt;p&gt;耗时两周多终于肝出了图片批量裁剪工具 &lt;a href="https://cropifypro.netlify.app" rel="noopener noreferrer"&gt;Cropify:&lt;/a&gt; 一款真正安全、高效、专业的本地批量图片裁剪工具&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqncdn.mopic.mozigu.net%2Fwork%2F143%2F25%2F4b1163e96c464a41%2Ftitle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqncdn.mopic.mozigu.net%2Fwork%2F143%2F25%2F4b1163e96c464a41%2Ftitle.png" alt="Cropify Banner" width="676" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  为啥要做这个东西
&lt;/h2&gt;

&lt;p&gt;起因很简单，之前写的 Indie Tools 独立开发者工具站项目，需要获取网站的首页截图。&lt;/p&gt;

&lt;p&gt;之前自己写了一个完整脚本，从网站 url -&amp;gt; 整合网站所有数据 -&amp;gt; 一键生成文章 -&amp;gt; 一键生成 sitemap 等等。&lt;/p&gt;

&lt;p&gt;但是这个脚本有个缺陷，有时候截取的网站图片不正确或截取失败，这时候就手动介入了，但截取的图片不满足基本的尺寸要求，索性就肝了一个 ！&lt;/p&gt;

&lt;p&gt;失败数少的时候，还行。有时候达到 10 张，然后还要手动裁剪出正确的尺寸，这个过程完全是重复劳动。&lt;/p&gt;

&lt;p&gt;最关键的是，批量处理的时候特别麻烦，一张一张弄，累死个人。&lt;/p&gt;

&lt;p&gt;既然都是程序员了，干脆自己撸一个算了。&lt;/p&gt;

&lt;h2&gt;
  
  
  上线体验
&lt;/h2&gt;

&lt;p&gt;做完之后部署到 Vercel，免费额度够用，速度也不错。&lt;/p&gt;

&lt;p&gt;现在已经上线了：&lt;br&gt;
&lt;a href="https://cropifypro.vercel.app" rel="noopener noreferrer"&gt;国外：&lt;/a&gt; &lt;a href="https://cropifypro.vercel.app" rel="noopener noreferrer"&gt;https://cropifypro.vercel.app&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cropifypro.netlify.app" rel="noopener noreferrer"&gt;国内：&lt;/a&gt; &lt;a href="https://cropifypro.netlify.app" rel="noopener noreferrer"&gt;https://cropifypro.netlify.app&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/yaolifeng0629/Cropify" rel="noopener noreferrer"&gt;Github:&lt;/a&gt; &lt;a href="https://github.com/yaolifeng0629/Cropify" rel="noopener noreferrer"&gt;https://github.com/yaolifeng0629/Cropify&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyusvdnck69hj79ti0up4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyusvdnck69hj79ti0up4.png" width="800" height="766"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  主要功能
&lt;/h2&gt;

&lt;p&gt;这个工具最大的特点就是&lt;strong&gt;完全本地处理&lt;/strong&gt;，你的图片不会上传到任何服务器，全都在浏览器里搞定，数据安全有保障。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;批量处理&lt;/strong&gt;：一次能处理 50 张图片，拖进去就行，不用一张张选。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;预设尺寸&lt;/strong&gt;：常用的证件照、社交媒体、电商图片尺寸都有，微信头像、朋友圈、淘宝商品图什么的，选一下就行。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;高级功能&lt;/strong&gt;：旋转、翻转、圆角裁剪，还有九点定位系统，想把焦点放哪就放哪。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;格式支持&lt;/strong&gt;：JPG、PNG、WebP 都支持，质量可以自己调，文件大小实时显示。&lt;/p&gt;

&lt;h2&gt;
  
  
  开源
&lt;/h2&gt;

&lt;p&gt;代码已经放到 GitHub 了，欢迎各位小伙伴点个免费 Star ~ ⭐&lt;/p&gt;

&lt;p&gt;说实话代码写得不算完美，但解决了我目前的问题。&lt;/p&gt;

&lt;h2&gt;
  
  
  后续计划
&lt;/h2&gt;

&lt;p&gt;准备加一些新功能：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  图片滤镜效果&lt;/li&gt;
&lt;li&gt;  水印添加&lt;/li&gt;
&lt;li&gt;  更多导出格式&lt;/li&gt;
&lt;li&gt;  可能考虑做个移动 App&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;不过现在先这样，用最快的速度做个 &lt;code&gt;MVP&lt;/code&gt; 版本出来。&lt;/p&gt;

&lt;h2&gt;
  
  
  最后说一句
&lt;/h2&gt;

&lt;p&gt;如果你也有类似的需求，可以试试看&lt;/p&gt;

&lt;p&gt;希望可以帮助到更多人！&lt;/p&gt;

&lt;h3&gt;
  
  
  其他好文推荐
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/uqxi-r9y_SkP0mGLybsp8w" rel="noopener noreferrer"&gt;2025 最新！独立开发者穷鬼套餐&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/VUFLFQjlr6W7gEJaxfdTzA" rel="noopener noreferrer"&gt;Windows 安装 Claude Code 的新姿势，保姆级教程&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RwH28NideOpfB90Ji09bpQ" rel="noopener noreferrer"&gt;最近 Vibe Coding 的实践经验分享&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/2cDJr9Hf2lcrvsMGgw_LtQ" rel="noopener noreferrer"&gt;分享一款 AI 自动生成流程图的工具&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/lV34CiMf32M8EaQY49NF2Q" rel="noopener noreferrer"&gt;一个 Cursor mdc 自动生成器，基于 Gemini 2.5，很实用！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/lUqojQDTOmrxqYIle21cYw" rel="noopener noreferrer"&gt;这个 361k Star 的项目，一定要收藏！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/6GdfVnmu30Ki1XeadzuuRg" rel="noopener noreferrer"&gt;搞定 XLSX 预览？别瞎找了，这几个库（尤其最后一个）真香！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/k--Kg_0WvOFwmOUOzo4kDA" rel="noopener noreferrer"&gt;1 分钟把简历变成个人网站！这个免费工具太香了&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/pR76UwvsJQyRE__LVx6Whg" rel="noopener noreferrer"&gt;关于 MCP，这几个网站你一定要知道！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/gwTbX3hM_GPdDVg3W1ftAQ" rel="noopener noreferrer"&gt;做 Docx 预览，一定要做这个神库！！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/f5pIdyY8grx9t6qYxMgR1w" rel="noopener noreferrer"&gt;【完整汇总】近 5 年 JavaScript 新特性完整总览&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RGFQbqzmrY1NVkdUsQcMBw" rel="noopener noreferrer"&gt;关于 Node，一定要学这个 10+万 Star 项目！&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Sun, 24 Aug 2025 23:52:27 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-9d4</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-9d4</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
Disavow Links 是 Google 的一个高级功能，旨在帮助网站管理员告知 Google 忽略那些指向其网站的低质量或垃圾链接&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
&lt;a href="https://www.indietools.work/product/8b1f9fdf-d8fa-40f3-953b-1c057d1b4584?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/8b1f9fdf-d8fa-40f3-953b-1c057d1b4584?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>tooling</category>
      <category>developer</category>
    </item>
    <item>
      <title>每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Thu, 21 Aug 2025 23:53:57 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-2p3h</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-2p3h</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
ContentKing是一款实时SEO审计和监控平台，用于帮助网站管理员和营销人员监测和优化网站的SEO表现。&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
&lt;a href="https://www.indietools.work/product/cbe31d32-a924-40af-8df0-a37be30b5cfb?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/cbe31d32-a924-40af-8df0-a37be30b5cfb?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>tooling</category>
      <category>developer</category>
    </item>
    <item>
      <title>#每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Wed, 20 Aug 2025 23:52:06 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-1pd1</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-1pd1</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
BeamUsUp 是一款免费的 SEO 爬虫工具，适用于 Windows、Mac 和 Linux 操作系统&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
&lt;a href="https://www.indietools.work/product/03f3ef63-1eb5-4774-be92-f03164bcfd95?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/03f3ef63-1eb5-4774-be92-f03164bcfd95?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>seo</category>
      <category>multiplatform</category>
      <category>indie</category>
      <category>webdev</category>
    </item>
    <item>
      <title>每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Wed, 20 Aug 2025 23:51:56 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-31n1</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-31n1</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
SEOlyzer 是一款专注于_website 日志分析的 SEO 工具，旨在帮助用户深入了解搜索引擎如何抓取和索引其网站，從而优化网站的搜索引擎表现&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
&lt;a href="https://www.indietools.work/product/63344551-d02a-45d3-a0ac-6c42ee399df7?type=seo" rel="noopener noreferrer"&gt;https://www.indietools.work/product/63344551-d02a-45d3-a0ac-6c42ee399df7?type=seo&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>indie</category>
      <category>tooling</category>
    </item>
    <item>
      <title>每日分享</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Tue, 19 Aug 2025 23:54:22 +0000</pubDate>
      <link>https://dev.to/immerse/mei-ri-fen-xiang-37jp</link>
      <guid>https://dev.to/immerse/mei-ri-fen-xiang-37jp</guid>
      <description>&lt;h1&gt;
  
  
  每日分享
&lt;/h1&gt;

&lt;p&gt;✨ 独立开发者工具：&lt;br&gt;
PH 今日热榜通过 Product Hunt 官方 API 获取每日热门产品榜单，结合 AI 分析整理&lt;/p&gt;

&lt;p&gt;👇 点击直达：&lt;br&gt;
&lt;a href="https://www.indietools.work/product/1ae00d6a-1c87-43fc-ab62-cc63eebc5381" rel="noopener noreferrer"&gt;https://www.indietools.work/product/1ae00d6a-1c87-43fc-ab62-cc63eebc5381&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  IndieHackers #WebDev #IndieTools #hackers
&lt;/h1&gt;

</description>
      <category>indie</category>
      <category>webdev</category>
      <category>tooling</category>
      <category>ai</category>
    </item>
    <item>
      <title>命令行神器 The Fuck，敲错命令的后悔药</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Tue, 19 Aug 2025 02:37:39 +0000</pubDate>
      <link>https://dev.to/immerse/ming-ling-xing-shen-qi-the-fuckqiao-cuo-ming-ling-de-hou-hui-yao-45og</link>
      <guid>https://dev.to/immerse/ming-ling-xing-shen-qi-the-fuckqiao-cuo-ming-ling-de-hou-hui-yao-45og</guid>
      <description>&lt;p&gt;大家好，我是 Immerse，一名独立开发者、内容创作者、AGI 实践者。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  关注公众号：#沉浸式趣谈，获取最新文章（更多内容只在公众号更新)&lt;/li&gt;
&lt;li&gt;  个人网站：&lt;a href="https://yaolifeng.com" rel="noopener noreferrer"&gt;&lt;code&gt;https://yaolifeng.com&lt;/code&gt;&lt;/a&gt; 也同步更新。&lt;/li&gt;
&lt;li&gt;  转载请在文章开头注明出处和版权信息。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我会在这里分享关于&lt;code&gt;编程&lt;/code&gt;、&lt;code&gt;独立开发&lt;/code&gt;、&lt;code&gt;AI干货&lt;/code&gt;、&lt;code&gt;开源&lt;/code&gt;、&lt;code&gt;个人思考&lt;/code&gt;等内容。&lt;/p&gt;

&lt;p&gt;如果本文对您有所帮助，欢迎动动小手指一键三连(&lt;code&gt;点赞&lt;/code&gt;、&lt;code&gt;评论&lt;/code&gt;、&lt;code&gt;转发&lt;/code&gt;)，给我一些支持和鼓励，谢谢！&lt;/p&gt;

&lt;p&gt;分享一个命令行实用程序 — &lt;a href="https://github.com/nvbn/thefuck" rel="noopener noreferrer"&gt;TheFuck&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;它自动地纠正先前控制台命令中的错误。当命令失败时，用户可以输入 &lt;code&gt;fuck&lt;/code&gt; 然后 &lt;code&gt;TheFuck&lt;/code&gt; 会建议修正基于错误输出，允许用户快速修复拼写错误、权限问题或语法错误，而无需重新输入整个命令。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wndiw0cm8pxn7z8zj16.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wndiw0cm8pxn7z8zj16.gif" width="686" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  安装
&lt;/h3&gt;

&lt;h4&gt;
  
  
  基本要求
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Python 3.5 或更高版本&lt;/li&gt;
&lt;li&gt;pip（Python 包管理器）&lt;/li&gt;
&lt;li&gt;python-dev（开发头文件）&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;可通过下面的命令来验证当前系统是否满足安装要求：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;--version&lt;/span&gt;
pip &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;其他系统/Windows&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;thefuck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;macOS or Linux&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;thefuck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ubuntu/Debian&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3-dev python3-pip python3-setuptools
pip3 &lt;span class="nb"&gt;install &lt;/span&gt;thefuck &lt;span class="nt"&gt;--user&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FreeBSD&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkg &lt;span class="nb"&gt;install &lt;/span&gt;thefuck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  原理
&lt;/h3&gt;

&lt;p&gt;当命令失败时，它会分析错误输出并应用规则来建议修正。然后用户可以接受或拒绝修正，TheFuck 执行了更正后的命令。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜ apt-get &lt;span class="nb"&gt;install &lt;/span&gt;vim
E: Could not open lock file /var/lib/dpkg/lock - open &lt;span class="o"&gt;(&lt;/span&gt;13: Permission denied&lt;span class="o"&gt;)&lt;/span&gt;
E: Unable to lock the administration directory &lt;span class="o"&gt;(&lt;/span&gt;/var/lib/dpkg/&lt;span class="o"&gt;)&lt;/span&gt;, are you root?

➜ fuck
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;vim &lt;span class="o"&gt;[&lt;/span&gt;enter/↑/↓/ctrl+c]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  使用实例
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜ apt-get &lt;span class="nb"&gt;install &lt;/span&gt;vim
E: Could not open lock file /var/lib/dpkg/lock - open &lt;span class="o"&gt;(&lt;/span&gt;13: Permission denied&lt;span class="o"&gt;)&lt;/span&gt;
E: Unable to lock the administration directory &lt;span class="o"&gt;(&lt;/span&gt;/var/lib/dpkg/&lt;span class="o"&gt;)&lt;/span&gt;, are you root?

➜ fuck
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;vim &lt;span class="o"&gt;[&lt;/span&gt;enter/↑/↓/ctrl+c]
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; password &lt;span class="k"&gt;for &lt;/span&gt;nvbn:
Reading package lists... Done
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜ git push
fatal: The current branch master has no upstream branch.
To push the current branch and &lt;span class="nb"&gt;set &lt;/span&gt;the remote as upstream, use

    git push &lt;span class="nt"&gt;--set-upstream&lt;/span&gt; origin master


➜ fuck
git push &lt;span class="nt"&gt;--set-upstream&lt;/span&gt; origin master &lt;span class="o"&gt;[&lt;/span&gt;enter/↑/↓/ctrl+c]
Counting objects: 9, &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜ puthon
No &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="s1"&gt;'puthon'&lt;/span&gt; found, did you mean:
 Command &lt;span class="s1"&gt;'python'&lt;/span&gt; from package &lt;span class="s1"&gt;'python-minimal'&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;main&lt;span class="o"&gt;)&lt;/span&gt;
 Command &lt;span class="s1"&gt;'python'&lt;/span&gt; from package &lt;span class="s1"&gt;'python3'&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;main&lt;span class="o"&gt;)&lt;/span&gt;
zsh: &lt;span class="nb"&gt;command &lt;/span&gt;not found: puthon

➜ fuck
python &lt;span class="o"&gt;[&lt;/span&gt;enter/↑/↓/ctrl+c]
Python 3.4.2 &lt;span class="o"&gt;(&lt;/span&gt;default, Oct  8 2014, 13:08:17&lt;span class="o"&gt;)&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜ git brnch
git: &lt;span class="s1"&gt;'brnch'&lt;/span&gt; is not a git command. See &lt;span class="s1"&gt;'git --help'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;

Did you mean this?
    branch

➜ fuck
git branch &lt;span class="o"&gt;[&lt;/span&gt;enter/↑/↓/ctrl+c]
&lt;span class="k"&gt;*&lt;/span&gt; master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;➜ lein rpl
&lt;span class="s1"&gt;'rpl'&lt;/span&gt; is not a task. See &lt;span class="s1"&gt;'lein help'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;

Did you mean this?
         repl

➜ fuck
lein repl &lt;span class="o"&gt;[&lt;/span&gt;enter/↑/↓/ctrl+c]
nREPL server started on port 54848 on host 127.0.0.1 - nrepl://127.0.0.1:54848
REPL-y 0.3.1
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这个工具很方便使用，自己之前敲错命令，要不 --help，要么 GPT，这个过程也需要时间，而现在，直接 &lt;code&gt;fuck&lt;/code&gt;，一边能解决问题，一边有点莫名的爽感，哈哈哈~&lt;/p&gt;

&lt;h3&gt;
  
  
  其他好文推荐
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/uqxi-r9y_SkP0mGLybsp8w" rel="noopener noreferrer"&gt;2025 最新！独立开发者穷鬼套餐&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/VUFLFQjlr6W7gEJaxfdTzA" rel="noopener noreferrer"&gt;Windows 安装 Claude Code 的新姿势，保姆级教程&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RwH28NideOpfB90Ji09bpQ" rel="noopener noreferrer"&gt;最近 Vibe Coding 的实践经验分享&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/2cDJr9Hf2lcrvsMGgw_LtQ" rel="noopener noreferrer"&gt;分享一款 AI 自动生成流程图的工具&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/lV34CiMf32M8EaQY49NF2Q" rel="noopener noreferrer"&gt;一个 Cursor mdc 自动生成器，基于 Gemini 2.5，很实用！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/lUqojQDTOmrxqYIle21cYw" rel="noopener noreferrer"&gt;这个 361k Star 的项目，一定要收藏！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/6GdfVnmu30Ki1XeadzuuRg" rel="noopener noreferrer"&gt;搞定 XLSX 预览？别瞎找了，这几个库（尤其最后一个）真香！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/k--Kg_0WvOFwmOUOzo4kDA" rel="noopener noreferrer"&gt;1分钟把简历变成个人网站！这个免费工具太香了&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/pR76UwvsJQyRE__LVx6Whg" rel="noopener noreferrer"&gt;关于 MCP，这几个网站你一定要知道！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/gwTbX3hM_GPdDVg3W1ftAQ" rel="noopener noreferrer"&gt;做 Docx 预览，一定要做这个神库！！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/f5pIdyY8grx9t6qYxMgR1w" rel="noopener noreferrer"&gt;【完整汇总】近 5 年 JavaScript 新特性完整总览&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RGFQbqzmrY1NVkdUsQcMBw" rel="noopener noreferrer"&gt;关于 Node，一定要学这个 10+万 Star 项目！&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>这个Web新API让任何内容都能画中画！</title>
      <dc:creator>Immerse</dc:creator>
      <pubDate>Thu, 14 Aug 2025 08:18:16 +0000</pubDate>
      <link>https://dev.to/immerse/zhe-ge-webxin-apirang-ren-he-nei-rong-du-neng-hua-zhong-hua--4fjo</link>
      <guid>https://dev.to/immerse/zhe-ge-webxin-apirang-ren-he-nei-rong-du-neng-hua-zhong-hua--4fjo</guid>
      <description>&lt;p&gt;大家好，我是 Immerse，一名独立开发者、内容创作者。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  关注公众号：#沉浸式趣谈，获取最新文章（更多内容只在公众号更新）&lt;/li&gt;
&lt;li&gt;  个人网站：&lt;code&gt;https://yaolifeng.com&lt;/code&gt; 也同步更新。&lt;/li&gt;
&lt;li&gt;  转载请在文章开头注明出处和版权信息。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;我会在这里分享关于&lt;code&gt;编程&lt;/code&gt;、&lt;code&gt;独立开发&lt;/code&gt;、&lt;code&gt;AI干货&lt;/code&gt;、&lt;code&gt;开源&lt;/code&gt;、&lt;code&gt;个人思考&lt;/code&gt;等内容。&lt;/p&gt;

&lt;p&gt;如果本文对您有所帮助，欢迎动动小手指一键三连(&lt;code&gt;点赞&lt;/code&gt;、&lt;code&gt;评论&lt;/code&gt;、&lt;code&gt;转发&lt;/code&gt;)，给我一些支持和鼓励，谢谢！&lt;/p&gt;

&lt;p&gt;“画中画”（Picture-in-Picture, PiP）说白了，就是让你能一边看视频，一边干别的，互不耽误。就像给你的桌面贴了个能播放视频的“便利贴”，你可以随便拖动它，调整大小，它还总在最前面，贼方便。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5czkiprh7rjugtu38nin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5czkiprh7rjugtu38nin.png" width="624" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;现在主流的搞法：老朋友 &lt;code&gt;requestPictureInPicture()&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;其实，想让 &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; 元素实现画中画，现在已经有挺成熟的方法了，那就是直接在视频元素上调用 &lt;code&gt;requestPictureInPicture()&lt;/code&gt; 这个 API。&lt;/p&gt;

&lt;p&gt;用起来也挺简单，基本上就是：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; 先搞个 &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; 标签，放上你的视频。&lt;/li&gt;
&lt;li&gt; 找个时机（比如用户点个按钮），用 JavaScript 拿到这个 video 元素，然后调用 &lt;code&gt;video.requestPictureInPicture()&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;搞定！&lt;/p&gt;

&lt;p&gt;给个简单的代码片段：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;video&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"myVideo"&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"your_video.mp4"&lt;/span&gt; &lt;span class="na"&gt;controls&lt;/span&gt; &lt;span class="na"&gt;width=&lt;/span&gt;&lt;span class="s"&gt;"300"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/video&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"pipButton"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;开启画中画&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;video&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;myVideo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pipButton&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pipButton&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nx"&gt;pipButton&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// 先检查浏览器支不支持，是个好习惯&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pictureInPictureEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="c1"&gt;// 如果视频没在画中画模式，就请求进入&lt;/span&gt;
                &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pictureInPictureElement&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;requestPictureInPicture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="c1"&gt;// 如果已经在画中画了，就退出&lt;/span&gt;
                    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exitPictureInPicture&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;操作画中画失败:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;你的浏览器不支持画中画功能。&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// 还可以监听进入和退出的事件，搞点事情&lt;/span&gt;
    &lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;enterpictureinpicture&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;进入画中画啦！&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;pipButton&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;退出画中画&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="nx"&gt;video&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;leavepictureinpicture&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;退出画中画了。&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;pipButton&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;开启画中画&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;大部分现代浏览器（Chrome, Edge, Firefox, Safari 这些）对这个 API 支持得都还不错（当然，细节上可能有点小差异，用的时候最好还是查查 MDN 或者 Can I Use）。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;那 &lt;code&gt;documentPictureInPicture.requestWindow&lt;/code&gt; 是个啥？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;window.documentPictureInPicture.requestWindow&lt;/code&gt; 更像是个“升级版”或者说“野心更大”的亲戚。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;requestPictureInPicture()&lt;/code&gt; 这个老朋友，它的目标很明确，就是把 &lt;strong&gt;&lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; 元素&lt;/strong&gt; 扔进画中画窗口。&lt;/p&gt;

&lt;p&gt;而 &lt;code&gt;documentPictureInPicture.requestWindow()&lt;/code&gt; 这个新来的呢，它的目标是 &lt;strong&gt;把任意的 HTML 内容&lt;/strong&gt;（理论上是这样的，比如一个 &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;，里面可以包含视频、按钮、文字等等）放进那个悬浮的小窗口里！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;小结一下&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  目前最常用、最稳妥的实现方式是针对 &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; 元素的 &lt;code&gt;requestPictureInPicture()&lt;/code&gt; API。兼容性相对较好，用起来也直接。&lt;/li&gt;
&lt;li&gt;  那个新出的 &lt;code&gt;documentPictureInPicture.requestWindow&lt;/code&gt; API 呢，目标更宏大，想让任意 HTML 都能 PiP。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;对这个新技术感兴趣的朋友，可以去翻翻官方文档（下面附了链接），了解下最新进展。&lt;/p&gt;

&lt;p&gt;不过动手实践的话，还是先从老朋友 &lt;code&gt;requestPictureInPicture()&lt;/code&gt; 开始吧，至少不会被兼容性搞得头秃，哈哈。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;参考资料放这儿了：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  关于 Document PiP (新 API): &lt;a href="https://developer.chrome.com/docs/web-platform/document-picture-in-picture?hl=zh-cn" rel="noopener noreferrer"&gt;https://developer.chrome.com/docs/web-platform/document-picture-in-picture?hl=zh-cn&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  MDN 上的 Document PiP: &lt;a href="https://developer.mozilla.org/zh-CN/docs/Web/API/DocumentPictureInPicture" rel="noopener noreferrer"&gt;https://developer.mozilla.org/zh-CN/docs/Web/API/DocumentPictureInPicture&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  MDN 上的 &lt;code&gt;requestWindow&lt;/code&gt; 方法: &lt;a href="https://developer.mozilla.org/zh-CN/docs/Web/API/DocumentPictureInPicture/requestWindow" rel="noopener noreferrer"&gt;https://developer.mozilla.org/zh-CN/docs/Web/API/DocumentPictureInPicture/requestWindow&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  (当然，也别忘了查查 &lt;code&gt;HTMLVideoElement.requestPictureInPicture()&lt;/code&gt; 这个老朋友的文档)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  其他好文推荐
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/uqxi-r9y_SkP0mGLybsp8w" rel="noopener noreferrer"&gt;2025 最新！独立开发者穷鬼套餐&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/VUFLFQjlr6W7gEJaxfdTzA" rel="noopener noreferrer"&gt;Windows 安装 Claude Code 的新姿势，保姆级教程&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RwH28NideOpfB90Ji09bpQ" rel="noopener noreferrer"&gt;最近 Vibe Coding 的实践经验分享&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/2cDJr9Hf2lcrvsMGgw_LtQ" rel="noopener noreferrer"&gt;分享一款 AI 自动生成流程图的工具&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/lV34CiMf32M8EaQY49NF2Q" rel="noopener noreferrer"&gt;一个 Cursor mdc 自动生成器，基于 Gemini 2.5，很实用！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/lUqojQDTOmrxqYIle21cYw" rel="noopener noreferrer"&gt;这个 361k Star 的项目，一定要收藏！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/6GdfVnmu30Ki1XeadzuuRg" rel="noopener noreferrer"&gt;搞定 XLSX 预览？别瞎找了，这几个库（尤其最后一个）真香！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/k--Kg_0WvOFwmOUOzo4kDA" rel="noopener noreferrer"&gt;1分钟把简历变成个人网站！这个免费工具太香了&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/pR76UwvsJQyRE__LVx6Whg" rel="noopener noreferrer"&gt;关于 MCP，这几个网站你一定要知道！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/gwTbX3hM_GPdDVg3W1ftAQ" rel="noopener noreferrer"&gt;做 Docx 预览，一定要做这个神库！！&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/f5pIdyY8grx9t6qYxMgR1w" rel="noopener noreferrer"&gt;【完整汇总】近 5 年 JavaScript 新特性完整总览&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RGFQbqzmrY1NVkdUsQcMBw" rel="noopener noreferrer"&gt;关于 Node，一定要学这个 10+万 Star 项目！&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
