Nuxt.js Fundamental ตอนที่ 11 - ทำ SEO และ Meta tags
เนื้อหาของบทเรียน Nuxt.js
- ตอนที่ 1 - Getting Started with Nuxt.js
- ตอนที่ 2 - สร้าง Nuxt.js ด้วย create-nuxt-app
- ตอนที่ 3 - การกำหนด Routing
- ตอนที่ 4 - Nuxt.js Concept
- ตอนที่ 5 - Nuxt Content และ Async Data
- ตอนที่ 6 - การดึงข้อมูลจาก APIs
- ตอนที่ 7 - การใช้งานร่วมกับ Vuex Store
- ตอนที่ 8 - ทำระบบ Authentication ด้วย Nuxt.js
- ตอนที่ 9 - การ Deploy Nuxt.js
- ตอนที่ 10 - การทำ Internal API และ Middleware
- ตอนที่ 11 - ทำ SEO และ Meta tags
- ตอนที่ 12 - Workshop
ต่อมาดูเรื่องของการทำ SEO กันบ้างนะครับ การทำ SEO ใน Nuxt.js คือ เราสามารถกำหนด title, แทรก script หรือ stylesheet ลงไปใน <head></head>
ได้ หรือ การกำหนด meta tag ของ Social media เช่น Facebook, Twitter เวลาแชร์ link แล้วให้โชว์ thumbnail หรือ title เป็นต้น การทำ SEO ของ Nuxt.js ก็ง่ายมากๆ คือ
- กำหนดแบบ Global ที่ไฟล์
nuxt.config.js
- กำหนดแต่ละ Page ผ่าน
head()
- สามารถทำ dynamic อ่านค่าจาก
data
ได้เช่นกัน
โดยตัว SEO นั้น ก็ใช้ Vue Meta นั่นเอง สำหรับใครติดปัญหา ก็ดู reference จาก Vue Meta ได้เลย
1. กำหนดแบบ Global
ตัวอย่าง เราแก้ไขไฟล์ nuxt.config.js
ให้ setup SEO แบบ global แบบนี้
เราสามารถกำหนด
title
- คือdocument.title
ได้เลยtitleTemplate
- สามารกำหนด Template ได้ โดยtitle
จะมาแทนที่%s
นั่นเองmeta
- สามารถใส่ charset, description ได้ (โดยใช้hid
เพื่อหลีกเลี่ยง duplicate data เวลาใช้ใน child component)
หรือจะใส่ script หรือ stylesheet ก็ได้เช่นกัน แบบนี้
2. กำหนดแต่ละ Page (Local Setting)
เราสามารถกำหนด global และแต่ละหน้า ก็สามารถกำหนดแยกได้เช่น กัน เช่น ผมแก้ไฟล์ /pages/about.vue
แบบนี้
3. แบบ Dynamic Local
แบบนี้คือการกำหนด head
แยกแต่ละหน้า และสามารถกำหนด dynamic data โดยอ่านค่าจาก data()
หรือ computed()
ได้ เช่น เราอาจจะ fetch()
ข้อมูลจาก API มาเซฟลง data
จากนั้น ตัว head()
ก็จะใช้ค่าจาก API มากำหนด SEO ได้ เช่น
นี้ก็เป็นเพียงแค่ตัวอย่างคร่าวๆ ของการปรับ SEO และใส่พวก tag ต่างๆ ใน Head ครับ นอกจากนี้ก็ยังมีเรื่องอื่นๆ อีก เช่น
- เราสามารถกำหนด
prefetch
หรือpreload
ได้ - เราควรกำหนด
hid
ให้กับทุกๆ tag เพื่อกันข้อมูล duplicate เพราะ default ตัว Vue Meta จะสร้าง duplicate tag ให้อัตโนมัติ นอกเสียจากเราจะกำหนดhid
มันถึงจะ override ค่าเก่า
ลองไปปรับแก้ และของทำกันดูครับ
Hints & Questions?
- ลองใส่ meta tag
og:image
เพื่อแชร์ลง Facebook หรือ Twitter - ถ้าเราเปลี่ยนโหมดเป็น
spa
ตอน build SEO ยังทำงานหรือไม่? - ระหว่าง Server side rendering กับ Static generate แบบ Pre-rendering มีผลต่อ SEO มั้ย? (แน่นอน static web มันมี HTML ทั้งหมด ดีต่อ SEO อยู่แล้ว แต่ถ้า Pre-rendering บางส่วนละ จะเหมือนกันมั้ย?)
อ่านบทถัดไป 👉 ตอนที่ 12 - Workshop
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust