<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>导航方式 on ZiYang FrontEnd Interview</title><link>https://fe-interview.pangcy.cn/tags/%E5%AF%BC%E8%88%AA%E6%96%B9%E5%BC%8F/</link><description>Recent content in 导航方式 on ZiYang FrontEnd Interview</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 06 Mar 2025 13:07:39 +0800</lastBuildDate><atom:link href="https://fe-interview.pangcy.cn/tags/%E5%AF%BC%E8%88%AA%E6%96%B9%E5%BC%8F/index.xml" rel="self" type="application/rss+xml"/><item><title>编程式导航与声明式导航区别</title><link>https://fe-interview.pangcy.cn/docs/framework/vue2/vue2-32/</link><pubDate>Tue, 04 Mar 2025 07:00:27 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/framework/vue2/vue2-32/</guid><description>&lt;h2 id="考察点分析">考察点分析 &lt;a href="#%e8%80%83%e5%af%9f%e7%82%b9%e5%88%86%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;p>本题主要考查以下三个核心维度：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>框架机制理解&lt;/strong>：区分组件封装与API调用的底层差异，考察对Vue Router源码级实现的理解&lt;/li>
&lt;li>&lt;strong>交互场景判断&lt;/strong>：识别编程式导航不可替代的使用场景，考察实际开发经验&lt;/li>
&lt;li>&lt;strong>路由控制能力&lt;/strong>：导航守卫对不同导航方式的影响，考察完整路由生命周期的掌握&lt;/li>
&lt;/ol>
&lt;p>具体技术评估点：&lt;/p>
&lt;ul>
&lt;li>组件事件绑定与API直接调用的实现差异&lt;/li>
&lt;li>异步操作场景下的导航决策流程&lt;/li>
&lt;li>导航守卫对路由跳转的拦截作用一致性&lt;/li>
&lt;li>Promise在导航流程中的处理机制&lt;/li>
&lt;li>内存管理角度下的组件销毁与API调用关系&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="技术解析">技术解析 &lt;a href="#%e6%8a%80%e6%9c%af%e8%a7%a3%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h2>&lt;h3 id="关键知识点优先级">关键知识点优先级 &lt;a href="#%e5%85%b3%e9%94%ae%e7%9f%a5%e8%af%86%e7%82%b9%e4%bc%98%e5%85%88%e7%ba%a7" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;ol>
&lt;li>组件化封装 VS 命令式API&lt;/li>
&lt;li>事件传播机制与默认行为&lt;/li>
&lt;li>导航守卫触发一致性&lt;/li>
&lt;li>Promise链式处理&lt;/li>
&lt;/ol>
&lt;h3 id="原理剖析">原理剖析 &lt;a href="#%e5%8e%9f%e7%90%86%e5%89%96%e6%9e%90" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>&lt;strong>声明式导航&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;code>&amp;lt;router-link&amp;gt;&lt;/code>本质是渲染为&lt;code>&amp;lt;a&amp;gt;&lt;/code>标签的Vue组件&lt;/p>
&lt;/li>
&lt;li>
&lt;p>通过&lt;code>v-on:click&lt;/code>绑定内部处理函数，调用&lt;code>router.push()&lt;/code>时自动阻止默认跳转&lt;/p>
&lt;/li>
&lt;li>
&lt;p>示例伪代码：&lt;/p>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="c1e00dd" class="language-javascript ">
 &lt;code>const RouterLink = {
 props: [&amp;#39;to&amp;#39;],
 render(h) {
 return h(&amp;#39;a&amp;#39;, {
 attrs: { href: this.to },
 on: {
 click: e =&amp;gt; {
 e.preventDefault()
 this.$router.push(this.to)
 }
 }
 }, this.$slots.default)
 }
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>编程式导航&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>直接调用&lt;code>router.push()&lt;/code>方法进入导航流程&lt;/p>
&lt;/li>
&lt;li>
&lt;p>通过返回Promise支持异步处理：&lt;/p>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="602ba04" class="language-javascript ">
 &lt;code>router.push(&amp;#39;/target&amp;#39;).catch(err =&amp;gt; {
 if (err.name !== &amp;#39;NavigationDuplicated&amp;#39;) {
 handleError(err)
 }
})&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>导航守卫影响&lt;/strong>：&lt;/p></description></item></channel></rss>