早在数月前,React团队便预告了React19的积极开发,并预计上半年发布。4月25日,React总算发布了v19测试版。该版本主要面向各大库,以确保它们与React19的兼容性。为此,建议开发者先升级至最新的稳定版18.3.0,静候React19的即将版发布。
React19带来了众多新特点和改进,除了提高了开发者的使用体验,还进一步优化了React应用的性能。为了让开发者能否平稳过渡到React19,React团队特意打算了一份详细的升级手册,详尽列举了升级步骤和可能碰到的重大变化。
接出来,本文将探讨React18.3与React19的更新内容,并探求React19的升级手册,推动更好地拥抱这一重大更新!
React18.3更新内容
React18.3相对于18.2降低了对废弃API的警告以及其他为React19所需的修改。
ReactDOM
React19更新内容
在React应用中,执行数据变更并据此更新状态是一个常见的需求。例如,用户递交表单以更改姓名时,我们会发起API恳求并处理其响应。往年,我们不得不自动管理挂起状态、错误处理、乐观更新以及次序恳求等逻辑。
比如,可以使用来处理挂起和错误状态:
function UpdateName({}) {
const [name, setName] = useState("");
const [error, setError] = useState(null);
const [isPending, setIsPending] = useState(false);
const handleSubmit = async () => {
setIsPending(true);
const error = await updateName(name);
setIsPending(false);
if (error) {
setError(error);
return;
}
redirect("/path");
};
return (
setName(
event.target.
value)} />
{error &&
{error}
}
);
}
在React19中降低了对在转换中使用异步函数的支持,以手动处理挂起状态、错误、表单和豁达更新。
比如,可以使用来手动处理挂起状态:
function UpdateName({}) {
const [name, setName] = useState("");
const [error, setError] = useState(null);
const [isPending, startTransition] = useTransition();
const handleSubmit = async () => {
startTransition(async () => {
const error = await updateName(name);
if (error) {
setError(error);
return;
}
redirect("/path");
})
};
return (
);
}
异步转换会立即将状态设为true,发起异步恳求,并在转换完成后将设置为false。这样可以确保数据变化时,UI一直保持响应和交互性。
在功能的基础上,React19还推出了Hook来简化豁达更新的管理,以及React.Hook来处理的常见场景。同时,在react-dom中,新增了来手动管理表单操作,并提供了来支持表单中的常见需求。
在React19中,前面的反例可以简化为:
function ChangeName({ name, setName }) {
const [error, submitAction, isPending] = useActionState(
async (previousState, formData) => {
const error = await updateName(formData.get("name"));
if (error) {
return error;
}
redirect("/path");
}
);
return (
);
}
下边就来瞧瞧这种新的功能的作用和使用方式。
全新Hook:
为了让常见的用例愈发简便,因而添加了一个名为的新Hook:
const [error, submitAction, isPending] = useActionState(async (previousState, newName) => {
const error = await updateName(newName);
if (error) {
// 可以返回Action的任何结果,这里只返回错误信息。
return error;
}
// 处理成功的情况
});
接受一个函数(即“”),并返回一个可调用的包装。这之所以还能工作是由于是可组合的。当调用包装后的时,将返回的最后一个结果作为数据,并将的挂起状态作为返回。
ReactDOM:
在React19中,与react-dom的新特点进行了深度整合。如今,可以将函数作为、和元素的和属性,便于手动使用递交表单:
当的成功执行时,React会手动为不受控组件重置表单状态。假如须要自动重置,ReactDOMAPI提供了全新的方式。
ReactDOM新Hook:
在建立设计系统时,常常须要创建一些设计组件,这种组件须要才能访问其所在表单的状态信息,而毋须通过层层传递props来实现。即使通过也可以实现这一功能,但为了简化常见场景下的使用,React19引入了一个新的Hook:
import { useFormStatus } from 'react-dom';
function DesignButton() {
const { pending } = useFormStatus();
return
可以读取父级的状态,如同该表单是一个一样。
全新Hook:
在数据变更操作中,一种常见的UI模式是在异步恳求执行期间豁达地显示预期的最终状态。React19引入了新的Hook,以简化这一流程:
function ChangeName({currentName, onUpdateName}) {
const [optimisticName, setOptimisticName] = useoptimistic(currentName);
const submitAction = async formData => {
const newName = formData.get("name");
setOptimisticName(newName);
const updatedName = await updateName(newName);
onUpdateName(updatedName);
};
return (
Your name is: {optimisticName}
);
}
在这个事例中,Hook准许在恳求还在进行时,立刻将输入框的值(即)设置为,因而豁达地更新UI。假如更新成功,则通过反弹函数来确认状态的修改;假如更新失败或发生错误,可以通过回滚到原始状态。
全新API:use
在React19中,引入了一个全新的API——use,它容许在组件渲染时直接读取资源。
举个反例,可以使用use来读取一个对象,而React将会手动挂起()组件的渲染,直至该解析完成:
import { use } from 'react';
function Comments({ commentsPromise }) {
const comments = use(commentsPromise);
return (
{comments.map((comment) => (
{comment.text}
))}
);
}
function Page({ commentsPromise }) {
return (
加载中...
}>
);
}
同样可以使用use来读取上下文(),因而实现在特定条件下(比如初期返回以后)按需读取上下文数据。
初期返回指的是在函数或方式中的某个点提早结束执行,并返回结果或退出,而不是继续执行剩余的代码。在函数内部,按照个别条件或逻辑,你可能会决定不须要继续执行后续的代码,此时可以使用句子来立刻退出函数。
import {use} from 'react';
import ThemeContext from './ThemeContext'
function Heading({children}) {
if (children == null) {
return null;
}
const theme = use(ThemeContext);
return (
{children}
);
}
useAPI的调用仅限于渲染阶段,与React的Hook类似。但是,与Hook不同的是,useAPI准许在条件句子中灵活调用。展望未来,React团队计划进一步扩充useAPI的功能,提供更多在渲染时消费资源的方法。
React服务器组件服务器组件
服务器组件是一种创新性的技术,它容许在打包前,在独立于顾客端应用程序或服务器端渲染(SSR)服务器的环境中预先渲染组件。这个独立的环境即为React服务器组件中的“服务器”。服务器组件有两种运行模式:一种是在建立时(比如在持续集成服务器上)运行一次;另一种是针对每位恳求,通过Web服务器进行实时运行。
React19全面集成了来自频道的所有服务器组件特点。这意味着,这些带有服务器组件的库如今可以将React19作为对等依赖项进行目标定位,并通过react-导入条件,为支持全栈React构架的框架提供强悍的支持。
服务器操作
服务器动作是一项强悍功能,它容许顾客端组件调用并执行在服务端的异步函数。
通过“use”指令定义服务器操作后,框架将智能地创建一个指向服务端函数的引用,并安全地将该引用传递给顾客端组件。当顾客端组件须要调用这个函数时,React会负责向服务器发送恳求,执行相应的函数,并将结果返回给顾客端。
服务器操作的创建特别灵活,既可以在服务器组件内部创建,并作为属性传递给顾客端组件使用;也可以直接在顾客端组件中导出并调用。这些设计致使服务器操作就能无缝集成到应用中,实现前后端数据的流畅交互。
功能改进ref作为属性
从React19开始,可以将ref作为函数组件的参数进行访问:
function MyInput({placeholder, ref}) {
return
}
新的函数组件将不再须要,React团队将会发布一个代码转换工具来手动更新组件,以使用新的ref属性。在未来的版本中,将弃用并移除。
水合错误报告
React19在react-dom中对水合错误的报告进行了优化。过去,在开发模式下遇见水合不匹配时,系统常常只记录多个错误,而缺少关于不匹配内容的具体信息。如今,引入了diff功能,致使顾客端渲染与服务端渲染内容之间的差别一目了然。这一改进除了提高了错误报告的清晰度,更有助于开发者迅速定位并修补水合相关问题,因而急剧提高开发效率。

