0

0

JS单页面应用如何实现

幻夢星雲

幻夢星雲

发布时间:2025-08-17 14:47:01

|

678人浏览过

|

来源于php中文网

原创

单页面应用(spa)相比传统多页面应用具有更流畅的用户体验、前后端分离、易于构建移动应用和减少服务器压力等优点,但也存在首屏加载时间长、seo优化困难、复杂性高和依赖javascript等缺点;为解决首屏加载慢的问题,可通过代码分割、懒加载、资源压缩、cdn加速、tree shaking、预渲染和服务器端渲染(ssr)等方式优化;针对seo,可采用ssr、预渲染、动态更新meta标签、使用history api、生成站点地图、添加结构化数据、利用fetch as google工具及提升可访问性来改善;在选择react、vue或angular框架时,应根据团队经验、项目规模和需求权衡,react适合大型复杂应用,vue适合快速开发中小型项目,angular适用于企业级应用,各框架均有优劣,需结合实际情况选择,最终答案取决于具体场景与团队能力。

JS单页面应用如何实现

JS单页面应用(SPA)通过动态更新页面内容,而非每次都向服务器请求新页面,从而提供更流畅的用户体验。其核心在于利用JavaScript操控DOM,配合路由管理和数据交互,模拟传统多页面应用的导航效果。

解决方案:

  1. 前端路由: 使用如
    vue-router
    react-router
    angular router
    等库,或者手写简单的路由控制。路由负责监听URL变化,并根据URL加载对应的组件或视图。手写路由的一个简单示例如下:
const routes = {
  '/home': () => { document.body.innerHTML = '

Home Page

'; }, '/about': () => { document.body.innerHTML = '

About Page

'; }, '/contact': () => { document.body.innerHTML = '

Contact Page

'; } }; function router() { const path = location.hash.slice(1) || '/home'; // 获取URL hash const route = routes[path] || (() => { document.body.innerHTML = '

404 Not Found

'; }); // 找不到路由则显示404 route(); } window.addEventListener('hashchange', router); // 监听hash变化 window.addEventListener('load', router); // 页面加载时执行
  1. 组件化开发: 将页面拆分成独立的、可复用的组件。这有助于代码维护和复用。流行的框架都强调组件化。

  2. 数据管理: SPA通常需要管理复杂的状态。可以使用

    Redux
    Vuex
    Context API
    等工具来集中管理应用状态。

  3. 异步数据获取: 使用

    fetch
    axios
    等工具与后端API进行交互,获取数据并更新页面。

  4. SEO优化: 由于SPA的内容是动态生成的,搜索引擎可能无法正确抓取。可以使用服务器端渲染(SSR)或预渲染来解决这个问题。

SPA的核心挑战在于如何有效地管理状态、路由和异步操作,同时保证性能和可维护性。

单页面应用相比传统多页面应用有哪些优缺点?

Shoping购物网源码
Shoping购物网源码

该系统采用多层模式开发,这个网站主要展示女装的经营,更易于网站的扩展和后期的维护,同时也根据常用的SQL注入手段做出相应的防御以提高网站的安全性,本网站实现了购物车,产品订单管理,产品展示,等等,后台实现了动态权限的管理,客户管理,订单管理以及商品管理等等,前台页面设计精致,后台便于操作等。实现了无限子类的添加,实现了动态权限的管理,支持一下一个人做的辛苦

下载

优点:

  • 更流畅的用户体验: 页面切换无需重新加载整个页面,响应速度更快。
  • 前后端分离: 前端专注于UI开发,后端提供API,职责分离。
  • 易于构建移动应用: SPA可以很容易地打包成原生移动应用。
  • 减少服务器压力: 减少了不必要的页面请求。

缺点:

  • 首屏加载时间较长: 需要加载所有的JS和CSS资源。
  • SEO优化困难: 搜索引擎爬虫难以抓取动态生成的内容。
  • 复杂性较高: 需要处理路由、状态管理、异步操作等问题。
  • JavaScript依赖: 如果禁用JavaScript,SPA将无法正常工作。

如何解决SPA的首屏加载速度慢的问题?

  • 代码分割(Code Splitting): 将应用拆分成多个小的chunk,按需加载。Webpack等工具可以实现代码分割。
  • 懒加载(Lazy Loading): 延迟加载非必要的资源,例如图片、组件等。
  • 压缩资源: 使用Gzip或Brotli压缩JS、CSS和HTML文件。
  • CDN加速: 将静态资源部署到CDN上,加快访问速度。
  • Tree Shaking: 移除未使用的代码,减小bundle体积。
  • 预渲染(Prerendering): 在构建时生成静态HTML页面,提高首屏加载速度。
  • 服务器端渲染(SSR): 在服务器端渲染页面,返回完整的HTML,有利于SEO。

SPA如何进行SEO优化?

  • 服务器端渲染(SSR): 这是最有效的SEO优化方式。在服务器端执行JavaScript代码,生成完整的HTML页面,搜索引擎可以直接抓取。
  • 预渲染(Prerendering): 在构建时生成静态HTML页面,提供给搜索引擎。适用于内容变化不频繁的SPA。
  • Meta标签: 动态更新
    </pre>、<pre class="brush:php;toolbar:false;"><meta description></pre>等标签,提供更准确的页面信息。</li>
    <li>
    <strong>使用History API:</strong> 使用HTML5 History API(<pre class="brush:php;toolbar:false;">pushState</pre>和<pre class="brush:php;toolbar:false;">replaceState</pre>)来管理URL,而不是hash。这可以使URL更友好,有利于SEO。</li>
    <li>
    <strong>站点地图(Sitemap):</strong> 创建站点地图,帮助搜索引擎发现和索引页面。</li>
    <li>
    <strong>结构化数据(Structu<a style="color:#f60; text-decoration:underline;" title="red" href="https://www.php.cn/zt/122037.html" target="_blank">red</a> Data):</strong> 使用JSON-LD等格式添加结构化数据,帮助搜索引擎理解页面内容。</li>
    <li>
    <strong>使用Fetch As Google工具:</strong> 使用Google Search Console的Fetch As Google工具,检查搜索引擎如何抓取你的页面。</li>
    <li>
    <strong>确保页面可访问性:</strong> 确保页面对所有用户都可访问,包括使用屏幕阅读器的用户。</li>
    </ul>
    <p>选择哪个前端框架(React、Vue、Angular)来构建SPA?</p>
    <p>选择框架取决于团队的经验、项目需求和个人偏好。</p>
    <ul>
    <li>
    <strong>React:</strong> 灵活性高,生态系统庞大,适合构建大型、复杂的应用。需要自行选择状态管理、路由等库。学习曲线适中。</li>
    <li>
    <strong>Vue:</strong> 易于学习和使用,适合快速开发中小型应用。官方提供了<pre class="brush:php;toolbar:false;">vue-router</pre>和<pre class="brush:php;toolbar:false;">Vuex</pre>等库。</li>
    <li>
    <strong>Angular:</strong> 功能强大,提供了一整套解决方案,适合构建企业级应用。学习曲线较陡峭。</li>
    </ul>
    <p>没有绝对的最佳选择,每个框架都有其优缺点。可以根据具体情况进行选择。例如,如果团队熟悉React,并且需要构建一个大型应用,那么React可能是一个不错的选择。如果需要快速开发一个小型应用,Vue可能更适合。Angular适合构建大型企业级应用,但需要投入更多的时间学习。</p>					</div>
    					<div class="artmoreart ">
    													<div class="artdp artptit"><span></span>
    								<p>相关文章</p>
    							</div>
    							<div class="artmores flexColumn">
    																	<a class="artmrlis flexRow" href="/faq/1988568.html" title="如何正确在 React 中动态创建多个 useRef 实例以实现滚动定位功能"><b></b>
    										<p class="overflowclass">如何正确在 React 中动态创建多个 useRef 实例以实现滚动定位功能</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/1988508.html" title="如何将日期数组按周一至周日分组为嵌套数组"><b></b>
    										<p class="overflowclass">如何将日期数组按周一至周日分组为嵌套数组</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/1988209.html" title="如何实现文字悬停时显示圆形渐变高亮效果(30px×30px)"><b></b>
    										<p class="overflowclass">如何实现文字悬停时显示圆形渐变高亮效果(30px×30px)</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/1987981.html" title="如何将日期数组按周一至周日分组为嵌套周数组"><b></b>
    										<p class="overflowclass">如何将日期数组按周一至周日分组为嵌套周数组</p>
    									</a>
    																	<a class="artmrlis flexRow" href="/faq/1987878.html" title="如何实现文字悬停时显示30px圆形渐变高亮效果(支持文字本身为渐变色)"><b></b>
    										<p class="overflowclass">如何实现文字悬停时显示30px圆形渐变高亮效果(支持文字本身为渐变色)</p>
    									</a>
    															</div>
    													<div class="artmoretabs flexRow">
    								<p>相关标签:</p>
    								<div class="mtbs flexRow">
    									<a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15716.html" target="_blank">css</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15721.html" target="_blank">vue</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/16887.html" target="_blank">工具</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/37139.html" target="_blank">延迟加载</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/60391.html" target="_blank">a标签</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/122037.html" target="_blank">red</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=JavaScript" target="_blank">JavaScript</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=json" target="_blank">json</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=html5" target="_blank">html5</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=css" target="_blank">css</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=html" target="_blank">html</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=angular" target="_blank">angular</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=webpack" target="_blank">webpack</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=前端框架" target="_blank">前端框架</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=JS" target="_blank">JS</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=console" target="_blank">console</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=dom" target="_blank">dom</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=异步" target="_blank">异步</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=history" target="_blank">history</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=搜索引擎" target="_blank">搜索引擎</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=ui" target="_blank">ui</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=SEO" target="_blank">SEO</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=vuex" target="_blank">vuex</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=router" target="_blank">router</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=axios" target="_blank">axios</a>								</div>
    							</div>
    						
    						<p class="statement">本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn</p>
    						<div class="lastanext flexRow">
    													<a class="lastart flexRow" href="/faq/1460189.html" title="解决Ably授权连接拒绝错误:API_ROOT配置深度解析"><span>上一篇:</span>解决Ably授权连接拒绝错误:API_ROOT配置深度解析</a>
    													<a class="nextart flexRow" href="/faq/1460199.html" title="掌握JavaScript字符串模式匹配与数据结构优化"><span>下一篇:</span>掌握JavaScript字符串模式匹配与数据结构优化</a>
    												</div>
    					</div>
    
    					<div class="artlef-down ">
    													<div class="authormore ">
    								<div class="rightdTitle flexRow">
    									<div class="title-left flexRow"> <b></b>
    										<p>作者最新文章</p>
    									</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987098.html" title="指纹锁没电了可以用9V电池开吗?"><b></b>
    												<p class="overflowclass">指纹锁没电了可以用9V电池开吗?</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 08:22</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987108.html" title="Spring Security的XML配置怎么写"><b></b>
    												<p class="overflowclass">Spring Security的XML配置怎么写</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 08:23</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987156.html" title="三角洲行动登录入口 三角洲账号注册官网入口"><b></b>
    												<p class="overflowclass">三角洲行动登录入口 三角洲账号注册官网入口</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 08:33</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987168.html" title="Word行间距太大调不动怎么办 Word行距设置及固定值方法【指南】"><b></b>
    												<p class="overflowclass">Word行间距太大调不动怎么办 Word行距设置及固定值方法【指南】</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 08:37</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987187.html" title="怎么把一个VHD虚拟硬盘文件转换成VMware的VMDK格式【虚拟机】"><b></b>
    												<p class="overflowclass">怎么把一个VHD虚拟硬盘文件转换成VMware的VMDK格式【虚拟机】</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 08:44</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987284.html" title="救命!百度AI助手怎么关?亲测有效的关闭方法汇总"><b></b>
    												<p class="overflowclass">救命!百度AI助手怎么关?亲测有效的关闭方法汇总</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 09:13</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987298.html" title="Mule 4 DataWeave 2.0 XML转换教程"><b></b>
    												<p class="overflowclass">Mule 4 DataWeave 2.0 XML转换教程</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 09:17</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987313.html" title="虚拟机快照功能怎么用 保存和恢复系统状态教程【VMware】"><b></b>
    												<p class="overflowclass">虚拟机快照功能怎么用 保存和恢复系统状态教程【VMware】</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 09:20</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987320.html" title="系统安装后发现内存占用过高怎么办 SysMain服务优化【性能】"><b></b>
    												<p class="overflowclass">系统安装后发现内存占用过高怎么办 SysMain服务优化【性能】</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 09:22</p>
    											</div>
    										</div>
    								</div>
    																	<div class="authlist flexColumn">
    										<div class="autharts flexRow">
    											<a class="autharta flexRow " href="/faq/1987346.html" title="三角洲行动正式服入口 三角洲行动公测预约官网入口"><b></b>
    												<p class="overflowclass">三角洲行动正式服入口 三角洲行动公测预约官网入口</p>
    											</a>
    											<div class="authtime flexRow"><b></b>
    												<p>2026-01-16 09:27</p>
    											</div>
    										</div>
    								</div>
    															</div>
    						
    						<div class="moreAi ">
    							<div class="rightdTitle flexRow">
    								<div class="title-left flexRow"> <b></b>
    									<p>热门AI工具</p>
    								</div>
    								<a target="_blank" class="rititle-more flexRow" href="/ai" title="热门AI工具"><span>更多</span><b></b></a>
    							</div>
    
    							<div class="moreailist flexRow">
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/723" title="DeepSeek" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679963982777.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="DeepSeek" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">DeepSeek</p>
    												<p class="overflowclass abriptwo">幻方量化公司旗下的开源大模型平台</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/code/open-plat" title="开放平台" class="aidcontbp flexRow flexcenter">开放平台</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/726" title="豆包大模型" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680204067325.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="豆包大模型" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">豆包大模型</p>
    												<p class="overflowclass abriptwo">字节跳动自主研发的一系列大型语言模型</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/725" title="通义千问" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679974228210.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="通义千问" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">通义千问</p>
    												<p class="overflowclass abriptwo">阿里巴巴推出的全能AI助手</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/854" title="腾讯元宝" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679978251103.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="腾讯元宝" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">腾讯元宝</p>
    												<p class="overflowclass abriptwo">腾讯混元平台推出的AI助手</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/office/docs" title="文档处理" class="aidcontbp flexRow flexcenter">文档处理</p>
    																													<p href="/ai/tag/office/excel" title="Excel 表格" class="aidcontbp flexRow flexcenter">Excel 表格</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/724" title="文心一言" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679974557049.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="文心一言" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">文心一言</p>
    												<p class="overflowclass abriptwo">文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/1507" title="讯飞写作" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/969/633/68b7a4153cd86671.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="讯飞写作" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">讯飞写作</p>
    												<p class="overflowclass abriptwo">基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
    																													<p href="/ai/tag/text/write" title="写作工具" class="aidcontbp flexRow flexcenter">写作工具</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/1115" title="即梦AI" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d8f7c530c315.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="即梦AI" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">即梦AI</p>
    												<p class="overflowclass abriptwo">一站式AI创作平台,免费AI图片和视频生成。</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/image/image-titching" title="图片拼接" class="aidcontbp flexRow flexcenter">图片拼接</p>
    																													<p href="/ai/tag/image/image-create" title="图画生成" class="aidcontbp flexRow flexcenter">图画生成</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/808" title="ChatGPT" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679970194596.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="ChatGPT" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">ChatGPT</p>
    												<p class="overflowclass abriptwo">最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    																	<div class="aidcons flexRow  check ">
    										<a target="_blank" href="/ai/821" title="智谱清言 - 免费全能的AI助手" class="aibtns flexRow">
    											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679976181507.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="智谱清言 - 免费全能的AI助手" class="aibtnimg"
    												onerror="this.src='/static/lhimages/moren/morentu.png'">
    											<div class="aibtn-right flexColumn">
    												<p class="overflowclass abripone">智谱清言 - 免费全能的AI助手</p>
    												<p class="overflowclass abriptwo">智谱清言 - 免费全能的AI助手</p>
    																									<div class="aidconstab flexRow">
    																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
    																													<p href="/ai/tag/office/pdf" title="PDF 文档" class="aidcontbp flexRow flexcenter">PDF 文档</p>
    																											</div>
    																							</div>
    										</a>
    									</div>
    															</div>
    
    
    
    
    						</div>
    
    					</div>
    
    
    				</div>
    
    
    			</div>
    			<div class="conRight artdtilRight ">
    				<div class="artrig-adv ">
                        <script type="text/javascript" src="https://teacher.php.cn/php/MDM3MTk1MGYxYjI5ODJmNTE0ZWVkZTA3NmJhYzhmMjI6Og=="></script>
                    </div>
    				<div class="hotzt artdtzt">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>相关专题</p>
    						</div>
    						<a target="_blank" class="rititle-more flexRow" href="/faq/zt" title="相关专题"><span>更多</span><b></b></a>
    					</div>
    					<div class="hotztuls flexColumn">
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jsszcd" class="aClass flexRow hotzta" title="js获取数组长度的方法"><img
    										src="https://img.php.cn/upload/subject/202306/20/2023062017455159983.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="js获取数组长度的方法" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jsszcd" class="aClass flexRow hotztra overflowclass" title="js获取数组长度的方法">js获取数组长度的方法</a>
    									<p class="aClass flexRow hotztrp overflowclass">在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">554</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.06.20</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jssxym" class="aClass flexRow hotzta" title="js刷新当前页面"><img
    										src="https://img.php.cn/upload/subject/202307/04/2023070409584996422.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="js刷新当前页面" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jssxym" class="aClass flexRow hotztra overflowclass" title="js刷新当前页面">js刷新当前页面</a>
    									<p class="aClass flexRow hotztrp overflowclass">js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">374</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.07.04</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jssswr" class="aClass flexRow hotzta" title="js四舍五入"><img
    										src="https://img.php.cn/upload/subject/202307/04/2023070410160418152.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="js四舍五入" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jssswr" class="aClass flexRow hotztra overflowclass" title="js四舍五入">js四舍五入</a>
    									<p class="aClass flexRow hotztrp overflowclass">js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">731</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.07.04</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jsscjddff" class="aClass flexRow hotzta" title="js删除节点的方法"><img
    										src="https://img.php.cn/upload/subject/202309/01/2023090117024286721.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="js删除节点的方法" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jsscjddff" class="aClass flexRow hotztra overflowclass" title="js删除节点的方法">js删除节点的方法</a>
    									<p class="aClass flexRow hotztrp overflowclass">js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">477</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.09.01</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/javascriptzy" class="aClass flexRow hotzta" title="JavaScript转义字符"><img
    										src="https://img.php.cn/upload/subject/202309/04/2023090411084899588.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="JavaScript转义字符" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/javascriptzy" class="aClass flexRow hotztra overflowclass" title="JavaScript转义字符">JavaScript转义字符</a>
    									<p class="aClass flexRow hotztrp overflowclass">JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">394</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.09.04</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jsscsjsdff" class="aClass flexRow hotzta" title="js生成随机数的方法"><img
    										src="https://img.php.cn/upload/subject/202309/04/2023090411300156430.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="js生成随机数的方法" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jsscsjsdff" class="aClass flexRow hotztra overflowclass" title="js生成随机数的方法">js生成随机数的方法</a>
    									<p class="aClass flexRow hotztrp overflowclass">js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">991</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.09.04</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/rhqyjavascrip" class="aClass flexRow hotzta" title="如何启用JavaScript"><img
    										src="https://img.php.cn/upload/subject/202309/12/2023091210411962381.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="如何启用JavaScript" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/rhqyjavascrip" class="aClass flexRow hotztra overflowclass" title="如何启用JavaScript">如何启用JavaScript</a>
    									<p class="aClass flexRow hotztrp overflowclass">JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">656</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.09.12</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/jssymbol" class="aClass flexRow hotzta" title="Js中Symbol类详解"><img
    										src="https://img.php.cn/upload/subject/202309/20/2023092011360778721.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="Js中Symbol类详解" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/jssymbol" class="aClass flexRow hotztra overflowclass" title="Js中Symbol类详解">Js中Symbol类详解</a>
    									<p class="aClass flexRow hotztrp overflowclass">javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">551</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2023.09.20</p>
    										</div>
    									</div>
    								</div>
    							</div>
    													<div class="hotztlls flexRow">
    								<a target="_blank" href="/faq/cdycsydmzl" class="aClass flexRow hotzta" title="C++ 单元测试与代码质量保障"><img
    										src="https://img.php.cn/upload/subject/202601/16/2026011609573514777.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="C++ 单元测试与代码质量保障" class="hotztaimg"
    										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
    								<div class="hotztright flexColumn">
    									<a target="_blank" href="/faq/cdycsydmzl" class="aClass flexRow hotztra overflowclass" title="C++ 单元测试与代码质量保障">C++ 单元测试与代码质量保障</a>
    									<p class="aClass flexRow hotztrp overflowclass">本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。</p>
    									<div class="hotztrdown flexRow">
    										<div class="htztdsee flexRow"> <b></b>
    											<p class="">8</p>
    										</div>
    										<div class="htztdTime flexRow"> <b></b>
    											<p>2026.01.16</p>
    										</div>
    									</div>
    								</div>
    							</div>
    											</div>
    				</div>
    
    				<div class="hotdownload ">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>热门下载</p>
    						</div>
    						<a target="_blank" class="rititle-more flexRow" href="/xiazai" title="热门下载"><span>更多</span><b></b></a>
    					</div>
    					<div class="hotdownTab">
    						<div class="hdTabs flexRow">
    							<div class="check" data-id="onef">网站特效 <b></b> </div> /
    							<div class="" data-id="twof">网站源码 <b></b></div> /
    							<div class="" data-id="threef">网站素材 <b></b></div> /
    							<div class="" data-id="fourf">前端模板 <b></b></div>
    						</div>
    						<ul class="onef">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="js+html5实现图片倒影效果代码" href="/xiazai/js/8478"><span>[图片特效]</span><span>js+html5实现图片倒影效果代码</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="CSS3鼠标经过图片缩小显示文字特效" href="/xiazai/js/8477"><span>[文字特效]</span><span>CSS3鼠标经过图片缩小显示文字特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="可全屏浏览baguettebox相册代码" href="/xiazai/js/8476"><span>[图片特效]</span><span>可全屏浏览baguettebox相册代码</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery注册登录改密表单代码" href="/xiazai/js/8475"><span>[表单按钮]</span><span>jQuery注册登录改密表单代码</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="纯CSS3文字切片组合动画特效" href="/xiazai/js/8474"><span>[文字特效]</span><span>纯CSS3文字切片组合动画特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery适合风景展现幻灯片代码" href="/xiazai/js/8473"><span>[图片特效]</span><span>jQuery适合风景展现幻灯片代码</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="CSS3窗口登录表单带关闭按钮" href="/xiazai/js/8472"><span>[表单按钮]</span><span>CSS3窗口登录表单带关闭按钮</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="CSS3绘制iPhoneX手机墙纸切换特效" href="/xiazai/js/8471"><span>[图片特效]</span><span>CSS3绘制iPhoneX手机墙纸切换特效</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="jQuery联系人生成二维码代码" href="/xiazai/js/8470"><span>[表单按钮]</span><span>jQuery联系人生成二维码代码</span></a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" title="10款鼠标悬停遮罩显示文字特效" href="/xiazai/js/8469"><span>[文字特效]</span><span>10款鼠标悬停遮罩显示文字特效</span></a>
    									</div>
    								</li>
    													</ul>
    						<ul class="twof" style="display:none;">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11354" title="思翔企(事)业单位文件柜 build 20080313"><span>[其它模板]</span><span>思翔企(事)业单位文件柜 build 20080313</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11353" title="雅龙智能装备工业设备类WordPress主题1.0"><span>[企业站源码]</span><span>雅龙智能装备工业设备类WordPress主题1.0</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11352" title="威发卡自动发卡系统"><span>[电商源码]</span><span>威发卡自动发卡系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11351" title="卡密分发系统"><span>[电商源码]</span><span>卡密分发系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11350" title="中华陶瓷网"><span>[电商源码]</span><span>中华陶瓷网</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11349" title="简洁粉色食品公司网站"><span>[电商源码]</span><span>简洁粉色食品公司网站</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11348" title="极速网店系统"><span>[电商源码]</span><span>极速网店系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11347" title="淘宝妈妈_淘客推广系统"><span>[电商源码]</span><span>淘宝妈妈_淘客推广系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11346" title="积客B2SCMS商城系统"><span>[电商源码]</span><span>积客B2SCMS商城系统</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/11345" title="CODEC2I 众筹系统"><span>[电商源码]</span><span>CODEC2I 众筹系统</span> </a>
    									</div>
    								</li>
    													</ul>
    						<ul class="threef" style="display:none;">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4199" title="现代几何抽象飞鸟装饰矢量素材"><span>[网站素材]</span><span>现代几何抽象飞鸟装饰矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4198" title="极简线条玉兰花卉插画矢量素材"><span>[网站素材]</span><span>极简线条玉兰花卉插画矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4197" title="手绘烹饪调料香料合集矢量素材"><span>[网站素材]</span><span>手绘烹饪调料香料合集矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4196" title="惬意午后咖啡阅读时光矢量插画"><span>[网站素材]</span><span>惬意午后咖啡阅读时光矢量插画</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4195" title="中国宏伟古建筑矢量素材"><span>[网站素材]</span><span>中国宏伟古建筑矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4194" title="黑色星期五耳机折扣横幅设计下载"><span>[网站素材]</span><span>黑色星期五耳机折扣横幅设计下载</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4193" title="国潮风莲花荷塘插画矢量素材"><span>[网站素材]</span><span>国潮风莲花荷塘插画矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4192" title="假日快乐烟花背景ps素材下载"><span>[网站素材]</span><span>假日快乐烟花背景ps素材下载</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4191" title="新春喜庆剪纸喜鹊窗花矢量素材"><span>[网站素材]</span><span>新春喜庆剪纸喜鹊窗花矢量素材</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/sucai/4190" title="绿色生态梯田自然风景矢量素材"><span>[网站素材]</span><span>绿色生态梯田自然风景矢量素材</span> </a>
    									</div>
    								</li>
    													</ul>
    						<ul class="fourf" style="display:none;">
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8590"  title="驾照考试驾校HTML5网站模板"><span>[前端模板]</span><span>驾照考试驾校HTML5网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8589"  title="驾照培训服务机构宣传网站模板"><span>[前端模板]</span><span>驾照培训服务机构宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8588"  title="HTML5房地产公司宣传网站模板"><span>[前端模板]</span><span>HTML5房地产公司宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8587"  title="新鲜有机肉类宣传网站模板"><span>[前端模板]</span><span>新鲜有机肉类宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8586"  title="响应式天气预报宣传网站模板"><span>[前端模板]</span><span>响应式天气预报宣传网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8585"  title="房屋建筑维修公司网站CSS模板"><span>[前端模板]</span><span>房屋建筑维修公司网站CSS模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8584"  title="响应式志愿者服务网站模板"><span>[前端模板]</span><span>响应式志愿者服务网站模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8583"  title="创意T恤打印店网站HTML5模板"><span>[前端模板]</span><span>创意T恤打印店网站HTML5模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8582"  title="网页开发岗位简历作品展示网页模板"><span>[前端模板]</span><span>网页开发岗位简历作品展示网页模板</span> </a>
    									</div>
    								</li>
    															<li>
    									<div class="wzrfourli flexRow">
    										<b></b>
    										<a target="_blank" href="/xiazai/code/8581"  title="响应式人力资源机构宣传网站模板"><span>[前端模板]</span><span>响应式人力资源机构宣传网站模板</span> </a>
    									</div>
    								</li>
    													</ul>
    					</div>
    					<script>
    						$('.hdTabs>div').click(function (e) {
    							$('.hdTabs>div').removeClass('check')
    							$(this).addClass('check')
    							$('.hotdownTab>ul').css('display', 'none')
    							$('.' + e.currentTarget.dataset.id).show()
    						})
    					</script>
    
    				</div>
    
    				<div class="artrig-adv ">
    					<script type="text/javascript" src="https://teacher.php.cn/php/MDM3MTk1MGYxYjI5ODJmNTE0ZWVkZTA3NmJhYzhmMjI6Og=="></script>
                    </div>
    
    
    
    				<div class="xgarts ">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>相关下载</p>
    						</div>
    						<a target="_blank" class="rititle-more flexRow" href="/xiazai" title="相关下载"><span>更多</span><b></b></a>
    					</div>
    					<div class="xgwzlist ">
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="制作简单的响应式幻灯片" href="/xiazai/js/6122">制作简单的响应式幻灯片</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="jquery实现鼠标左右移动动画特效" href="/xiazai/js/3242">jquery实现鼠标左右移动动画特效</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="js-实现原生表单提交验证" href="/xiazai/js/2969">js-实现原生表单提交验证</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="HTML5效果非常全面的模态窗口弹出层插件" href="/xiazai/js/1686">HTML5效果非常全面的模态窗口弹出层插件</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="css3全屏大图小图切换焦点图广告代码" href="/xiazai/js/1196">css3全屏大图小图切换焦点图广告代码</a></div>
    											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="HTML5+JS实现刮刮乐刮刮卡抽奖特效代码" href="/xiazai/js/54">HTML5+JS实现刮刮乐刮刮卡抽奖特效代码</a></div>
    										</div>
    
    				</div>
    
    				<div class="jpkc">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>精品课程</p>
    						</div>
    						<a class="rititle-more flexRow" target="_blank" href="/course/sort_new.html" title="精品课程"><span>更多</span><b></b></a>
    					</div>
    					<div class=" jpkcTab">
    						<div class=" jpkcTabs flexRow">
    							<div class="check" data-id="onefd">相关推荐 <b></b> </div> /
    							<div class="" data-id="twofd">热门推荐 <b></b></div> /
    							<div class="" data-id="threefd">最新课程 <b></b></div>
    						</div>
    						<div class="onefd jpktabd">
    													<div  class="ristyA flexRow " >
    								<a target="_blank" href="/course/1695.html" title="Node.js 教程">
    									<img src="https://img.php.cn/upload/course/000/000/090/68b03f827e9e7343.png?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="Node.js 教程" class="ristyAimg"
    										onerror="this.src='/static/mobimages/moren/morentu.png'">
    								</a>
    								<div class="ristyaRight flexColumn">
    									<a target="_blank" href="/course/1695.html" title="Node.js 教程"
    										class="rirightp overflowclass">Node.js 教程</a>
    
    									<div class="risrdown flexRow">
    										<p>共57课时 | 8.7万人学习</p>
    									</div>
    								</div>
    							</div>
    													<div  class="ristyA flexRow " >
    								<a target="_blank" href="/course/1694.html" title="CSS3 教程">
    									<img src="https://img.php.cn/upload/course/000/000/090/68aee967a4940837.png?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="CSS3 教程" class="ristyAimg"
    										onerror="this.src='/static/mobimages/moren/morentu.png'">
    								</a>
    								<div class="ristyaRight flexColumn">
    									<a target="_blank" href="/course/1694.html" title="CSS3 教程"
    										class="rirightp overflowclass">CSS3 教程</a>
    
    									<div class="risrdown flexRow">
    										<p>共18课时 | 4.6万人学习</p>
    									</div>
    								</div>
    							</div>
    													<div  class="ristyA flexRow " >
    								<a target="_blank" href="/course/1693.html" title="Rust 教程">
    									<img src="https://img.php.cn/upload/course/000/000/090/68aee27297123615.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="Rust 教程" class="ristyAimg"
    										onerror="this.src='/static/mobimages/moren/morentu.png'">
    								</a>
    								<div class="ristyaRight flexColumn">
    									<a target="_blank" href="/course/1693.html" title="Rust 教程"
    										class="rirightp overflowclass">Rust 教程</a>
    
    									<div class="risrdown flexRow">
    										<p>共28课时 | 4.4万人学习</p>
    									</div>
    								</div>
    							</div>
    												</div>
    
    						<div class="twofd jpktabd" style="display:none;">
    															<div  class="ristyA flexRow " >
    									<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学">
    										<img src="https://img.php.cn/upload/course/000/000/081/6862652adafef801.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="JavaScript ES5基础线上课程教学" class="ristyAimg"
    											onerror="this.src='/static/mobimages/moren/morentu.png'">
    									</a>
    									<div class="ristyaRight flexColumn">
    										<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学"
    											class="rirightp overflowclass">JavaScript ES5基础线上课程教学</a>
    
    										<div class="risrdown flexRow">
    											<p>共6课时 | 7.1万人学习</p>
    										</div>
    									</div>
    								</div>
    															<div  class="ristyA flexRow " >
    									<a target="_blank" href="/course/812.html" title="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)">
    										<img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)" class="ristyAimg"
    											onerror="this.src='/static/mobimages/moren/morentu.png'">
    									</a>
    									<div class="ristyaRight flexColumn">
    										<a target="_blank" href="/course/812.html" title="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)"
    											class="rirightp overflowclass">最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)</a>
    
    										<div class="risrdown flexRow">
    											<p>共79课时 | 151.2万人学习</p>
    										</div>
    									</div>
    								</div>
    															<div  class="ristyA flexRow " >
    									<a target="_blank" href="/course/639.html" title="phpStudy极速入门视频教程">
    										<img src="https://img.php.cn/upload/course/000/000/068/62611ef88fcec821.jpg?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="phpStudy极速入门视频教程" class="ristyAimg"
    											onerror="this.src='/static/mobimages/moren/morentu.png'">
    									</a>
    									<div class="ristyaRight flexColumn">
    										<a target="_blank" href="/course/639.html" title="phpStudy极速入门视频教程"
    											class="rirightp overflowclass">phpStudy极速入门视频教程</a>
    
    										<div class="risrdown flexRow">
    											<p>共6课时 | 53.4万人学习</p>
    										</div>
    									</div>
    								</div>
    													</div>
    
    						<div class="threefd jpktabd" style="display:none;">
    															<div  class="ristyA flexRow " >
    										<a target="_blank" href="/course/1696.html" title="最新Python教程 从入门到精通">
    											<img src="https://img.php.cn/upload/course/000/000/081/68c135bb72783194.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="最新Python教程 从入门到精通" class="ristyAimg"
    												onerror="this.src='/static/mobimages/moren/morentu.png'">
    										</a>
    										<div class="ristyaRight flexColumn">
    											<a target="_blank" href="/course/1696.html" title="最新Python教程 从入门到精通"
    												class="rirightp overflowclass">最新Python教程 从入门到精通</a>
    
    											<div class="risrdown flexRow">
    												<p>共4课时 | 1.1万人学习</p>
    											</div>
    										</div>
    									</div>
    																<div  class="ristyA flexRow " >
    										<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学">
    											<img src="https://img.php.cn/upload/course/000/000/081/6862652adafef801.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="JavaScript ES5基础线上课程教学" class="ristyAimg"
    												onerror="this.src='/static/mobimages/moren/morentu.png'">
    										</a>
    										<div class="ristyaRight flexColumn">
    											<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学"
    												class="rirightp overflowclass">JavaScript ES5基础线上课程教学</a>
    
    											<div class="risrdown flexRow">
    												<p>共6课时 | 7.1万人学习</p>
    											</div>
    										</div>
    									</div>
    																<div  class="ristyA flexRow " >
    										<a target="_blank" href="/course/1655.html" title="PHP新手语法线上课程教学">
    											<img src="https://img.php.cn/upload/course/000/000/081/684a8c23d811b293.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="PHP新手语法线上课程教学" class="ristyAimg"
    												onerror="this.src='/static/mobimages/moren/morentu.png'">
    										</a>
    										<div class="ristyaRight flexColumn">
    											<a target="_blank" href="/course/1655.html" title="PHP新手语法线上课程教学"
    												class="rirightp overflowclass">PHP新手语法线上课程教学</a>
    
    											<div class="risrdown flexRow">
    												<p>共13课时 | 0.9万人学习</p>
    											</div>
    										</div>
    									</div>
    														</div>
    						<script>
    							$('.jpkcTabs>div').click(function (e) {
    								$('.jpkcTabs>div').removeClass('check')
    								$(this).addClass('check')
    								$('.jpkcTab .jpktabd').css('display', 'none')
    								$('.' + e.currentTarget.dataset.id).show()
    							})
    						</script>
    
    					</div>
    				</div>
    
    				<div class="zxarts ">
    					<div class="rightdTitle flexRow">
    						<div class="title-left flexRow"> <b></b>
    							<p>最新文章</p>
    						</div>
    						<a class="rititle-more flexRow" href="" title="最新文章" target="_blank"><span>更多</span><b></b></a>
    					</div>
    					<div class="xgwzlist ">
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何实现并发可控的异步请求队列(限流执行)" href="/faq/1989298.html">如何实现并发可控的异步请求队列(限流执行)</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何递归清理 JSON 中所有 null 和空字符串值的键及其空对象" href="/faq/1989232.html">如何递归清理 JSON 中所有 null 和空字符串值的键及其空对象</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何在 React 中正确使用 useRef 动态创建多个 DOM 引用" href="/faq/1989217.html">如何在 React 中正确使用 useRef 动态创建多个 DOM 引用</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何正确实现短语级文本替换而非单词级替换" href="/faq/1989073.html">如何正确实现短语级文本替换而非单词级替换</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="React 项目中 HTML 标签(如 <h1>)未生效的解决方案" href="/faq/1988976.html">React 项目中 HTML 标签(如 <h1>)未生效的解决方案</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何基于指定表头列(如 TYPE)高亮重复值单元格" href="/faq/1988925.html">如何基于指定表头列(如 TYPE)高亮重复值单元格</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="实现响应式导航的自动激活与状态持久化:React 中汉堡菜单的智能控制策略" href="/faq/1988758.html">实现响应式导航的自动激活与状态持久化:React 中汉堡菜单的智能控制策略</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何递归清理 JSON 中所有 null 和空字符串值的对象" href="/faq/1988729.html">如何递归清理 JSON 中所有 null 和空字符串值的对象</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="React Redux Toolkit:如何在状态更新后触发异步请求同步到后端" href="/faq/1988704.html">React Redux Toolkit:如何在状态更新后触发异步请求同步到后端</a></div>
    													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何基于指定表头(<th>)定位列并高亮重复值单元格" href="/faq/1988586.html">如何基于指定表头(<th>)定位列并高亮重复值单元格</a></div>
    											</div>
    
    				</div>
    
    
    
    
    
    
    			</div>
    
    
    
    		</div>
    
    	</div>
    	<!--底部-->
    	<div class="phpFoot">
        <div class="phpFootIn">
            <div class="phpFootCont">
                <div class="phpFootLeft">
                    <dl>
                        <dt>
                            <a target="_blank"  href="/about/us.html" rel="nofollow"  title="关于我们" class="cBlack">关于我们</a>
                            <a target="_blank"  href="/about/disclaimer.html" rel="nofollow"  title="免责申明" class="cBlack">免责申明</a>
                            <a target="_blank"  href="/about/jbzx.html" rel="nofollow"  title="举报中心" class="cBlack">举报中心</a>
                            <a   href="javascript:;" rel="nofollow" onclick="advice_data(99999999,'意见反馈')"   title="意见反馈" class="cBlack">意见反馈</a>
                            <a target="_blank"  href="https://www.php.cn/teacher.html" rel="nofollow"   title="讲师合作" class="cBlack">讲师合作</a>
                            <a  target="_blank" href="https://www.php.cn/blog/detail/20304.html" rel="nofollow"  title="广告合作" class="cBlack">广告合作</a>
                            <a  target="_blank" href="/new/"    title="最新文章列表" class="cBlack">最新更新</a>
                                                    <div class="clear"></div>
                        </dt>
                        <dd class="cont1">php中文网:公益在线php培训,帮助PHP学习者快速成长!</dd>
                        <dd class="cont2">
                          <span class="ylwTopBox">
                            <a   href="javascript:;"  class="cBlack"><b class="icon1"></b>关注服务号</a>
                            <em style="display:none;" class="ylwTopSub">
                              <p>微信扫码<br/>关注PHP中文网服务号</p>
                              <img src="/static/images/examples/text16.png"/>
                            </em>
                          </span>
                            <span class="ylwTopBox">
                            <a   href="tencent://message/?uin=27220243&Site=www.php.cn&Menu=yes"  class="cBlack"><b class="icon2"></b>技术交流群</a>
                            <em style="display:none;" class="ylwTopSub">
                              <p>QQ扫码<br/>加入技术交流群</p>
                              <img src="/static/images/examples/text18.png"/>
                            </em>
                          </span>
                            <div class="clear"></div>
                        </dd>
                    </dl>
                    
                </div>
                <div class="phpFootRight">
                    <div class="phpFootMsg">
                        <span><img src="/static/images/examples/text17.png"/></span>
                        <dl>
                            <dt>PHP中文网订阅号</dt>
                            <dd>每天精选资源文章推送</dd>
                        </dl>
                    </div>
                </div>
            </div>
        </div>
        <div class="phpFootCode">
            <div class="phpFootCodeIn"><p>Copyright 2014-2026 <a   href="https://www.php.cn/" >https://www.php.cn/</a> All Rights Reserved | php.cn | <a   href="https://beian.miit.gov.cn/" rel="nofollow" >湘ICP备2023035733号</a></p><a   href="http://www.beian.gov.cn/portal/index.do" rel="nofollow" ><b></b></a></div>
        </div>
    </div>
    <input type="hidden" id="verifycode" value="/captcha.html">
    <script>
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?c0e685c8743351838d2a7db1c49abd56";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>
    <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script>
    
    <span class="layui-hide"><script type="text/javascript" src="https://s4.cnzz.com/z_stat.php?id=1280886301&web_id=1280886301"></script></span>
    
    <script src="/static/js/cdn.js?v=1.0.1"></script>
    
    
    
    	<!--底部 end-->
    	<!-- content -->
    	<!--
        <div class="phpFudong">
            <div class="phpFudongIn">
                <div class="phpFudongImg"></div>
                <div class="phpFudongXue">登录PHP中文网,和优秀的人一起学习!</div>
                <div class="phpFudongQuan">全站<span>2000+</span>教程免费学</div>
                <div class="phpFudongCode"><a   href="javascript:;" id="login" title="微信扫码登录">微信扫码登录</a></div>
                <div class="phpGuanbi" onclick="$('.phpFudong').hide();"></div>
                <div class="clear"></div>
            </div>
        </div>
    -->	<!--底部浮动层 end-->
    	<!--侧导航-->
    	<style>
        .layui-fixbar{display: none;}
    </style>
    <div class="phpSdhBox" style="height:240px !important;">
        <li>
            <div class="phpSdhIn">
                <div class="phpSdhTitle">
                    <a   href="/k24.html"  class="hover" title="PHP学习">
                        <b class="icon1"></b>
                        <p>PHP学习</p>
                    </a>
                </div>
            </div>
        </li>
        <li>
            <div class="phpSdhIn">
                <div class="phpSdhTitle">
                    <a   href="https://www.php.cn/blog/detail/1047189.html" >
                        <b class="icon2"></b>
                        <p>技术支持</p>
                    </a>
                </div>
            </div>
        </li>
        <li>
            <div class="phpSdhIn">
                <div class="phpSdhTitle">
                    <a   href="#">
                        <b class="icon6"></b>
                        <p>返回顶部</p>
                    </a>
                </div>
            </div>
        </li>
    </div>
    	</body>
    
    </html>
    
    <script type="text/javascript" src="/hitsUp?type=article&id=1460192&time=1768548460">
    </script>
    <script src="/static/ueditor/third-party/SyntaxHighlighter/shCore.js?1768548460"></script>
    <script>
    	article_status = "1522181";
    </script>
    <input type="hidden" id="verifycode" value="/captcha.html">
    <script type="text/javascript" src="/static/js/global.min.js?5.5.33"></script>
    <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
    <script type='text/javascript' src='/static/js/viewer.min.js?1'></script>
    <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script>
    <script type="text/javascript" src="/static/js/jquery.cookie.js"></script>
    <script>var _hmt = _hmt || [];(function(){var hm = document.createElement("script");hm.src="//hm.baidu.com/hm.js?c0e685c8743351838d2a7db1c49abd56";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();(function(){var bp = document.createElement('script');var curProtocol = window.location.protocol.split(':')[0];if(curProtocol === 'https'){bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';}else{bp.src = 'http://push.zhanzhang.baidu.com/push.js';};var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(bp, s);})();</script>
    	
    
    <script>
    	function setCookie(name, value, iDay) { //name相当于键,value相当于值,iDay为要设置的过期时间(天)
    		var oDate = new Date();
    		oDate.setDate(oDate.getDate() + iDay);
    		document.cookie = name + '=' + value + ';path=/;domain=.php.cn;expires=' + oDate;
    	}
    
    	function getCookie(name) {
    		var cookieArr = document.cookie.split(";");
    		for (var i = 0; i < cookieArr.length; i++) {
    			var cookiePair = cookieArr[i].split("=");
    			if (name == cookiePair[0].trim()) {
    				return decodeURIComponent(cookiePair[1]);
    			}
    		}
    		return null;
    	}
    </script>
    
    
    <!-- Matomo -->
    <script>
    	var _paq = window._paq = window._paq || [];
    	/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    	_paq.push(['trackPageView']);
    	_paq.push(['enableLinkTracking']);
    	(function () {
    		var u = "https://tongji.php.cn/";
    		_paq.push(['setTrackerUrl', u + 'matomo.php']);
    		_paq.push(['setSiteId', '7']);
    		var d = document,
    			g = d.createElement('script'),
    			s = d.getElementsByTagName('script')[0];
    		g.async = true;
    		g.src = u + 'matomo.js';
    		s.parentNode.insertBefore(g, s);
    	})();
    </script>
    <!-- End Matomo Code -->
    
    <script>
    	setCookie('is_article', 1, 1);
    </script>
    
    <script>
    	var is_login = "0";
            var show = 0;
            var ceng = getCookie('ceng');
            //未登录复制显示登录按钮
            if(is_login == 0 && false){
                $(".code").hover(function(){
                    $(this).find('.contentsignin').show();
                },function(){
                    $(this).find('.contentsignin').hide();
                });
                //不给复制
                $('.code').bind("cut copy paste",function(e) {
                    e.preventDefault();
                });
                $('.code .contentsignin').click(function(){
                    $(document).trigger("api.loginpopbox");
                })
            }else{
                // 获取所有的 <pre> 元素
                var preElements = document.querySelectorAll('pre');
                preElements.forEach(function(preElement) {
                    // 创建复制按钮
                    var copyButton = document.createElement('button');
                    copyButton.className = 'copy-button';
                    copyButton.textContent = '复制';
                    // 添加点击事件处理程序
                    copyButton.addEventListener('click', function() {
                        // 获取当前按钮所属的 <pre> 元素中的文本内容
                        var textContent = preElement.textContent.trim();
                        // 创建一个临时 textarea 元素并设置其值为 <pre> 中的文本内容
                        var tempTextarea = document.createElement('textarea');
                        tempTextarea.value = textContent;
                        // 将临时 textarea 添加到文档中
                        document.body.appendChild(tempTextarea);
                        // 选中临时 textarea 中的文本内容并执行复制操作
                        tempTextarea.select();
                        document.execCommand('copy');
                        // 移除临时 textarea 元素
                        document.body.removeChild(tempTextarea);
                        // 更新按钮文本为 "已复制"
                        this.textContent = '已复制';
                    });
    
                    // 创建AI写代码按钮
                    var aiButton = document.createElement('button');
                    aiButton.className = 'copy-button';
                    aiButton.textContent = 'AI写代码';
                    aiButton.style.marginLeft = '5px';
                    aiButton.style.marginRight = '5px';
                    // 添加点击事件处理程序
                    aiButton.addEventListener('click', function() {
                    // Generate a random number between 0 and 1
                            var randomChance = Math.random();
    
                        // If the random number is less than 0.5, open the first URL, else open the second
                        if (randomChance < 0.5) {
                            window.open('https://www.doubao.com/chat/coding?channel=php&source=hw_db_php', '_blank');
                        } else {
                            window.open('https://click.aliyun.com/m/1000402709/', '_blank');
                        }
                    });
    
                    // 将按钮添加到 <pre> 元素前面
                    preElement.parentNode.insertBefore(copyButton, preElement);
                    preElement.parentNode.insertBefore(aiButton, preElement);
            });
            }
    </script>