<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Babel Plugin JSX for Vue——模具行业从业者必备知识手册]]></title><description><![CDATA[<p dir="auto">&lt;h2&gt;Babel Plugin JSX for Vue 3&lt;/h2&gt;</p>
<p dir="auto">&lt;p&gt;&lt;a href="upload://7HmiCTQxfywL7x6pbT8XcgAF33G.svg"&gt;&lt;img src="<a href="https://www.npmjs.com/package/@vue/babel-plugin-jsx" rel="nofollow ugc">https://www.npmjs.com/package/@vue/babel-plugin-jsx</a>" alt="npm package&lt;/a&gt;"&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;a href="upload://eK0sHoCe7JRbEIqWrYtIN1f7JaM.svg"&gt;&lt;img src="<a href="https://github.com/actions-cool/issues-helper" rel="nofollow ugc">https://github.com/actions-cool/issues-helper</a>" alt="issues-helper&lt;/a&gt;"&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;To add Vue JSX support.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;English | &lt;a href="/packages/babel-plugin-jsx/README-zh_CN.md"&gt;简体中文&lt;/a&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;h3&gt;Installation&lt;/h3&gt;</p>
<p dir="auto">&lt;p&gt;Install the plugin with:&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
npm install @vue/babel-plugin-jsx -D<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;Then add the plugin to your babel config:&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
{<br />
"plugins": ["@vue/babel-plugin-jsx"]<br />
}<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h3&gt;Usage&lt;/h3&gt;</p>
<p dir="auto">&lt;h4&gt;options&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;#### transformOn&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;boolean&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;false&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;transform &lt;code&gt;on: { click: xx }&lt;/code&gt; to &lt;code&gt;onClick: xxx&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;#### optimize&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;boolean&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;false&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;When enabled, this plugin generates optimized runtime code using &lt;a href="<a href="https://vuejs.org/guide/extras/rendering-mechanism#patch-flags" rel="nofollow ugc">https://vuejs.org/guide/extras/rendering-mechanism#patch-flags</a>"&gt;&lt;code&gt;PatchFlags&lt;/code&gt;&lt;/a&gt; and &lt;a href="<a href="https://github.com/vuejs/core/blob/v3.5.13/packages/runtime-core/src/componentSlots.ts#L69-L77" rel="nofollow ugc">https://github.com/vuejs/core/blob/v3.5.13/packages/runtime-core/src/componentSlots.ts#L69-L77</a>"&gt;&lt;code&gt;SlotFlags&lt;/code&gt;&lt;/a&gt; to improve rendering performance. However, due to JSX's dynamic nature, the optimizations are not as comprehensive as those in Vue's official template compiler.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Since the optimized code may skip certain re-renders to improve performance, we strongly recommend thorough testing of your application after enabling this option to ensure everything works as expected.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;#### isCustomElement&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;(tag: string) =&gt; boolean&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;undefined&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;configuring custom elements&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;#### mergeProps&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;boolean&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;true&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;merge static and dynamic class / style attributes / onXXX handlers&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;#### enableObjectSlots&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;boolean&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;true&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Whether to enable &lt;code&gt;object slots&lt;/code&gt; (mentioned below the document) syntax". It might be useful in JSX, but it will add a lot of &lt;code&gt;_isSlot&lt;/code&gt; condition expressions which increase your bundle size. And &lt;code&gt;v-slots&lt;/code&gt; is still available even if &lt;code&gt;enableObjectSlots&lt;/code&gt; is turned off.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;#### pragma&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;string&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;createVNode&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Replace the function used when compiling JSX expressions.&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;#### resolveType&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Type: &lt;code&gt;boolean&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;Default: &lt;code&gt;false&lt;/code&gt;&lt;/p&gt;</p>
<p dir="auto">&lt;p&gt;(&lt;strong&gt;Experimental&lt;/strong&gt;) Infer component metadata from types (e.g. &lt;code&gt;props&lt;/code&gt;, &lt;code&gt;emits&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;). This is an experimental feature and may not work in all cases.&lt;/p&gt;</p>
<p dir="auto">&lt;h3&gt;Syntax&lt;/h3&gt;</p>
<p dir="auto">&lt;h4&gt;Content&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;functional component&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const App = () =&gt; &lt;div&gt;Vue 3.0&lt;/div&gt;;<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;with render&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const App = {<br />
render() {<br />
return &lt;div&gt;Vue 3.0&lt;/div&gt;;<br />
},<br />
};<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
import { withModifiers, defineComponent } from 'vue';</p>
<p dir="auto">const App = defineComponent({<br />
setup() {<br />
const count = ref(0);</p>
<pre><code>const inc = () =&gt; {
  count.value++;
};

return () =&gt; (
  &lt;div onClick={withModifiers(inc, ['self'])}&gt;{count.value}&lt;/div&gt;
);
</code></pre>
<p dir="auto">},<br />
});<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;Fragment&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const App = () =&gt; (<br />
&lt;&gt;<br />
&lt;span&gt;I'm&lt;/span&gt;<br />
&lt;span&gt;Fragment&lt;/span&gt;<br />
&lt;/&gt;<br />
);<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;Attributes / Props&lt;/h4&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const App = () =&gt; &lt;input type="email" /&gt;;<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;with a dynamic binding:&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const placeholderText = 'email';<br />
const App = () =&gt; &lt;input type="email" placeholder={placeholderText} /&gt;;<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;h4&gt;Directives&lt;/h4&gt;</p>
<p dir="auto">&lt;p&gt;#### v-show&lt;/p&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
const App = {<br />
data() {<br />
return { visible: true };<br />
},<br />
render() {<br />
return &lt;input v-show={this.visible} /&gt;;<br />
},<br />
};<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;p&gt;#### v-model&lt;/p&gt;</p>
<p dir="auto">&lt;blockquote&gt;<br />
&lt;p&gt;Note: You should pass the second param as string for using &lt;code&gt;arg&lt;/code&gt;.&lt;/p&gt;<br />
&lt;/blockquote&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
&lt;input v-model={val} /&gt;<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
&lt;input v-model:argument={val} /&gt;<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
&lt;input v-model={[val, ['modifier'&rsqb;&rsqb;} /&gt;<br />
// Or<br />
&lt;input v-model_modifier={val} /&gt;<br />
&lt;/code&gt;&lt;/pre&gt;</p>
<p dir="auto">&lt;pre&gt;&lt;code&gt;<br />
&lt;A v-model={[val, 'argument', ['modifier'&rsqb;&rsqb;} /&gt;<br />
// Or<br />
&lt;input v-model:ar</p>
<hr />
<p dir="auto">踩过坑的来评论区说说。<br />
&lt;/code&gt;&lt;/pre&gt;</p>
]]></description><link>https://forum.mj7.cn/topic/7261/babel-plugin-jsx-for-vue-模具行业从业者必备知识手册</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 07:36:02 GMT</lastBuildDate><atom:link href="https://forum.mj7.cn/topic/7261.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Apr 2026 22:22:28 GMT</pubDate><ttl>60</ttl></channel></rss>