1. ทำไม SEO สำคัญสำหรับ Vue.js?
SEO (Search Engine Optimization) มีบทบาทสำคัญในการเพิ่มการเข้าถึงและการมองเห็นเว็บไซต์ของคุณในเครื่องมือค้นหา (Search Engine) อย่าง Google และ Bing สำหรับ Single Page Applications (SPA) อย่าง Vue.js SEO อาจมีความท้าทายเนื่องจากเนื้อหามักถูกสร้างแบบไดนามิกในฝั่ง Client (Client-side Rendering) ทำให้บาง Search Engine อาจไม่สามารถอ่านเนื้อหาได้อย่างถูกต้อง
2. เทคนิคการปรับปรุง SEO
2.1 ใช้ Vue Router ให้เหมาะสม
- ใช้ URL ที่มีความหมายแทนการใช้ Query String เช่น
/products/shoes
แทน/products?id=123
- เพิ่ม Metadata ในแต่ละหน้า เช่น Title และ Description
ตัวอย่างการตั้งค่า Metadata:
// router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '@/views/Home.vue';
import About from '@/views/About.vue';
const routes = [
{
path: '/',
name: 'Home',
component: Home,
meta: {
title: 'Home Page',
description: 'Welcome to our website!'
}
},
{
path: '/about',
name: 'About',
component: About,
meta: {
title: 'About Us',
description: 'Learn more about our company.'
}
}
];
const router = createRouter({
history: createWebHistory(),
routes
});
router.afterEach((to) => {
document.title = to.meta.title || 'Default Title';
const metaDescription = document.querySelector('meta[name="description"]');
if (metaDescription) {
metaDescription.setAttribute('content', to.meta.description || 'Default Description');
}
});
export default router;
2.2 ใช้ Server-Side Rendering (SSR) หรือ Static Site Generation (SSG)
การใช้ SSR หรือ SSG ช่วยให้ Search Engine สามารถอ่านเนื้อหาได้ง่ายขึ้น
ใช้ Nuxt.js สำหรับ SSR และ SSG
Nuxt.js เป็น Framework ที่สร้างจาก Vue.js รองรับ SSR และ SSG โดยค่าเริ่มต้น
การติดตั้ง Nuxt.js:
npx nuxi init nuxt-app
cd nuxt-app
npm install
npm run dev
ตัวอย่างการตั้งค่าใน Nuxt:
export default defineNuxtConfig({
ssr: true, // เปิดใช้งาน SSR
app: {
head: {
title: 'My Nuxt App',
meta: [
{ name: 'description', content: 'This is an example Nuxt.js application.' }
]
}
}
});
2.3 เพิ่ม Structured Data
Structured Data ช่วยให้ Search Engine เข้าใจเนื้อหาในเว็บไซต์ของคุณดีขึ้น
ตัวอย่างการเพิ่ม Structured Data:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "My Company",
"url": "https://www.mycompany.com",
"logo": "https://www.mycompany.com/logo.png",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-800-555-5555",
"contactType": "Customer Service"
}
}
</script>
2.4 ใช้ Lazy Loading สำหรับ Images และ Components
Lazy Loading ช่วยลดเวลาการโหลดหน้าเว็บและเพิ่มประสิทธิภาพ SEO
การใช้ Lazy Loading กับ Images:
<template>
<div>
<img v-lazy="image.src" alt="Image Description" />
</div>
</template>
<script>
export default {
data() {
return {
image: {
src: 'https://via.placeholder.com/300'
}
};
}
};
</script>
2.5 ตั้งค่า Robots.txt และ Sitemap.xml
- Robots.txt ช่วยบอก Search Engine ว่าหน้าใดบ้างที่ควรหรือไม่ควรทำ Index
ตัวอย่าง Robots.txt:
User-agent: *
Disallow: /admin
Allow: /
Sitemap: https://www.mywebsite.com/sitemap.xml
- Sitemap.xml ช่วยให้ Search Engine ค้นหาและทำ Index หน้าในเว็บไซต์ของคุณได้ง่ายขึ้น
การสร้าง Sitemap.xml:
npm install vue-sitemap
ตัวอย่างการใช้งาน:
const Sitemap = require('vue-sitemap');
const sitemap = new Sitemap('https://www.mywebsite.com')
.add('/home')
.add('/about')
.build('dist/sitemap.xml');
2.6 เพิ่ม Page Speed และ Mobile-Friendliness
ใช้เครื่องมืออย่าง Google PageSpeed Insights เพื่อตรวจสอบความเร็วเว็บไซต์และปรับปรุงตามคำแนะนำ
การปรับปรุง:
- เปิดใช้งาน Compression (เช่น Gzip)
- ลดขนาด CSS และ JavaScript ด้วย Minification
- ใช้ CDN สำหรับ Static Assets
3. สรุป
ในบทนี้ คุณได้เรียนรู้เทคนิคสำคัญสำหรับการพัฒนาและปรับปรุง SEO ในแอปพลิเคชัน Vue.js รวมถึงการใช้ Metadata, SSR/SSG, Structured Data, Lazy Loading, และ Sitemap
ในบทถัดไป เราจะศึกษาเกี่ยวกับการพัฒนาแอปพลิเคชัน Vue.js แบบ PWA (Progressive Web App) เพื่อเพิ่มประสิทธิภาพและความสามารถของแอปพลิเคชัน!