当前位置:首页 > 文章列表 > 文章 > 前端 > 读取HTML文件内容技巧分享

读取HTML文件内容技巧分享

2026-05-25 10:17:14 0浏览 收藏
本文深入解析了在不同环境下安全、高效读取和解析HTML文件的核心技巧:针对浏览器中fetch加载本地HTML触发CORS错误的问题,明确指出file://协议被浏览器安全策略禁止,并给出部署本地HTTP服务或改用XMLHttpRequest的实用解决方案;强调DOMParser解析HTML字符串比innerHTML更安全可靠,避免脚本执行与DOM污染;在Node.js环境中则重点提醒fs读取时的编码与路径陷阱,并对比cheerio与jsdom在服务端批量处理HTML时的性能、兼容性与容错优势,同时点出编码识别这一常被忽视却至关重要的环节——真正帮你避开从读取到解析全流程中的典型坑。

如何读取html_读取HTML文件内容或元素的技巧【指南】

用 fetch 读取本地 HTML 文件会触发 CORS 错误

浏览器直接用 fetch('./page.html') 加载本地 HTML 文件时,如果页面是通过 file:// 协议打开的,绝大多数现代浏览器会拒绝请求,并抛出类似 Blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https. 的错误。

这不是代码写错了,而是浏览器安全策略限制——file:// 协议不被视作合法的跨域请求源。解决方法只有两个:

  • 把页面部署到本地 HTTP 服务上(推荐),比如用 npx serve、python3 -m http.server 或 VS Code 的 Live Server 插件
  • 改用 XMLHttpRequest 并设置 responseType = 'document'(仅限同源且非 file:// 场景)

别试图用 readAsText + FileReader 去读取用户选择的 HTML 文件——那只能用于 显式选取的场景,不适用于预设路径加载。

用 DOMParser 解析 HTML 字符串比 innerHTML 更安全可靠

当你拿到一段 HTML 字符串(比如从 fetch 返回的 text() 结果),想提取其中的 </code> 或某个 <code>class="content"</code> 元素,不要直接往 <code>div.innerHTML</code> 里塞再查——这会执行内联脚本、触发图片加载、污染当前页面 DOM。</p> <p><code>DOMParser</code> 是专为此设计的轻量级解析器,它生成的是独立文档对象,完全隔离:</p> <pre class="brush:php;toolbar:false">const parser = new DOMParser(); const doc = parser.parseFromString(htmlString, 'text/html'); const title = doc.querySelector('title')?.textContent; const mainContent = doc.querySelector('.content')?.outerHTML;</pre> <p>注意两点:</p> <ul><li>MIME 类型必须写成 <code>'text/html'</code>,写成 <code>'application/xml'</code> 或漏掉会导致解析失败或行为异常</li> <li><code>doc</code> 是完整文档,所以 <code>querySelector</code> 能直接匹配 <code><head></code> 和 <code><body></code> 下的元素,无需额外包裹</li> </ul><h3>Node.js 环境下读取 HTML 文件要用 <code>fs.readFileSync</code> 或 <code>fs.promises.readFile</code></h3> <p>在 Node.js 里没有 <code>fetch</code>,也不能用 <code>DOMParser</code>(原生不支持),得靠第三方库补全 DOM 能力。但第一步永远是把文件内容读成字符串:</p> <pre class="brush:php;toolbar:false">const fs = require('fs'); const html = fs.readFileSync('./index.html', 'utf8');</pre> <p>或者用 Promise 版本:</p> <pre class="brush:php;toolbar:false">const { readFile } = require('fs').promises; const html = await readFile('./index.html', 'utf8');</pre> <p>常见坑:</p> <ul><li>忘记传 <code>'utf8'</code> 编码参数,结果得到 <code>Buffer</code>,后续 <code>parseFromString</code> 会报错</li> <li>路径写相对路径却没注意工作目录(<code>process.cwd()</code>),建议用 <code>path.resolve(__dirname, 'index.html')</code> 定位</li> </ul><p>之后才能交给 <code>jsdom</code> 或 <code>cheerio</code> 处理。例如 cheerio 的典型用法:</p> <pre class="brush:php;toolbar:false">const $ = require('cheerio'); const html = fs.readFileSync('./index.html', 'utf8'); const $html = $.load(html); const title = $html('title').text();</pre> <h3>用 <code>cheerio</code> 提取元素比原生 DOM API 更适合服务端批量处理</h3> <p>如果你在 Node.js 中要批量分析几十个 HTML 文件、提取标题、链接、元数据,<code>cheerio</code> 是更优选择:它模拟了 jQuery API,语法简洁,不渲染、不执行 JS、内存占用低。</p> <p>对比 <code>jsdom</code>:</p> <ul><li><code>cheerio</code> 没有 <code>window</code>、<code>document</code> 全局对象,不能运行脚本,但解析速度通常快 3–5 倍</li> <li><code>cheerio.load()</code> 返回的是“伪 DOM”,所有选择器操作都基于字符串分析,因此不支持 <code>:has()</code>、<code>:nth-child(2n)</code> 等复杂 CSS4 伪类(除非升级到 v1.0+ 并启用 <code>xmlMode: false</code>)</li> <li>若 HTML 不规范(如自闭合标签写成 <code><img></code> 而非 <code><img/></code>),<code>cheerio</code> 默认能容错,<code>DOMParser</code> 在严格模式下可能报错</li> </ul><p>一个真实场景示例:提取所有带 <code>href</code> 的外链,并排除站内路径:</p> <pre class="brush:php;toolbar:false">const $ = require('cheerio'); const html = fs.readFileSync('page.html', 'utf8'); const $html = $.load(html); const externalLinks = []; $html('a[href]').each((i, el) => { const href = $html(el).attr('href'); if (href && /^https?:\/\//.test(href)) { externalLinks.push(href); } });</pre> 实际处理 HTML 时,最易被忽略的是编码识别——特别是老站点用 <code>gbk</code> 或 <code>big5</code> 编码却没声明 <code><meta charset></code>,这时 <code>fs.readFileSync</code> 或 <code>fetch</code> 拿到的内容会乱码,后续所有解析都失效。遇到这类情况,得先用 <code>iconv-lite</code> 或 <code>encoding-sniffer</code> 探测真实编码再转 UTF-8。<p>理论要掌握,实操不能落!以上关于《读取HTML文件内容技巧分享》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!</p> </div> <div class="labsList"> </div> <div class="cateBox"> <div class="cateItem"> <a href="/article/610849.html" title="Golang JSON流式编解码技巧" class="img_box"> <img src="/uploads/20260525/17796753226a13b0ba7afc1.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="Golang JSON流式编解码技巧">Golang JSON流式编解码技巧 </a> <dl> <dt class="lineOverflow"><a href="/article/610849.html" title="Golang JSON流式编解码技巧" class="aBlack">上一篇<i></i></a></dt> <dd class="lineTwoOverflow">Golang JSON流式编解码技巧</dd> </dl> </div> <div class="cateItem"> <a href="/article/610851.html" title="喜马拉雅会员如何跨平台迁移" class="img_box"> <img src="/uploads/20260525/17796755046a13b17027c60.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="喜马拉雅会员如何跨平台迁移"> </a> <dl> <dt class="lineOverflow"><a href="/article/610851.html" class="aBlack" title="喜马拉雅会员如何跨平台迁移">下一篇<i></i></a></dt> <dd class="lineTwoOverflow">喜马拉雅会员如何跨平台迁移</dd> </dl> </div> </div> </div> </div> <div class="leftContBox pt0"> <div class="pdl20"> <div class="contTit"> <a href="/articlelist.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit">最新文章</div> </div> </div> <ul class="newArticleList"> <li> <div class="contBox"> <a href="/article/632718.html" class="img_box" title="TypeScript catch 变量为 unknown 时怎样安全处理"> <img src="/uploads/20261018/1792264084-b94fdfa5d9-8f6c22f60b-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="TypeScript catch 变量为 unknown 时怎样安全处理"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632718.html" class="aBlack" target="_blank" title="TypeScript catch 变量为 unknown 时怎样安全处理">TypeScript catch 变量为 unknown 时怎样安全处理</a> </dt> <dd class="cont2"> <span><i class="view"></i>478浏览</span> <span class="collectBtn user_collection" data-id="632718" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632717.html" class="img_box" title="CSS scrollbar-gutter 怎样避免滚动条出现时布局横向跳动"> <img src="/uploads/20261018/1792263987-adbefe3cae-0aa77b61e1-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="CSS scrollbar-gutter 怎样避免滚动条出现时布局横向跳动"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1小时前  |   <a href="/articletag/4729_new_0_1.html" class="aLightGray" title="css">css</a> · <a href="javascript:;" class="aLightGray" title="CSS">CSS</a> <a href="javascript:;" class="aLightGray" title="滚动条">滚动条</a> <a href="javascript:;" class="aLightGray" title="Overflow">Overflow</a> <a href="javascript:;" class="aLightGray" title="scrollbar-gutter">scrollbar-gutter</a> <a href="javascript:;" class="aLightGray" title="布局跳动">布局跳动</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/632717.html" class="aBlack" target="_blank" title="CSS scrollbar-gutter 怎样避免滚动条出现时布局横向跳动">CSS scrollbar-gutter 怎样避免滚动条出现时布局横向跳动</a> </dt> <dd class="cont2"> <span><i class="view"></i>417浏览</span> <span class="collectBtn user_collection" data-id="632717" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632716.html" class="img_box" title="TypeScript satisfies 怎样校验对象又保留字面量类型"> <img src="/uploads/20261018/1792263973-7e5c34da3c-90b28c12bc-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="TypeScript satisfies 怎样校验对象又保留字面量类型"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632716.html" class="aBlack" target="_blank" title="TypeScript satisfies 怎样校验对象又保留字面量类型">TypeScript satisfies 怎样校验对象又保留字面量类型</a> </dt> <dd class="cont2"> <span><i class="view"></i>162浏览</span> <span class="collectBtn user_collection" data-id="632716" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632715.html" class="img_box" title="CSS 锚点定位怎样让浮层跟随触发元素"> <img src="/uploads/20261018/1792263117-336e9355c2-d1ecca2645-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="CSS 锚点定位怎样让浮层跟随触发元素"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   <a href="/articletag/4729_new_0_1.html" class="aLightGray" title="css">css</a> · <a href="javascript:;" class="aLightGray" title="CSS">CSS</a> <a href="javascript:;" class="aLightGray" title="锚点定位">锚点定位</a> <a href="javascript:;" class="aLightGray" title="anchor-name">anchor-name</a> <a href="javascript:;" class="aLightGray" title="position-area">position-area</a> <a href="javascript:;" class="aLightGray" title="position-anchor">position-anchor</a> <a href="javascript:;" class="aLightGray" title="浮层定位">浮层定位</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/632715.html" class="aBlack" target="_blank" title="CSS 锚点定位怎样让浮层跟随触发元素">CSS 锚点定位怎样让浮层跟随触发元素</a> </dt> <dd class="cont2"> <span><i class="view"></i>262浏览</span> <span class="collectBtn user_collection" data-id="632715" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632714.html" class="img_box" title="前端怎样把非关键任务放到空闲时间"> <img src="/uploads/20261018/1792262877-5e5434cd2f-ca2215053e-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端怎样把非关键任务放到空闲时间"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632714.html" class="aBlack" target="_blank" title="前端怎样把非关键任务放到空闲时间">前端怎样把非关键任务放到空闲时间</a> </dt> <dd class="cont2"> <span><i class="view"></i>458浏览</span> <span class="collectBtn user_collection" data-id="632714" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632713.html" class="img_box" title="前端怎样统计静态资源等待时间"> <img src="/uploads/20261018/1792262873-58dc8bb9e0-5bfaa47da1-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端怎样统计静态资源等待时间"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   <a href="/articletag/243_new_0_1.html" class="aLightGray" title="前端">前端</a> · <a href="/articletag/1267_new_0_1.html" class="aLightGray" title="性能监控">性能监控</a> · <a href="/articletag/4701_new_0_1.html" class="aLightGray" title="javascript">javascript</a> · <a href="/articletag/40054_new_0_1.html" class="aLightGray" title="浏览器API">浏览器API</a> · <a href="javascript:;" class="aLightGray" title="静态资源">静态资源</a> <a href="javascript:;" class="aLightGray" title="前端性能">前端性能</a> <a href="javascript:;" class="aLightGray" title="PerformanceObserver">PerformanceObserver</a> <a href="javascript:;" class="aLightGray" title="PerformanceResourceTiming">PerformanceResourceTiming</a> <a href="javascript:;" class="aLightGray" title="资源等待时间">资源等待时间</a> </span> </dd> <dt class="lineOverflow"> <a href="/article/632713.html" class="aBlack" target="_blank" title="前端怎样统计静态资源等待时间">前端怎样统计静态资源等待时间</a> </dt> <dd class="cont2"> <span><i class="view"></i>215浏览</span> <span class="collectBtn user_collection" data-id="632713" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632712.html" class="img_box" title="前端组件尺寸变化怎样避免循环更新"> <img src="/uploads/20261018/1792262724-6d512243a1-e0aae77e98-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端组件尺寸变化怎样避免循环更新"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632712.html" class="aBlack" target="_blank" title="前端组件尺寸变化怎样避免循环更新">前端组件尺寸变化怎样避免循环更新</a> </dt> <dd class="cont2"> <span><i class="view"></i>389浏览</span> <span class="collectBtn user_collection" data-id="632712" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632711.html" class="img_box" title="前端怎样观察动态节点并及时断开监听"> <img src="/uploads/20261018/1792262704-5d3e5fed7e-8dcdebc2b2-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端怎样观察动态节点并及时断开监听"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632711.html" class="aBlack" target="_blank" title="前端怎样观察动态节点并及时断开监听">前端怎样观察动态节点并及时断开监听</a> </dt> <dd class="cont2"> <span><i class="view"></i>479浏览</span> <span class="collectBtn user_collection" data-id="632711" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632710.html" class="img_box" title="前端怎样用 Web Locks 协调多标签页任务"> <img src="/uploads/20261018/1792262544-dcf5ad9530-ccaaf22051-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端怎样用 Web Locks 协调多标签页任务"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632710.html" class="aBlack" target="_blank" title="前端怎样用 Web Locks 协调多标签页任务">前端怎样用 Web Locks 协调多标签页任务</a> </dt> <dd class="cont2"> <span><i class="view"></i>329浏览</span> <span class="collectBtn user_collection" data-id="632710" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632709.html" class="img_box" title="前端多个标签页怎样同步登录状态变化"> <img src="/uploads/20261018/1792262294-9acd4bc8a8-8859bd30bb-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端多个标签页怎样同步登录状态变化"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632709.html" class="aBlack" target="_blank" title="前端多个标签页怎样同步登录状态变化">前端多个标签页怎样同步登录状态变化</a> </dt> <dd class="cont2"> <span><i class="view"></i>243浏览</span> <span class="collectBtn user_collection" data-id="632709" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632708.html" class="img_box" title="前端 Request 读取一次后怎样再次发送"> <img src="/uploads/20261018/1792262111-74d6fa4faa-8c3650ed9c-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端 Request 读取一次后怎样再次发送"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632708.html" class="aBlack" target="_blank" title="前端 Request 读取一次后怎样再次发送">前端 Request 读取一次后怎样再次发送</a> </dt> <dd class="cont2"> <span><i class="view"></i>301浏览</span> <span class="collectBtn user_collection" data-id="632708" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> <li> <div class="contBox"> <a href="/article/632707.html" class="img_box" title="前端怎样合并多个取消信号"> <img src="/uploads/20261018/1792262079-04038ec6ae-49877e17bb-cover-640.webp" onerror="this.src='/assets/images/moren/morentu.png'" alt="前端怎样合并多个取消信号"> </a> <dl> <dd class="cont1"> <span> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2小时前  |   </span> </dd> <dt class="lineOverflow"> <a href="/article/632707.html" class="aBlack" target="_blank" title="前端怎样合并多个取消信号">前端怎样合并多个取消信号</a> </dt> <dd class="cont2"> <span><i class="view"></i>490浏览</span> <span class="collectBtn user_collection" data-id="632707" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </dd> </dl> </div> </li> </ul> </div> </div> <div class="mainRight"> <!-- 右侧广告位banner --> <div class="rightContBox" style="margin-top: 0px;"> <div class="rightTit"> <a href="/courselist.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit lineOverflow">课程推荐</div> </div> <ul class="lessonRecomRList"> <li> <a href="/course/9.html" class="img_box" target="_blank" title="前端进阶之JavaScript设计模式"> <img src="/uploads/20221222/52fd0f23a454c71029c2c72d206ed815.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="前端进阶之JavaScript设计模式"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/9.html" target="_blank" class="aBlack" title="前端进阶之JavaScript设计模式">前端进阶之JavaScript设计模式</a></dt> <dd class="cont1 lineTwoOverflow"> 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。 </dd> <dd class="cont2">543次学习</dd> </dl> </li> <li> <a href="/course/2.html" class="img_box" target="_blank" title="GO语言核心编程课程"> <img src="/uploads/20221221/634ad7404159bfefc6a54a564d437b5f.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="GO语言核心编程课程"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/2.html" target="_blank" class="aBlack" title="GO语言核心编程课程">GO语言核心编程课程</a></dt> <dd class="cont1 lineTwoOverflow"> 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。 </dd> <dd class="cont2">516次学习</dd> </dl> </li> <li> <a href="/course/74.html" class="img_box" target="_blank" title="简单聊聊mysql8与网络通信"> <img src="/uploads/20240103/bad35fe14edbd214bee16f88343ac57c.png" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="简单聊聊mysql8与网络通信"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/74.html" target="_blank" class="aBlack" title="简单聊聊mysql8与网络通信">简单聊聊mysql8与网络通信</a></dt> <dd class="cont1 lineTwoOverflow"> 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让 </dd> <dd class="cont2">500次学习</dd> </dl> </li> <li> <a href="/course/57.html" class="img_box" target="_blank" title="JavaScript正则表达式基础与实战"> <img src="/uploads/20221226/bbe4083bb3cb0dd135fb02c31c3785fb.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="JavaScript正则表达式基础与实战"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/57.html" target="_blank" class="aBlack" title="JavaScript正则表达式基础与实战">JavaScript正则表达式基础与实战</a></dt> <dd class="cont1 lineTwoOverflow"> 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。 </dd> <dd class="cont2">487次学习</dd> </dl> </li> <li> <a href="/course/28.html" class="img_box" target="_blank" title="从零制作响应式网站—Grid布局"> <img src="/uploads/20221223/ac110f88206daeab6c0cf38ebf5fe9ed.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="从零制作响应式网站—Grid布局"> </a> <dl> <dt class="lineTwoOverflow"><a href="/course/28.html" target="_blank" class="aBlack" title="从零制作响应式网站—Grid布局">从零制作响应式网站—Grid布局</a></dt> <dd class="cont1 lineTwoOverflow"> 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。 </dd> <dd class="cont2">485次学习</dd> </dl> </li> </ul> </div> <div class="rightContBox"> <div class="rightTit"> <a href="/ai.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit lineOverflow">AI推荐</div> </div> <ul class="lessonRecomRList"> <li> <a href="/ai/13900.html" target="_blank" title="PubMedQA数据集详解:生物医学问答基准、功能与应用指南" class="img_box"> <img src="/uploads/20260908/6a9f83280940e7.65575695.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="PubMedQA数据集详解:生物医学问答基准、功能与应用指南" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13900.html" class="aBlack" target="_blank" title="PubMedQA">PubMedQA</a></dt> <dd class="cont1 lineTwoOverflow"> 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。 </dd> <dd class="cont2">511次使用</dd> </dl> </li> <li> <a href="/ai/13899.html" target="_blank" title="H2O EvalGPT:开源LLM大模型评估与排行榜工具" class="img_box"> <img src="/uploads/20260908/17887986376a9ee6adaf3f5.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="H2O EvalGPT:开源LLM大模型评估与排行榜工具" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13899.html" class="aBlack" target="_blank" title="H2O EvalGPT">H2O EvalGPT</a></dt> <dd class="cont1 lineTwoOverflow"> H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。 </dd> <dd class="cont2">571次使用</dd> </dl> </li> <li> <a href="/ai/13898.html" target="_blank" title="LMArena是什么?伯克利AI模型评估平台使用指南与功能解析" class="img_box"> <img src="/uploads/20260908/6a9f862dbcfec7.27385604.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="LMArena是什么?伯克利AI模型评估平台使用指南与功能解析" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13898.html" class="aBlack" target="_blank" title="LMArena">LMArena</a></dt> <dd class="cont1 lineTwoOverflow"> LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。 </dd> <dd class="cont2">597次使用</dd> </dl> </li> <li> <a href="/ai/13897.html" target="_blank" title="斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解" class="img_box"> <img src="/uploads/20260908/6a9f86b31ed789.06773114.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13897.html" class="aBlack" target="_blank" title="HELM">HELM</a></dt> <dd class="cont1 lineTwoOverflow"> 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。 </dd> <dd class="cont2">549次使用</dd> </dl> </li> <li> <a href="/ai/13896.html" target="_blank" title="MMBench详解:多模态大模型基准测试、功能特点与使用指南" class="img_box"> <img src="/uploads/20260908/6a9f86d3eed3e7.18564236.jpg" onerror="this.onerror='',this.src='/assets/images/moren/morentu.png'" alt="MMBench详解:多模态大模型基准测试、功能特点与使用指南" style="object-fit:cover;width:100%;height:100%;"> </a> <dl> <dt class="lineTwoOverflow"><a href="/ai/13896.html" class="aBlack" target="_blank" title="MMBench">MMBench</a></dt> <dd class="cont1 lineTwoOverflow"> MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。 </dd> <dd class="cont2">365次使用</dd> </dl> </li> </ul> </div> <!-- 相关文章 --> <div class="rightContBox"> <div class="rightTit"> <a href="/articlelist.html" class="more" title="查看更多">查看更多<i class="iconfont"></i></a> <div class="tit lineOverflow">相关文章</div> </div> <ul class="aboutArticleRList"> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/207000.html" class="aBlack" title="JavaScript函数定义及示例详解">JavaScript函数定义及示例详解</a></dt> <dd> <span class="left">2025-05-11</span> <span class="right">502浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/621422.html" class="aBlack" title="智能体安全引领产业升级——国内AI安全产品市场深度分析">智能体安全引领产业升级——国内AI安全产品市场深度分析</a></dt> <dd> <span class="left">2026-08-21</span> <span class="right">501浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/619053.html" class="aBlack" title="CSS变量简化按钮悬停效果技巧">CSS变量简化按钮悬停效果技巧</a></dt> <dd> <span class="left">2026-05-31</span> <span class="right">501浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/618916.html" class="aBlack" title="JavaScript符号类型详解与应用">JavaScript符号类型详解与应用</a></dt> <dd> <span class="left">2026-05-31</span> <span class="right">501浏览</span> </dd> </dl> </li> <li> <dl> <dt class="lineTwoOverflow"><a href="/article/612539.html" class="aBlack" title="HTML剪贴板复制粘贴怎么用">HTML剪贴板复制粘贴怎么用</a></dt> <dd> <span class="left">2026-05-26</span> <span class="right">501浏览</span> </dd> </dl> </li> </ul> </div> </div> </div> <script src="/assets/js/frontend/common.js"></script> </body> </html>