<?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>Duy Nguyễn Hoàng, Author at Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/author/duynguyenhoang/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/author/duynguyenhoang/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Wed, 13 Dec 2023 01:20:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>Duy Nguyễn Hoàng, Author at Tomoshare</title>
	<link>https://blog.tomosia.com.vn/author/duynguyenhoang/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Progressive Web Applications (PWAs) in Laravel Applications</title>
		<link>https://blog.tomosia.com.vn/progressive-web-applications-pwas-in-laravel-applications/</link>
					<comments>https://blog.tomosia.com.vn/progressive-web-applications-pwas-in-laravel-applications/#comments</comments>
		
		<dc:creator><![CDATA[Duy Nguyễn Hoàng]]></dc:creator>
		<pubDate>Wed, 13 Dec 2023 01:20:07 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=2550</guid>

					<description><![CDATA[<p>Giới thiệu về PWA Ứng dụng Progressive Web Apps (PWA) với Laravel kết hợp những lợi ích của&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/progressive-web-applications-pwas-in-laravel-applications/">Progressive Web Applications (PWAs) in Laravel Applications</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h4 class="wp-block-heading" id="4838"><span id="gioi-thieu-ve-pwa"><strong>Giới thiệu về PWA</strong></span></h4>



<p class="wp-block-paragraph" id="9c69">Ứng dụng Progressive Web Apps (PWA) với Laravel kết hợp những lợi ích của cả ứng dụng web và di động, mang đến trải nghiệm nhanh, khả năng hoạt động offline và cập nhật tự động cho người dùng. Những ứng dụng này cung cấp trải nghiệm giống như ứng dụng di động trực tiếp trong trình duyệt web, cho phép người dùng truy cập ứng dụng mượt mà mà không phụ thuộc vào điều kiện mạng hay thiết bị của họ. Với Progressive Web Apps, người dùng có thể trải nghiệm những lợi ích của một ứng dụng di động mà không cần phải tải về và cài đặt riêng biệt.</p>



<h4 class="wp-block-heading" id="f43a"><span id="nhung-loi-ich-cua-pwas">Những lợi ích của PWAs</span></h4>



<p class="wp-block-paragraph">Progressive Web Apps (PWAs) đại diện cho một kiểu mới của ứng dụng web kết hợp những tính năng tốt nhất của ứng dụng web truyền thống và ứng dụng di động native. Bằng cách tận dụng các công nghệ web hiện đại, PWAs mang lại trải nghiệm giống như ứng dụng. Một số ưu điểm chính của PWAs so với ứng dụng web thông thường bao gồm:</p>



<p class="wp-block-paragraph" id="2f69">1.&nbsp;<strong>Offline Access:</strong>&nbsp;PWAs có thể lưu trữ dữ liệu cục bộ, cho phép người dùng truy cập nội dung ứng dụng ngay cả khi họ không có kết nối internet. Tính năng này làm cho PWAs trở nên đáng tin cậy và thuận tiện hơn cho người dùng, vì họ không còn phải lo lắng về vấn đề kết nối.</p>



<p class="wp-block-paragraph" id="e9e7">2.&nbsp;<strong>Push Notifications:</strong>&nbsp;PWAs có thể gửi thông báo đến người dùng, giữ cho họ được thông tin và tương tác với ứng dụng. Tính năng này giúp tăng cường sự tương tác và giữ chân người dùng, vì họ có khả năng quay lại ứng dụng nếu họ nhận được thông báo đều đặn.</p>



<p class="wp-block-paragraph" id="c0c5">3.&nbsp;<strong>App-Like Interface:</strong>&nbsp;PWAs cung cấp giao diện người dùng giống như ứng dụng, nâng cao trải nghiệm tổng thể. Giao diện này trực quan và dễ sử dụng, khiến cho nó trở nên hấp dẫn hơn đối với người dùng quen thuộc với việc sử dụng ứng dụng di động native.</p>



<p class="wp-block-paragraph" id="577d">4.&nbsp;<strong>Fast Loading Times:</strong>&nbsp;PWAs được tối ưu hóa cho tốc độ, đảm bảo một trải nghiệm người dùng mượt mà. Tính năng này đặc biệt quan trọng trong thế giới kỹ thuật số ngày nay, nơi người dùng mong đợi ứng dụng tải nhanh và hiệu quả.</p>



<h4 id="trien-khai-pwa-trong-ung-dung-laravel" class="wp-block-heading"><strong>Triển khai PWA trong ứng dụng Laravel</strong></h4>



<p class="wp-block-paragraph"><br><br>1.  Cài đặt thư viện:<br><br>Mở file composer.json và thêm đoạn mã sau</p>



<div class="wp-block-kevinbatdorf-code-block-pro 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">JSON</span><span role="button" tabindex="0" data-code="&quot;require&quot;: {
    &quot;silviolleite/laravelpwa&quot;: &quot;~2.0.3&quot;,
}," 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: #DEE492">&quot;</span><span style="color: #E7EE98">require</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">: {</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #97E2F2">&quot;</span><span style="color: #97E1F1">silviolleite/laravelpwa</span><span style="color: #97E2F2">&quot;</span><span style="color: #F286C4">:</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">~2.0.3</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">},</span></span></code></pre></div>



