<?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/%E8%AF%AD%E6%B3%95%E7%B3%96/</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/%E8%AF%AD%E6%B3%95%E7%B3%96/index.xml" rel="self" type="application/rss+xml"/><item><title>script setup语法糖的优势</title><link>https://fe-interview.pangcy.cn/docs/framework/vue3/vue3-08/</link><pubDate>Tue, 04 Mar 2025 07:00:31 +0000</pubDate><guid>https://fe-interview.pangcy.cn/docs/framework/vue3/vue3-08/</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>Vue编译原理理解&lt;/strong>：能否解释&lt;code>&amp;lt;script setup&amp;gt;&lt;/code>如何通过编译器转换生成标准组件代码&lt;/li>
&lt;li>&lt;strong>Composition API运用能力&lt;/strong>：评估对新型组件编写模式的理解深度&lt;/li>
&lt;li>&lt;strong>工程化效率认知&lt;/strong>：分析语法糖特性对开发体验的改善作用&lt;/li>
&lt;/ol>
&lt;p>具体技术评估点：&lt;/p>
&lt;ul>
&lt;li>编译器对顶层绑定的自动暴露机制&lt;/li>
&lt;li>编译器宏（如defineProps）的工作原理&lt;/li>
&lt;li>相比传统Options API的代码精简效果&lt;/li>
&lt;li>类型推导与TS支持的实现方式&lt;/li>
&lt;li>运行时性能与编译器优化的关系&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" class="anchor" aria-hidden="true">&lt;i class="material-icons align-middle">link&lt;/i>&lt;/a>&lt;/h3>&lt;p>编译器转换 &amp;gt; 自动暴露机制 &amp;gt; 编译器宏支持 &amp;gt; 类型推导优化&lt;/p>
&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;ol>
&lt;li>
&lt;p>&lt;strong>编译时转换&lt;/strong>：&lt;code>&amp;lt;script setup&amp;gt;&lt;/code>在编译阶段会被转换为标准&lt;code>&amp;lt;script&amp;gt;&lt;/code>组件格式。例如：&lt;/p>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="7b9a767" class="language-javascript ">
 &lt;code>// 源码
&amp;lt;script setup&amp;gt;
const count = ref(0)
&amp;lt;/script&amp;gt;

// 编译后
export default {
 setup() {
 const count = ref(0)
 return { count } // 自动收集顶层变量
 }
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;p>编译器通过AST分析识别顶层变量，自动生成return语句暴露变量。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>自动暴露机制&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>仅暴露&lt;strong>顶层声明&lt;/strong>的变量/函数&lt;/li>
&lt;li>非顶层变量（如setup函数内部声明的变量）不会被暴露&lt;/li>
&lt;li>通过&lt;code>expose&lt;/code>编译器选项可精确控制暴露内容&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>编译器宏&lt;/strong>：&lt;/p>



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock ">
 &lt;pre id="d4c1722" class="language-javascript ">
 &lt;code>// 源码
defineProps({ msg: String }) 

// 编译后
export default {
 props: { msg: String },
 // 自动注入setup函数
}&lt;/code>
 &lt;/pre>
 &lt;/div>
&lt;p>宏在编译阶段被解析为组件选项，实现类型安全的props/emits声明。&lt;/p></description></item></channel></rss>