<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Web Development on 技术杂烩</title>
    <link>https://blog.iamdev.cn/tags/web-development/</link>
    <description>Recent content in Web Development on 技术杂烩</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Fri, 19 Jul 2024 22:58:13 +0800</lastBuildDate>
    <atom:link href="https://blog.iamdev.cn/tags/web-development/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>轻松实现网页语音识别的 JavaScript 库：vad-web</title>
      <link>https://blog.iamdev.cn/post/2024/%E8%BD%BB%E6%9D%BE%E5%AE%9E%E7%8E%B0%E7%BD%91%E9%A1%B5%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E7%9A%84_JavaScript_%E5%BA%93_vad_web___/</link>
      <pubDate>Fri, 19 Jul 2024 22:58:13 +0800</pubDate>
      <guid>https://blog.iamdev.cn/post/2024/%E8%BD%BB%E6%9D%BE%E5%AE%9E%E7%8E%B0%E7%BD%91%E9%A1%B5%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E7%9A%84_JavaScript_%E5%BA%93_vad_web___/</guid>
      <description>&lt;h2 id=&#34;让你的网页项目拥有语音识别功能&#34;&gt;让你的网页项目拥有语音识别功能！&lt;/h2&gt;&#xA;&lt;p&gt;你想在网页中添加语音识别功能，例如：实时显示用户说话的状态、发送用户语音片段到服务器进行处理，或者根据用户的讲话情况触发动画效果？ 今天就来介绍一个轻量级且易于使用的 JavaScript 库：&lt;strong&gt;vad-web&lt;/strong&gt;，它能帮你实现这些功能！&lt;/p&gt;&#xA;&lt;h3 id=&#34;vad-web-的优势&#34;&gt;vad-web 的优势&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;精准识别:&lt;/strong&gt; vad-web 基于强大的 Silero VAD 模型，能够准确地识别用户语音。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;简单易用:&lt;/strong&gt; 仅需几行代码即可配置并使用，非常适合前端开发人员。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;浏览器和 Node.js 支持:&lt;/strong&gt;  vad-web 可以运行在浏览器中，也可以在 Node.js 环境中使用。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;如何快速上手&#34;&gt;如何快速上手？&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;将以下脚本标签添加到你的 HTML 页面中：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://cdn.jsdelivr.net/npm/onnxruntime-web@1.14.0/dist/ort.js&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt;&amp;gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://cdn.jsdelivr.net/npm/@ricky0123/vad-web@0.0.7/dist/bundle.min.js&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;编写 JavaScript 代码来实例化 vad-web 和配置语音识别事件：&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;async&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;myvad&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;vad&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;MicVAD&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt;({&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;onSpeechStart&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; () =&amp;gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;开始说话！&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#75715e&#34;&gt;// 当用户开始说话时触发 &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;onSpeechEnd&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;audio&lt;/span&gt;) =&amp;gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;// audio 包含用户的语音片段，可以进行处理或上传到服务器&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    })&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;myvad&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;start&lt;/span&gt;() &lt;span style=&#34;color:#75715e&#34;&gt;// 启动语音识别&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Marked.js 入门指南：轻松渲染 Markdown</title>
      <link>https://blog.iamdev.cn/post/2024/Marked_js_%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97_%E8%BD%BB%E6%9D%BE%E6%B8%B2%E6%9F%93_Markdown___/</link>
      <pubDate>Mon, 08 Jul 2024 11:53:07 +0800</pubDate>
      <guid>https://blog.iamdev.cn/post/2024/Marked_js_%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97_%E8%BD%BB%E6%9D%BE%E6%B8%B2%E6%9F%93_Markdown___/</guid>
      <description>&lt;h2 id=&#34;告别繁琐轻松渲染-markdownmarkedjs-入门指南&#34;&gt;告别繁琐，轻松渲染 Markdown：Marked.js 入门指南&lt;/h2&gt;&#xA;&lt;p&gt;作为一名前端开发者，经常会遇到将文本内容转换为可视化的需求。Markdown 作为一种简洁易用的标记语言，成为了许多人首选。今天就来介绍一个强大的 Markdown 解析库 - Marked.js，让你轻松将 Markdown 文本渲染成 HTML。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/markedjs/marked&#34;&gt;https://github.com/markedjs/marked&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;为什么选择 Marked.js?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;速度飞快:&lt;/strong&gt; Marked.js 采用低级编译器，解析速度极快，不会因为长时间解析而阻塞页面。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;轻量级:&lt;/strong&gt; 虽然功能强大，但 Marked.js 体积轻巧，不会增加你的项目负担。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;全面支持:&lt;/strong&gt;  支持所有主流 Markdown 语法，并能根据你的需求进行配置。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;多平台:&lt;/strong&gt;  可以在浏览器、Node.js 以及命令行环境中使用。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;上手体验：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>让 HTML `&lt;pre&gt;` 标签可编辑</title>
      <link>https://blog.iamdev.cn/post/2024/%E8%AE%A9_HTML___pre___%E6%A0%87%E7%AD%BE%E5%8F%AF%E7%BC%96%E8%BE%91__/</link>
      <pubDate>Mon, 08 Jul 2024 00:04:41 +0800</pubDate>
      <guid>https://blog.iamdev.cn/post/2024/%E8%AE%A9_HTML___pre___%E6%A0%87%E7%AD%BE%E5%8F%AF%E7%BC%96%E8%BE%91__/</guid>
      <description>&lt;h2 id=&#34;解锁-html-pre-标签的编辑功能&#34;&gt;解锁 HTML &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 标签的编辑功能&lt;/h2&gt;&#xA;&lt;p&gt;在网页开发中，我们经常使用 &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 标签来展示预格式化的文本，例如代码片段。但有时候，我们需要让这些预格式化文本可编辑。本文将介绍一种简单高效的方法，让你的 HTML &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 标签变得可编辑。&lt;/p&gt;&#xA;&lt;h3 id=&#34;使用-contenteditable-属性&#34;&gt;使用 &lt;code&gt;contenteditable&lt;/code&gt; 属性&lt;/h3&gt;&#xA;&lt;p&gt;想要实现 &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 标签的可编辑性，我们可以利用 HTML 的 &lt;code&gt;contenteditable&lt;/code&gt; 属性。只需在 &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; 标签中添加 &lt;code&gt;contenteditable=&amp;quot;true&amp;quot;&lt;/code&gt; 属性即可。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;pre&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;contenteditable&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;&amp;gt; 这是一个可编辑的预格式化文本。 你可以直接在这里编辑内容。 &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;pre&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;优势：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