<p class="wp-block-paragraph">Hoặc bạn có thể mở terminal của project lên chạy lệnh<br></p>



<div class="wp-block-kevinbatdorf-code-block-pro 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">PHP</span><span role="button" tabindex="0" data-code="composer require silviolleite/laravelpwa --prefer-dist
" 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: #BF9EEE">composer</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">require</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">silviolleite</span><span style="color: #F286C4">/</span><span style="color: #BF9EEE">laravelpwa</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">--</span><span style="color: #BF9EEE">prefer</span><span style="color: #F286C4">-</span><span style="color: #BF9EEE">dist</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">Để thêm file config thì sẽ chạy lệnh</p>



<div class="wp-block-kevinbatdorf-code-block-pro 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">PHP</span><span role="button" tabindex="0" data-code="$ php artisan vendor:publish --provider=&quot;LaravelPWA\Providers\LaravelPWAServiceProvider&quot;
" 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">$ </span><span style="color: #BF9EEE">php</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">artisan</span><span style="color: #F6F6F4"> </span><span style="color: #BF9EEE">vendor</span><span style="color: #F6F6F4">:</span><span style="color: #BF9EEE">publish</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">--</span><span style="color: #BF9EEE">provider</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">LaravelPWA\Providers\LaravelPWAServiceProvider</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">Một file <code>config/laravelpwa.php</code> sẽ được sinh ra, bạn có thể thay đổi thông tin tên ứng dụng, màu sắc, kích thược ở đây để phù hợp với ứng dụng của mình.<br></p>



<div class="wp-block-kevinbatdorf-code-block-pro 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">PHP</span><span role="button" tabindex="0" data-code="'manifest' =&gt; [
        'name' =&gt; env('APP_NAME', 'My PWA App'),
        'short_name' =&gt; 'PWA',
        'start_url' =&gt; '/',
        'background_color' =&gt; '#ffffff',
        'theme_color' =&gt; '#000000',
        'display' =&gt; 'standalone',
        'orientation' =&gt; 'any',
        'status_bar' =&gt; 'black',
        'icons' =&gt; [
            '72x72' =&gt; [
                'path' =&gt; '/images/icons/icon-72x72.png',
                'purpose' =&gt; 'any'
            ],
            '96x96' =&gt; [
                'path' =&gt; '/images/icons/icon-96x96.png',
                'purpose' =&gt; 'any'
            ],
            '128x128' =&gt; [
                'path' =&gt; '/images/icons/icon-128x128.png',
                'purpose' =&gt; 'any'
            ],
            '144x144' =&gt; [
                'path' =&gt; '/images/icons/icon-144x144.png',
                'purpose' =&gt; 'any'
            ],
            '152x152' =&gt; [
                'path' =&gt; '/images/icons/icon-152x152.png',
                'purpose' =&gt; 'any'
            ],
            '192x192' =&gt; [
                'path' =&gt; '/images/icons/icon-192x192.png',
                'purpose' =&gt; 'any'
            ],
            '384x384' =&gt; [
                'path' =&gt; '/images/icons/icon-384x384.png',
                'purpose' =&gt; 'any'
            ],
            '512x512' =&gt; [
                'path' =&gt; '/images/icons/icon-512x512.png',
                'purpose' =&gt; 'any'
            ],
        ],
        'splash' =&gt; [
            '640x1136' =&gt; '/images/icons/splash-640x1136.png',
            '750x1334' =&gt; '/images/icons/splash-750x1334.png',
            '828x1792' =&gt; '/images/icons/splash-828x1792.png',
            '1125x2436' =&gt; '/images/icons/splash-1125x2436.png',
            '1242x2208' =&gt; '/images/icons/splash-1242x2208.png',
            '1242x2688' =&gt; '/images/icons/splash-1242x2688.png',
            '1536x2048' =&gt; '/images/icons/splash-1536x2048.png',
            '1668x2224' =&gt; '/images/icons/splash-1668x2224.png',
            '1668x2388' =&gt; '/images/icons/splash-1668x2388.png',
            '2048x2732' =&gt; '/images/icons/splash-2048x2732.png',
        ],
        'shortcuts' =&gt; [
            [
                'name' =&gt; 'Shortcut Link 1',
                'description' =&gt; 'Shortcut Link 1 Description',
                'url' =&gt; '/shortcutlink1',
                'icons' =&gt; [
                    &quot;src&quot; =&gt; &quot;/images/icons/icon-72x72.png&quot;,
                    &quot;purpose&quot; =&gt; &quot;any&quot;
                ]
            ],
            [
                'name' =&gt; 'Shortcut Link 2',
                'description' =&gt; 'Shortcut Link 2 Description',
                'url' =&gt; '/shortcutlink2'
            ]
        ],
        'custom' =&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: #DEE492">&#39;</span><span style="color: #E7EE98">manifest</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884">env</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">APP_NAME</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span><span style="color: #62E884"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">My PWA App</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">),</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">short_name</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">PWA</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">start_url</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">background_color</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">#ffffff</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">theme_color</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">#000000</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">display</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">standalone</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">orientation</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">status_bar</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">black</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">icons</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">72x72</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-72x72.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">96x96</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-96x96.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">128x128</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-128x128.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">144x144</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-144x144.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">152x152</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-152x152.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">192x192</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-192x192.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">384x384</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-384x384.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">512x512</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-512x512.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">        ],</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">splash</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">640x1136</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-640x1136.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">750x1334</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-750x1334.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">828x1792</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-828x1792.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">1125x2436</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-1125x2436.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">1242x2208</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-1242x2208.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">1242x2688</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-1242x2688.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">1536x2048</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-1536x2048.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">1668x2224</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-1668x2224.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">1668x2388</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-1668x2388.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">            </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">2048x2732</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/splash-2048x2732.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">        ],</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">shortcuts</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">            [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Shortcut Link 1</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">description</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Shortcut Link 1 Description</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">url</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/shortcutlink1</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">icons</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> [</span></span>
