<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>组件化 on Roam Tech-verse | Roamverse Technical Blog</title>
    <link>/notes/vue/components/</link>
    <description>Recent content in 组件化 on Roam Tech-verse | Roamverse Technical Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Copyright © 2020-2026 Razon Yang. All Rights Reserved.
</copyright><atom:link href="/notes/vue/components/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Vue 插槽 Slots</title>
      <link>/notes/vue/components/slots/</link>
      <pubDate>Fri, 22 Sep 2023 04:25:29 +0000</pubDate>
      <guid>/notes/vue/components/slots/</guid>
      <description><![CDATA[<p>Vue插槽（Slots）用于向组件传递一些模板片段，让子组件在它们的组件中渲染这些片段。插槽也是属于一种父组件到子组件的组件间通行的方式。</p>
<p>Vue插槽有以下3种类型：</p>]]></description>
    </item>
    
    <item>
      <title>Vue CLI 服务代理</title>
      <link>/notes/vue/components/dev-server-poxy/</link>
      <pubDate>Thu, 21 Sep 2023 04:59:57 +0000</pubDate>
      <guid>/notes/vue/components/dev-server-poxy/</guid>
      <description><![CDATA[<p>通常情况下，跨域问题是由服务端依靠CORS或JSONP等方法解决。为了在开发过程中不依靠后端解决跨域问题，可以使用一台与前端页面服务的Host相同的代理服务器，将请求发送给这台代理服务器，然后再由代理服务器将请求转发给真实的服务器。</p>]]></description>
    </item>
    
    <item>
      <title>Vue 组件生命周期</title>
      <link>/notes/vue/components/life-cycle/</link>
      <pubDate>Wed, 20 Sep 2023 00:12:12 +0000</pubDate>
      <guid>/notes/vue/components/life-cycle/</guid>
      <description><![CDATA[<p>在Vue中，每个组件都有其对应的生命周期，这个过程与<a href="../../life-cycle">Vue 生命周期</a>中描述的过程一致。</p>
<p>Vue组件的生命周期图示如下：</p>
<p><picture><img class="img-fluid " alt="Vue.js 生命周期" src="/notes/vue/components/life-cycle/1694591410572.png" loading="lazy" width="1266" height="2002" />
</picture>

</p>
<p>下图是尚硅谷天禹所给的有关Vue生命周期的解释：</p>]]></description>
    </item>
    
    <item>
      <title>Vue 消息订阅与发布（pubsub-js）</title>
      <link>/notes/vue/components/pubsub-js/</link>
      <pubDate>Tue, 19 Sep 2023 10:59:34 +0000</pubDate>
      <guid>/notes/vue/components/pubsub-js/</guid>
      <description><![CDATA[<p>Vue组件间的通信还可借助第三方库来实现。而<code>pubsub-js</code>就是一种实现了消息的订阅与发布的库。使用<code>pubsub-js</code>可以实现任意组件间的通信。</p>]]></description>
    </item>
    
    <item>
      <title>Vue 组件自定义事件</title>
      <link>/notes/vue/components/custom-events/</link>
      <pubDate>Tue, 19 Sep 2023 03:10:26 +0000</pubDate>
      <guid>/notes/vue/components/custom-events/</guid>
      <description><![CDATA[<p>给一个子组件定义自定义事件的步骤大致如下：</p>
<ul>
<li>
<p>在父组件中使用<code>v-on</code>绑定自定义事件，并定义回调。</p>
<p>例如给一个<code>user-info</code>绑定自定义事件：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c">&lt;!-- 
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c">  App.vue
</span></span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c"> --&gt;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="p">&lt;</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="p">&lt;</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="c">&lt;!-- 
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c">      通过父组件给子组件绑定一个自定义事件
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c">      实现子组件给父组件传递数据
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="c">      使用 .once 修饰符，让事件只在第1次被触发时执行回调
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c">     --&gt;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="p">&lt;</span><span class="nt">user-info</span> <span class="err">@</span><span class="na">get-name</span><span class="err">.</span><span class="na">once</span><span class="o">=</span><span class="s">&#34;getUserName&#34;</span><span class="p">/&gt;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">&lt;/</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="p">&lt;</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="kr">import</span> <span class="nx">UserInfo</span> <span class="nx">from</span> <span class="s1">&#39;./components/user-info.vue&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl">  <span class="kr">export</span> <span class="k">default</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;app&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="nx">components</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">      <span class="nx">UserInfo</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="nx">methods</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">      <span class="nx">getUserName</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">          <span class="s1">&#39;The event get-name has be trigged.&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">      <span class="p">},</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span></code></pre></div></li>
<li>
<p>然后在子组件中，触发该自定义事件。</p>]]></description>
    </item>
    
    <item>
      <title>Vue 组件样式作用域</title>
      <link>/notes/vue/components/scoped/</link>
      <pubDate>Mon, 18 Sep 2023 02:18:25 +0000</pubDate>
      <guid>/notes/vue/components/scoped/</guid>
      <description><![CDATA[<h1 id="样式冲突" data-numberify>样式冲突<a class="anchor ms-1" href="#样式冲突"></a></h1>
<p>Vue多组件开发时，组件中的CSS样式默认是全局使用的。例如在<code>A.vue</code>这个组件中定义的样式，也会在<code>B.vue</code>这个组件中生效。</p>]]></description>
    </item>
    
    <item>
      <title>Vue 混入配置对象</title>
      <link>/notes/vue/components/mixins/</link>
      <pubDate>Mon, 18 Sep 2023 01:22:04 +0000</pubDate>
      <guid>/notes/vue/components/mixins/</guid>
      <description><![CDATA[<p>混入（<code>mixin</code>）是指将多个组件重复的、可共用的配置选项提取成一个混入对象，然后在这些组件中对这些配置选项进行重用。</p>
<hr>

<h1 id="局部混入" data-numberify>局部混入<a class="anchor ms-1" href="#局部混入"></a></h1>
<p>局部混入是指在组件或特定的Vue实例中引入通用的配置对象。</p>]]></description>
    </item>
    
    <item>
      <title>Vue Props 属性</title>
      <link>/notes/vue/components/props/</link>
      <pubDate>Mon, 18 Sep 2023 01:19:24 +0000</pubDate>
      <guid>/notes/vue/components/props/</guid>
      <description><![CDATA[<p>在Vue中，父组件可以往子组件中传递一些属性值。而子组件需要使用<code>props</code>配置项定义这些要从父组件中获取的数据。</p>
<p>使用<code>props</code>配置项，可以让该组件的标签在被使用时，通过组件标签属性将值传入组件中。</p>]]></description>
    </item>
    
    <item>
      <title>Vue 获取页面元素及延迟执行</title>
      <link>/notes/vue/components/ref-and-nexttick/</link>
      <pubDate>Mon, 18 Sep 2023 01:16:55 +0000</pubDate>
      <guid>/notes/vue/components/ref-and-nexttick/</guid>
      <description><![CDATA[<h1 id="ref-属性" data-numberify>ref 属性<a class="anchor ms-1" href="#ref-属性"></a></h1>
<p>在Vue的模板中可以通过为元素或子组件添加<code>ref</code>属性（如<code>ref=&quot;elementRefValue&quot;</code>）来告诉Vue实例（或组件实例）要获取该元素。例如：</p>]]></description>
    </item>
    
    <item>
      <title>Vue 项目开发</title>
      <link>/notes/vue/components/projects/</link>
      <pubDate>Sat, 16 Sep 2023 07:47:27 +0000</pubDate>
      <guid>/notes/vue/components/projects/</guid>
      <description><![CDATA[<h1 id="单文件组件" data-numberify>单文件组件<a class="anchor ms-1" href="#单文件组件"></a></h1>
<p>Vue单文件组件是指使用由Vue定义的<code>.vue</code>格式的文件。<code>.vue</code>文件模板如下：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c">&lt;!-- Vue 只能包含以下三种标签 --&gt;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c">&lt;!-- 组件的结构 --&gt;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="p">&lt;</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="c">&lt;!-- ... --&gt;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="p">&lt;/</span><span class="nt">template</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c">&lt;!-- 组件交互相关的代码（数据、方法等等） --&gt;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="p">&lt;</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="kr">export</span> <span class="k">default</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="c1">// ...
</span></span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="p">};</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c">&lt;!-- 组件的样式 --&gt;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="p">&lt;</span><span class="nt">style</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="c">/* ... */</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="p">&lt;/</span><span class="nt">style</span><span class="p">&gt;</span>
</span></span></code></pre></div><p>其中：</p>]]></description>
    </item>
    
    <item>
      <title>Vue 组件</title>
      <link>/notes/vue/components/introduction/</link>
      <pubDate>Thu, 14 Sep 2023 06:33:39 +0000</pubDate>
      <guid>/notes/vue/components/introduction/</guid>
      <description><![CDATA[<p>组件是指实现应用中<u>局部功能代码</u>（<code>html</code>、<code>css</code>、<code>js</code>等）和<u>资源</u>（图片、音频、视频等）的<u>集合</u>。</p>
<p>传统的Web应用存在以下缺点：</p>
<ul>
<li>依赖关系混乱，不易于维护。</li>
<li>代码复用率不高。</li>
</ul>
<p>CSS文件可以通过外部引入，不存在复用率不高的问题。JS的模块化解决了JS代码复用率不高的问题。而Html想要复用却不是那么容易。</p>]]></description>
    </item>
    
  </channel>
</rss>

