<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>quivo, Author at Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/author/quivo/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/author/quivo/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Fri, 01 Dec 2023 02:35:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>quivo, Author at Tomoshare</title>
	<link>https://blog.tomosia.com.vn/author/quivo/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Alpine.js là gì ?  Hãy Cùng tìm hiểu về cách sử dụng nào</title>
		<link>https://blog.tomosia.com.vn/alpine-js-la-gi-hay-cung-tim-hieu-ve-cach-su-dung-nao/</link>
					<comments>https://blog.tomosia.com.vn/alpine-js-la-gi-hay-cung-tim-hieu-ve-cach-su-dung-nao/#comments</comments>
		
		<dc:creator><![CDATA[quivo]]></dc:creator>
		<pubDate>Fri, 01 Dec 2023 02:35:52 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Alpine]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=1701</guid>

					<description><![CDATA[<p>Alpine.js là gì ? Alpine.js là một JavaScript framework nhẹ và dễ sử dụng, giúp bạn tạo ra&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/alpine-js-la-gi-hay-cung-tim-hieu-ve-cach-su-dung-nao/">Alpine.js là gì ?  Hãy Cùng tìm hiểu về cách sử dụng nào</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 id="alpine-js-la-gi" class="wp-block-heading">Alpine.js là gì ?</h3>



<p>Alpine.js là một JavaScript framework nhẹ và dễ sử dụng, giúp bạn tạo ra các tương tác trực tiếp trên giao diện người dùng (UI) một cách dễ dàng và nhanh chóng mà không cần phải chạy npm, biên dịch tập lệnh, định cấu hình webpack. Nó là một giải pháp thay thế đơn giản và hiệu quả cho các frontend framework khác như Vue, React &amp; Angular. Hãy nghĩ về nó giống như&nbsp;<a href="https://tailwindcss.com/?ref=blog.tomosia.com.vn" target="_blank" rel="noreferrer noopener"><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color">Tailwind</mark></a>&nbsp;dành cho JavaScript.</p>



<p></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="563" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-1024x563.jpeg" alt="" class="wp-image-1704" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-1024x563.jpeg 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-300x165.jpeg 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-768x422.jpeg 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-380x209.jpeg 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-800x440.jpeg 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social-1160x638.jpeg 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/11/social.jpeg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 id="cach-su-dung" class="wp-block-heading">Cách sử dụng</h3>



<p>Theo&nbsp;&nbsp;<a rel="noreferrer noopener" href="https://github.com/alpinejs/alpine?ref=blog.tomosia.com.vn" target="_blank">tài liệu của Alpine.js</a>&nbsp;, cú pháp của nó gần như được mượn hoàn toàn từ&nbsp;&nbsp;<a rel="noreferrer noopener" href="https://vuejs.org/?ref=blog.tomosia.com.vn" target="_blank">Vue.js</a>&nbsp;&nbsp;(và phần mở rộng&nbsp;&nbsp;<a rel="noreferrer noopener" href="https://angularjs.org/?ref=blog.tomosia.com.vn" target="_blank">Angular.js</a>&nbsp;), vì vậy nếu bạn đã biết một trong hai framework này thì bạn sẽ không phải mất nhiều thời gian để bắt đầu.</p>



<p>Trong blog này, Chúng ta sẽ tìm hiểu cách sử dụng Alpine.js trong Laravel với hai ví dụ.</p>



<ol class="wp-block-list">
<li>Alpine.js CDN</li>



<li>Laravel Mix</li>
</ol>



<h4 id="su-dung-qua-cdn" class="wp-block-heading">Sử dụng qua CDN</h4>



<p>Bạn chỉ cần thêm một thẻ script liên kết thư viện (xem ví dụ bên dưới). Rất đơn giản phải không nào! Bạn không cần phải biên dịch javascript hoặc cấu trúc dự án của mình theo bất kỳ cách cụ thể nào.</p>



<div class="wp-block-kevinbatdorf-code-block-pro alignfull cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:8.4296875px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">JavaScript</span><span role="button" tabindex="0" data-code="&lt;html&gt;
&lt;head&gt;
    &lt;script defer src=&quot;https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1 x-data=&quot;{ message: 'I ❤️ Alpine' }&quot; x-text=&quot;message&quot;&gt;&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">html</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">head</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">    &lt;</span><span style="color: #F286C4">script</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">defer</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">src</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;&lt;/</span><span style="color: #F286C4">script</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">&lt;/</span><span style="color: #F286C4">head</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">body</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">    &lt;</span><span style="color: #F286C4">h1</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">x-data</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">{ message: &#39;I ❤️ Alpine&#39; }</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">x-text</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">message</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;&lt;/</span><span style="color: #F286C4">h1</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">&lt;/</span><span style="color: #F286C4">body</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">&lt;/</span><span style="color: #F286C4">html</span><span style="color: #F6F6F4">&gt;</span></span></code></pre></div>



<h4 id="su-dung-qua-laravel-mix" class="wp-block-heading">Sử dụng qua Laravel mix</h4>



<p>Trước tiên, bạn cần cài đặt Alpine js bằng lệnh npm bên dưới:</p>



<pre class="wp-block-code"><code>npm install alpinejs</code></pre>



<p>Tiếp đó, bạn cần import vào <code><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-black-color"><strong>resources/js/app.js</strong></mark></code> file</p>



<pre class="wp-block-code"><code>import 'alpinejs';</code></pre>



<p>Cuối cùng chỉ cần chạy lệnh</p>



<pre class="wp-block-code"><code>npm run dev</code></pre>



<p>Bây giờ, bạn có thể sử dụng được alpine (nhớ thêm <strong>app.js</strong> vào blade view nhé)</p>



<pre class="wp-block-code"><code>&lt;script src="{{ mix('js/app.js') }}"&gt;&lt;/script&gt;</code></pre>



<p>Cùng xem 1 ví dụ đơn giản nhé:</p>



<div class="wp-block-kevinbatdorf-code-block-pro alignfull cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#f6f6f4;--cbp-line-number-width:16.859375px;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#333545;color:#ebebe6">JavaScript</span><span role="button" tabindex="0" data-code="&lt;div 
    x-data=&quot;{ show: false }&quot; 
    x-show=&quot;show&quot; 
    x-on:notify.window=&quot;() =&gt; { show = true; setTimeout(() =&gt; { show = false; }, 5000 ) }&quot;
    style=&quot;display:none;&quot;
    class=&quot;toast active&quot;
&gt;
    &lt;div class=&quot;toast-content&quot;&gt;
        &lt;i class=&quot;ti ti-check toast-icon&quot; x-on:click=&quot;show = false&quot;&gt;&lt;/i&gt;
        &lt;div class=&quot;message&quot;&gt;
            &lt;span class=&quot;message-title&quot;&gt;Ví dụ&lt;/span&gt;
            &lt;span class=&quot;message-content&quot;&gt;Ví dụ về alpine js&lt;/span&gt;
            &lt;span x-on:click=&quot;show = false&quot; class=&quot;close&quot;&gt;
                &lt;i class=&quot;ti ti-x&quot;&gt;&lt;/i&gt;
            &lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;progress active&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;" style="color:#f6f6f4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dracula-soft" style="background-color: #282A36" tabindex="0"><code><span class="line"><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #62E884; font-style: italic">x-data</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">{ show: false }</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #62E884; font-style: italic">x-show</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">show</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #EE6666; font-style: italic; text-decoration: underline">x-on:notify.window=&quot;()</span><span style="color: #F6F6F4"> </span><span style="color: #EE6666; font-style: italic; text-decoration: underline">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">{</span><span style="color: #F6F6F4"> show </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">true</span><span style="color: #F6F6F4">; </span><span style="color: #62E884">setTimeout</span><span style="color: #F6F6F4">(() </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> { show </span><span style="color: #F286C4">=</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">false</span><span style="color: #F6F6F4">; }, </span><span style="color: #BF9EEE">5000</span><span style="color: #F6F6F4"> ) </span><span style="color: #F286C4">}</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #E7EE98">    style=</span><span style="color: #DEE492">&quot;</span><span style="color: #EE6666; font-style: italic; text-decoration: underline">display:none;&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">toast active</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">    &lt;</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">toast-content</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">        &lt;</span><span style="color: #F286C4">i</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ti ti-check toast-icon</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">x-on</span><span style="color: #F286C4">:</span><span style="color: #62E884; font-style: italic">click</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">show = false</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;&lt;/</span><span style="color: #F286C4">i</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">        &lt;</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">message</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">            &lt;</span><span style="color: #F286C4">span</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">message-title</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;Ví dụ&lt;/</span><span style="color: #F286C4">span</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">            &lt;</span><span style="color: #F286C4">span</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">message-content</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;Ví dụ về alpine js&lt;/</span><span style="color: #F286C4">span</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">            &lt;</span><span style="color: #F286C4">span</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">x-on</span><span style="color: #F286C4">:</span><span style="color: #62E884; font-style: italic">click</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">show = false</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">close</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">                &lt;</span><span style="color: #F286C4">i</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">ti ti-x</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;&lt;/</span><span style="color: #F286C4">i</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">            &lt;/</span><span style="color: #F286C4">span</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">        &lt;/</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">        &lt;</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">class</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">progress active</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;&lt;/</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">    &lt;/</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">&lt;/</span><span style="color: #F286C4">div</span><span style="color: #F6F6F4">&gt;</span></span></code></pre></div>



<p>Ở ví dụ trên, tôi có một component alert được phản ứng khi sự kiện <strong>notify</strong> được thực hiện thì sẽ hiển thị thông báo.</p>



<h3 id="ket-luan" class="wp-block-heading">Kết luận</h3>



<p>Với sự đơn giản và gọn nhẹ của Alpine, tôi tin rằng đây sẽ là 1 trong số các giải pháp tốt nhất cho bạn trong một số trường hợp thay vì sử dụng các Js framework khác  như Vue hay React để rồi nhận thêm sự cồng kềnh, phức tạp mà chúng mang lại.</p>



<p>Hiện tại, cùng với sự kết hợp với Tailwind, Livewire và Laravel, bộ tứ này đã và đang hình thành nên 1 ngăn xếp công nghệ mới được gọi là ngăn xếp TALL. Nếu tò mò bạn có thể xem tại <a rel="noreferrer noopener" href="https://blog.laravelvietnam.org/tall-stack/" data-type="link" data-id="https://blog.laravelvietnam.org/tall-stack/" target="_blank">blog.laravelvietnam</a>.</p>
<p>The post <a href="https://blog.tomosia.com.vn/alpine-js-la-gi-hay-cung-tim-hieu-ve-cach-su-dung-nao/">Alpine.js là gì ?  Hãy Cùng tìm hiểu về cách sử dụng nào</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/alpine-js-la-gi-hay-cung-tim-hieu-ve-cach-su-dung-nao/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
	</channel>
</rss>