<span class="line"><span style="color: #F6F6F4">                    </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">src</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">/images/icons/icon-72x72.png</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                    </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&quot;</span></span>
<span class="line"><span style="color: #F6F6F4">                ]</span></span>
<span class="line"><span style="color: #F6F6F4">            ],</span></span>
<span class="line"><span style="color: #F6F6F4">            [</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">name</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Shortcut Link 2</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">description</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">Shortcut Link 2 Description</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">                </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">url</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/shortcutlink2</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">            ]</span></span>
<span class="line"><span style="color: #F6F6F4">        ],</span></span>
<span class="line"><span style="color: #F6F6F4">        </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">custom</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> []</span></span>
<span class="line"><span style="color: #F6F6F4">    ]</span></span></code></pre></div>



<p class="wp-block-paragraph">2. Bạn cũng có thể chỉ định kích thước của hình ảnh<br><br></p>



<div class="wp-block-kevinbatdorf-code-block-pro 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">PHP</span><span role="button" tabindex="0" data-code="[
    'path' =&gt; '/images/icons/icon-512x512.png',
    'sizes' =&gt; '512x512',
    'purpose' =&gt; 'any'
]," 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">[</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">path</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">/images/icons/icon-512x512.png</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">sizes</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">512x512</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">,</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">purpose</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4"> </span><span style="color: #F286C4">=&gt;</span><span style="color: #F6F6F4"> </span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">any</span><span style="color: #DEE492">&#39;</span></span>
<span class="line"><span style="color: #F6F6F4">],</span></span></code></pre></div>



<p class="wp-block-paragraph">3. Thêm vào blade của dự án</p>



<p class="wp-block-paragraph">Trong view layout bạn chỉ cần thêm <code>@laravelPWA</code> và trong thẻ <code>&lt;head&gt;</code></p>



<div class="wp-block-kevinbatdorf-code-block-pro 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">Blade</span><span role="button" tabindex="0" data-code="<html&gt;

<head&gt;
  <title&gt;App Name - @yield('title')</title&gt;
  <meta charset=&quot;utf-8&quot;&gt;
  <meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  @vite('resources/css/app.css')
  @vite('resources/js/app.js')
  @laravelPWA
</head&gt;

<body class=&quot;bg-gradient-to-r from-emerald-400 to-cyan-400&quot;&gt;
  @section('header')
    @include('layouts.partials.header')
  @show
  @section('sidebar')
  @show
  @yield('content')
</body&gt;

</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>
<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">title</span><span style="color: #F6F6F4">&gt;App Name - </span><span style="color: #F286C4">@yield</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">title</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)&lt;/</span><span style="color: #F286C4">title</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">  &lt;</span><span style="color: #F286C4">meta</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">charset</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">utf-8</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">meta</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">name</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">viewport</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4"> </span><span style="color: #62E884; font-style: italic">content</span><span style="color: #F286C4">=</span><span style="color: #DEE492">&quot;</span><span style="color: #E7EE98">width=device-width, initial-scale=1.0</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #62E884">@vite</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">resources/css/app.css</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #62E884">@vite</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">resources/js/app.js</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #62E884">@laravelPWA</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>
<span class="line"><span style="color: #F6F6F4">&lt;</span><span style="color: #F286C4">body</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">bg-gradient-to-r from-emerald-400 to-cyan-400</span><span style="color: #DEE492">&quot;</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">@section</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">header</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">    </span><span style="color: #F286C4">@include</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">layouts.partials.header</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">@show</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">@section</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">sidebar</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">@show</span></span>
<span class="line"><span style="color: #F6F6F4">  </span><span style="color: #F286C4">@yield</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">content</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</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>
<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></code></pre></div>



<p class="wp-block-paragraph">Chế độ xem ngoại tuyến<br><br>Theo mặc định, chế độ xem ngoại tuyến sẽ được triển khai trong thư mục <code>resources/views/vendor/laravelpwa/offline.blade.php</code>. Bạn có thể custom để phù hợp với ứng dụng của mình ở đây<br></p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="772" height="194" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-2.17.03-PM.png" alt="" class="wp-image-2555" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-2.17.03-PM.png 772w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-2.17.03-PM-300x75.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-2.17.03-PM-768x193.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-2.17.03-PM-380x95.png 380w" sizes="(max-width: 772px) 100vw, 772px" /></figure>



<div class="wp-block-kevinbatdorf-code-block-pro 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">Blade</span><span role="button" tabindex="0" data-code="@extends('layouts.app')

@section('content')

    <h1&gt;You are currently not connected to any networks.</h1&gt;

@endsection" 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: #F286C4">@extends</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">layouts.app</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">@section</span><span style="color: #F6F6F4">(</span><span style="color: #DEE492">&#39;</span><span style="color: #E7EE98">content</span><span style="color: #DEE492">&#39;</span><span style="color: #F6F6F4">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F6F6F4">    &lt;</span><span style="color: #F286C4">h1</span><span style="color: #F6F6F4">&gt;You are currently not connected to any networks.&lt;/</span><span style="color: #F286C4">h1</span><span style="color: #F6F6F4">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F286C4">@endsection</span></span></code></pre></div>



<p class="wp-block-paragraph">4. Kiểm tra ứng dụng<br><br>Để kiểm thử PWA của bạn, mở ứng dụng Laravel trong trình duyệt (Chrome, Firefox). Nhấp vào nút &#8220;Install&#8221; xuất hiện trong thanh địa chỉ của trình duyệt để cài đặt PWA lên màn hình chính của bạn.<br>Đây là example của mình:<br></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="660" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-1024x660.png" alt="" class="wp-image-2556" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-1024x660.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-300x193.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-768x495.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-1536x990.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-2048x1320.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-380x245.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-800x516.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM-1160x748.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.32.57-PM.png 2638w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="917" height="1024" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-917x1024.png" alt="" class="wp-image-2557" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-917x1024.png 917w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-269x300.png 269w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-768x858.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-380x424.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-800x893.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM-1160x1295.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/12/Screenshot-2023-12-12-at-1.19.39-PM.png 1372w" sizes="(max-width: 917px) 100vw, 917px" /></figure>



<h4 id="tong-ket" class="wp-block-heading"><strong>Tổng kết</strong></h4>



<p class="wp-block-paragraph">PWA mang lại nhiều lợi ích, bao gồm hiệu suất, trải nghiệm người dùng, offline&#8230; . Nó có thể là một xu hướng mới trong phát triển web tương lại.<br>Đây là nhưng kiến thức mình tham khảo được từ nhiều nguồn. Hy vọng mọi người cảm thấy thú vị và có thể áp dụng vào dự án. Cảm ơn mọi người đã dành thời gian đọc ạ ☺️☺️☺️</p>



<p class="wp-block-paragraph"><em>Nguồn: </em></p>



<p class="wp-block-paragraph">Thư viện : <a href="https://github.com/silviolleite/laravel-pwa">https://github.com/silviolleite/laravel-pwa</a><br>Bài viết tham khảo: <a href="https://medium.com/@technophille/a-guide-to-implementing-pwa-in-laravel-applications-dc5e8e460197">https://medium.com/@technophille/a-guide-to-implementing-pwa-in-laravel-applications-dc5e8e460197</a></p>
<p>The post <a href="https://blog.tomosia.com.vn/progressive-web-applications-pwas-in-laravel-applications/">Progressive Web Applications (PWAs) in Laravel Applications</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/progressive-web-applications-pwas-in-laravel-applications/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
	</channel>
</rss>