现今只会记录一条包含不匹配内容差别的消息:

作为提供者
React19准许直接将用作提供者,而无需使用传统的写法:
const ThemeContext = createContext('');
function App({children}) {
return (
{children}
);
}
这些新的句型愈发简练直观。为了便捷开发者升级现有代码,React团队将发布一个代码转换工具,才能手动将现有的转换为新的提供者。未来版本中,将逐渐弃用,以促进React社区向愈发简化的句型过渡。
refs清除函数
如今支持从ref反弹函数中返回一个清除函数:
{
return () => {
};
}}
/>
当组件卸载时,React将调用从ref反弹函数中返回的清除函数。这适用于DOMrefs、类组件的refs以及。
因为引入了ref清除函数的机制,如今将拒绝从ref反弹函数中返回除清除函数以外的任何内容。为了防止这个问题,我们一般建议避开使用隐式返回,例如将形参操作置于花括弧中,如下所示:
(instance = current)} />
{ instance = current; }} />
这些改变是由于难以判定原始代码中返回的是否应当是清除函数,还是无意中的隐式返回值。通过将形参操作明晰地包裹在花括弧中,确保了ref反弹中不会意外地返回任何值,除非有意为之。
为了手动化这些模式的转换,可以使用no--ref--规则进行代码转换。这将帮助你在升级React版本时更顺畅地处理ref相关的代码。
的初始值
React19为引入了选项,该选项容许指定组件首次渲染时返回的值。
function Search({ deferredValue }) {
const value = useDeferredValue(deferredValue, { initialValue: '' });
return (
);
}
使用可以确保组件在首次渲染时就能立刻显示一个占位值,而无需等待的异步估算完成。此后,当打算好时,会触发组件的后台重渲染,以显示最新的值。这有助于提高应用的响应性和用户体验。
文档元数据支持
在HTML中,例如、和等文档元数据标签一般放置在区域内。但是,在React应用中,决定什么元数据适用于当前页面的组件可能并不直接坐落渲染的位置,甚至React可能根本不直接渲染。过去,这种元数据标签须要自动通过或利用如react-这样的库进行插入,且在服务器渲染React应用时须要非常当心处理。
React19引入了原生支持在组件中渲染文档元数据标签的功能。这意味着可以直接在组件内部定义这种标签,React会手动将它们提高到文档的部份。这一改进确保了元数据标签才能在仅顾客端应用、流式服务端渲染(SSR)以及服务器组件等场景下正常工作。
下边是一个简单的示例,展示了怎样在React组件中定义并使用这种元数据标签:
function BlogPost({ post }) {
return (
{post.title}h1>
{/* 直接在组件内部定义元数据标签 */}
{post.title}title>
<span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"author"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">"Josh"</span> /></span>
<span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"author"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://twitter.com/joshcstory/"</span> /></span>
<span class="hljs-tag"><<span class="hljs-title">meta</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"keywords"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">{post.keywords.join(',</span> ')} /></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span>
Eee equals em-see-squared...
p>
article>
);
}
<span class="hljs-tag"></<span class="hljs-title">code</span>></span><span class="hljs-tag"></<span class="hljs-title">pre</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>在这个组件中,虽然、和标签被定义在了内部,但React会在渲染时手动将它们移至文档的区域。这些方法简化了元数据的管理,还提高了React应用在各类渲染模式下的兼容性和灵活性。<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>式样表支持<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>在Web开发中,款式表的管理至关重要,无论是通过外部链接()还是内嵌方法()引入,都须要在DOM中精准布局,以确保款式优先级得到妥善处理。但是,建立一个才能支持组件内部款式表组合的机制常常非常冗长,因而开发者经常面临权衡:要么将款式远离其依赖的组件加载,牺牲组织性;要么依赖外部款式库,降低额外的复杂性。<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>React19针对这一挑战提供了外置支持,除了简化了款式表的管理流程,还进一步提高了与顾客端并发渲染和服务器端流式渲染的集成能力。通过指定款式表的优先级,React将手动处理款式表在DOM中的插入次序,确保在展示依赖于特定款式规则的内容之前,相关的款式表(无论外部还是内嵌)早已被加载并应用。<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">pre</span>></span><span class="hljs-tag"><<span class="hljs-title">code</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"language-plaintext"</span>></span>function ComponentOne() {
return (
<span class="hljs-tag"><<span class="hljs-title">Suspense</span> <span class="hljs-attribute">fallback</span>=<span class="hljs-value">"loading..."</span>></span>
<span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"stylesheet"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"foo"</span> <span class="hljs-attribute">precedence</span>=<span class="hljs-value">"default"</span> /></span>
<span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"stylesheet"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"bar"</span> <span class="hljs-attribute">precedence</span>=<span class="hljs-value">"high"</span> /></span>
<span class="hljs-tag"><<span class="hljs-title">article</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"foo-class bar-class"</span>></span>
{...}
article>
Suspense>
)
}
function ComponentTwo() {
return (
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span>{...}p>
<span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"stylesheet"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"baz"</span> <span class="hljs-attribute">precedence</span>=<span class="hljs-value">"default"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">--</span> <span class="hljs-attribute">will</span> <span class="hljs-attribute">be</span> <span class="hljs-attribute">inserted</span> <span class="hljs-attribute">between</span> <span class="hljs-attribute">foo</span> & <span class="hljs-attribute">bar</span>
<span class="hljs-attribute">div</span>></span>
)
}
<span class="hljs-tag"></<span class="hljs-title">code</span>></span><span class="hljs-tag"></<span class="hljs-title">pre</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>在服务端渲染过程中,React会将款式表包含在标签中,以确保浏览器在加载完成前不会进行页面勾画。假如在早已开始流式传输后才发觉款式表,React将确保在顾客端将款式表插入到标签中,之后再展示依赖于该款式表的边界的内容。<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>在顾客端渲染过程中,React会等待新渲染的款式表加载完成后再递交渲染结果。假如在应用中的多个位置渲染了这个组件,React将确保款式表在文档中只被包含一次。<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">pre</span>></span><span class="hljs-tag"><<span class="hljs-title">code</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"language-plaintext"</span>></span>function App() {
return <span class="hljs-tag"><></span>
<span class="hljs-tag"><<span class="hljs-title">ComponentOne</span> /></span>
...
<span class="hljs-tag"><<span class="hljs-title">ComponentOne</span> /></span> // 不会导致 DOM 中出现重复的样式表链接
>
}
<span class="hljs-tag"></<span class="hljs-title">code</span>></span><span class="hljs-tag"></<span class="hljs-title">pre</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>对于这些习惯于自动加载款式表的开发者来说,React19的这一改进为她们提供了一个便利的机会。如今,可以将款式表直接置于依赖它们的组件后面,这除了有助于提高代码的可读性和可维护性,致使开发者可以愈发清晰地了解每位组件的款式依赖关系,并且还才能确保只加载真正须要的款式表。<span class="hljs-tag"></<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">p</span>></span>据悉,款式库和与打包器集成的款式工具也可以采用这一新特点。虽然开发者不直接渲染自己的款式表,只要她们所使用的工具升级到支持这一功能,她们同样还能享受到这一改进带来的益处。<span class="hljs-tag"></<span class="hljs-title">p</span>></span> <span class="hljs-tag"></<span class="hljs-title">article</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article pagebar-2"</span>></span> <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"doc"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"btn"</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"/e/dongpo/doc/?classid=33&id=195165"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span>></span>《React 19 终于来了!全新特性与改进,开发者必备升级指南》文档下载.doc<span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article art-copyright"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span>本文是由用户"游客"发布,所有内容的版权归原作者所有。没有经过书面许可,任何单位或个人不得以任何形式复制、转载、引用本网站的内容。否则将追究法律责任。<span class="hljs-tag"><<span class="hljs-title">br</span>></span><span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article prev-next"</span>></span> <span class="hljs-tag"><<span class="hljs-title">p
</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article art-prev"</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195159.html"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"prev"</span>></span><span class="hljs-tag"><<span class="hljs-title">span</span>></span>上一篇<span class="hljs-tag"></<span class="hljs-title">span</span>></span>
使用 Axios 在 React 中创建实时搜索功能 <span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article art-next"</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195350.html"</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"next"</span>></span><span class="hljs-tag"><<span class="hljs-title">span</span>></span>下一篇<span class="hljs-tag"></<span class="hljs-title">span</span>></span>
面试官让我回答 React 和 Vue 框架的区别. <span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article col-right r"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article widget widgetModule widgetHotPost"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article com-tit"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">h4</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article title-2"</span>></span>相关专题<span class="hljs-tag"></<span class="hljs-title">h4</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">ul</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article mod-main mod-post"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195425.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"彻底学会快速部署vue框架,一篇就够了"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
彻底学会快速部署vue框架,一篇就够了 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195424.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"Vue vben admin - 基于 Vue3 / Ant Design Vue 的高颜值管理后台UI框架"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
Vue vben admin - 基于 Vue3 / Ant Design Vue 的高颜值管理后台UI框架 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195423.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"软件外包开发的VUE开发框架"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
软件外包开发的VUE开发框架 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195422.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"微软为 Vue.js 推出 Power BI 组件,三大前端开发框架齐了"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
微软为 Vue.js 推出 Power BI 组件,三大前端开发框架齐了 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195421.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"前端大牛必用的Vue.js框架到底是什么?为什么这么受欢迎!"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
前端大牛必用的Vue.js框架到底是什么?为什么这么受欢迎! <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195420.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"一款超好用的前端框架:vue"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
一款超好用的前端框架:vue <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195419.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"Vuejs建议和最佳实践"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
Vuejs建议和最佳实践 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195418.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"Angular vs React vs Vue:2021 年,应该选择哪个框架"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
Angular vs React vs Vue:2021 年,应该选择哪个框架 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195417.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"探索Vue.js的无限可能 —— vuejs-challenges"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
探索Vue.js的无限可能 —— vuejs-challenges <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195416.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"前端框架对决:Element Plus vs Ant Design Vue,谁才是你的最佳选择"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
前端框架对决:Element Plus vs Ant Design Vue,谁才是你的最佳选择 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195415.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"前端学习:分享20个关于Vuejs的经验总结,良好的建议和最佳实践"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
前端学习:分享20个关于Vuejs的经验总结,良好的建议和最佳实践 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195414.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"vue后台管理框架1——介绍框架"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
vue后台管理框架1——介绍框架 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195413.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"从零开始搭建 VUE + Element UI后台管理系统框架"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
从零开始搭建 VUE + Element UI后台管理系统框架 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195412.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"Element Plus和Ant Design Vue两个主流vue3框架哪个好?"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
Element Plus和Ant Design Vue两个主流vue3框架哪个好? <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195411.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"手把手搭建Vue3中后台框架-NaiveUI、Less、unocss"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
手把手搭建Vue3中后台框架-NaiveUI、Less、unocss <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195410.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"搭建 Vue 2 开发框架可以分为以下几个步骤: 1"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
搭建 Vue 2 开发框架可以分为以下几个步骤: 1 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195409.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"框架用的好,下班走的早!值得收藏"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
框架用的好,下班走的早!值得收藏 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195408.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"全栈开发博客系统(nodejs+vuejs+mongodb)"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
全栈开发博客系统(nodejs+vuejs+mongodb) <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195407.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"2022年优秀的Web前端UI框架推荐"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
2022年优秀的Web前端UI框架推荐 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span>></span> <span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/kuangjia/195406.html"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"vuejs常用指令"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article clearfix"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span>></span>
vuejs常用指令 <span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">a</span>></span> <span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"></<span class="hljs-title">ul</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">footer</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer footer"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer footer-bottom"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer container"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer footer-copyright"</span>></span>Copyright © 2009-2025 mimiwuqi.com<span class="hljs-tag"><<span class="hljs-title">span</span>></span>・ <span class="hljs-tag"></<span class="hljs-title">span</span>></span><span class="hljs-tag"><<span class="hljs-title">script</span>></span><span class="javascript">
<span class="hljs-keyword">var</span> _hmt = _hmt || [];
(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> hm = document.createElement(<span class="hljs-string">"script"</span>);
hm.src = <span class="hljs-string">"https://hm.baidu.com/hm.js?cadf3e80d4eafd567dbf777757d3c6ad"</span>;
<span class="hljs-keyword">var</span> s = document.getElementsByTagName(<span class="hljs-string">"script"</span>)[<span class="hljs-number">0</span>];
s.parentNode.insertBefore(hm, s);
})();
(<span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span>{</span>
<span class="hljs-keyword">var</span> bp = document.createElement(<span class="hljs-string">'script'</span>);
<span class="hljs-keyword">var</span> curProtocol = window.location.protocol.split(<span class="hljs-string">':'</span>)[<span class="hljs-number">0</span>];
<span class="hljs-keyword">if</span> (curProtocol === <span class="hljs-string">'https'</span>) {
bp.src = <span class="hljs-string">'https://zz.bdstatic.com/linksubmit/push.js'</span>;
}
<span class="hljs-keyword">else</span> {
bp.src = <span class="hljs-string">'http://push.zhanzhang.baidu.com/push.js'</span>;
}
<span class="hljs-keyword">var</span> s = document.getElementsByTagName(<span class="hljs-string">"script"</span>)[<span class="hljs-number">0</span>];
s.parentNode.insertBefore(bp, s);
})();
</span><span class="hljs-tag"></<span class="hljs-title">script</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer foot-link"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"nofollow"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/truste.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"TRUSTe Privacy Certification"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"nofollow"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/icon3.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"可信网站"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"nofollow"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/f1ee261b96ae71e845efba398efeca02.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"网站安全"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"nofollow"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/a6ef792fec0a3f4f370cb8d8c6d11134.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"服务时间"</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service rollbar"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service rollbar-item tap-weixin"</span> <span class="hljs-attribute">etap</span>=<span class="hljs-value">"tap-weixin"</span> <span class="hljs-attribute">data-id</span>=<span class="hljs-value">"0"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"关注微信"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-weixin"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span><span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/skin/mimiwuqi/images/weixin.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"微信联系"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service rollbar-item"</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"nofollow"</span> <span class="hljs-attribute">target</span>=<span class="hljs-value">"_blank"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"提交建站需求"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"https://www.mimiwuqi.com/e/tool/gbook/?bid=2"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-gerenfankui"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span>需求<span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service rollbar-item to_full"</span> <span class="hljs-attribute">etap</span>=<span class="hljs-value">"to_full"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"全屏页面"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-quanping1"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service rollbar-item to_top"</span> <span class="hljs-attribute">etap</span>=<span class="hljs-value">"to_top"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"返回顶部"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-dingbu"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service kf_bottom"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"bottom"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">ul</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service f1"</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"/"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-home-fill"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span>网站首页<span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service f2"</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"tel:15678613334"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-phone-fill"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span>电话<span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service f3"</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">onclick</span>=<span class="hljs-value">"dkcf()"</span>></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-weixin1"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span>微信咨询<span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"><<span class="hljs-title">li</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service f4"</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"/e/tool/gbook/?bid=2"</span> ></span><span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service iconfont icon-gerenfankui"</span>></span><span class="hljs-tag"></<span class="hljs-title">i</span>></span>在线留言<span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">li</span>></span>
<span class="hljs-tag"></<span class="hljs-title">ul</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"wxnr"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">"display: none;"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service nrdf"</span>></span> <span class="hljs-tag"><<span class="hljs-title">i</span> <span class="hljs-attribute">onclick</span>=<span class="hljs-value">"gbcf()"</span>></span>X<span class="hljs-tag"></<span class="hljs-title">i</span>></span><span class="hljs-tag"><<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/skin/mimiwuqi/images/weixin.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"网站定制微信"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span>截屏,微信识别二维码<span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span>微信号:<span class="hljs-tag"><<span class="hljs-title">span</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"btn"</span> <span class="hljs-attribute">data-clipboard-text</span>=<span class="hljs-value">"csscode"</span>></span>Csscode<span class="hljs-tag"></<span class="hljs-title">span</span>></span><span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span>(点击微信号复制,添加好友)<span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"><<span class="hljs-title">p</span>></span><span class="hljs-tag"><<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"weixin://"</span>></span><span class="hljs-tag"><<span class="hljs-title">span</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-customer-service wx"</span>></span> 打开微信<span class="hljs-tag"></<span class="hljs-title">span</span>></span><span class="hljs-tag"></<span class="hljs-title">a</span>></span><span class="hljs-tag"></<span class="hljs-title">p</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"weixin"</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">"display: none;"</span>></span>微信号已复制,请打开微信添加咨询详情!<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"loginbox"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/images/login.js"</span>></span><span class="javascript"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>
<span class="hljs-tag"></<span class="hljs-title">footer</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer waveHorizontals mobile-hide"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"waveHorizontal1"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer waveHorizontal"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"waveHorizontal2"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer waveHorizontal"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"waveHorizontal3"</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-footer waveHorizontal"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"mimiwuqi-article m-mask"</span>></span><span class="hljs-tag"></<span class="hljs-title">div</span>></span>
<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/mimiwuqi/js/jquery.fancybox.min.js"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span>></span><span class="javascript"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>
<span class="hljs-tag"><<span class="hljs-title">link</span> <span class="hljs-attribute">rel</span>=<span class="hljs-value">"stylesheet"</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"/assets/mimiwuqi/css/jquery.fancybox.min.css"</span>></span>
<span class="hljs-tag"><<span class="hljs-title">script</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/mimiwuqi/js/style.js"</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text/javascript"</span>></span><span class="javascript"></span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>
<span class="hljs-tag"><<span class="hljs-title">script</span>></span><span class="javascript">
$(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> imgCounter = <span class="hljs-number">1</span>;
$(<span class="hljs-string">'.content'</span>).find(<span class="hljs-string">'img'</span>).each(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">()</span> {</span>
<span class="hljs-keyword">var</span> _this = $(<span class="hljs-keyword">this</span>);
<span class="hljs-keyword">var</span> _src = _this.attr(<span class="hljs-string">"src"</span>);
<span class="hljs-keyword">var</span> _alt = <span class="hljs-string">'React 19 终于来了!全新特性与改进,开发者必备升级指南 '</span> + imgCounter;
_this.wrap(<span class="hljs-string">'<a data-fancybox="images" href="'</span> + _src + <span class="hljs-string">'" data-caption="'</span> + _alt + <span class="hljs-string">'"></a>'</span>);
_this.attr(<span class="hljs-string">'title'</span>, _alt);
imgCounter++;
});
});
$(document).ready(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">()</span> {</span>
$(<span class="hljs-string">'.col-right'</span>).theiaStickySidebar({
additionalMarginTop: <span class="hljs-number">50</span>,
additionalMarginBottom: <span class="hljs-number">20</span>,
});
$(<span class="hljs-string">'body'</span>).css(<span class="hljs-string">'transform'</span>, <span class="hljs-string">''</span>);
});
</span><span class="hljs-tag"></<span class="hljs-title">script</span>></span>
<span class="hljs-tag"></<span class="hljs-title">body</span>></span>
<span class="hljs-tag"></<span class="hljs-title">html</span>></span>