Tutorial

Emmet ที่จะทำให้การสร้างเว็บ ลื่นไหล Tab เดียวจอด...

By Arnon Puitrakul - 22 มิถุนายน 2015

เคยประสบปัญหาเวลา เราเขียนเว็บกันมั้ยครับ เราต้องค่อย ๆ มานั่งพิมพ์ ทีล่ะตัว ๆ ไปเรื่อย ๆ Web Developer หลาย ๆ คนเลยเริ่มไปหาพวกโปรแกรม Code snippet มาใช้ ซึ่งผมก็เป็นเหมือนกัน แต่ผลปรากฏว่า เราก็ต้องมาสร้าง snippet เพื่อใช้เองอีก ทำให้เสียเวลามาก ๆ
ซึ่งแน่นอนว่า สมัยนี้เรามี Editor มากมายกายกองให้เราใช้ ไม่ได้มีแค่ Dreamweaver หรือ Notepad เหมือนเมื่อก่อนแล้ว และอีกอย่าง สมัยนี้เราใช้ IDE ตัวเดียว แต่สามารถเขียนได้หลาย ๆ ภาษาได้ในโปรแกรมเดียวด้วยล่ะ
ซึ่งอย่างที่ผมกำลังใช้อยู่ตอนนี้คือ Sublime Text ก็เป็น IDE สารพัดประโยชน์ดีจริง ๆ ใช้เป็น Default Text Editor แทน TextEdit บน OSX เลยทีเดียว กลับมาที่ Emmet กันต่อ
Emmet เป็น Plugin ตัวนึง ที่ทำให้เราเขียนโค๊ตได้อย่างลื่นไหลมาก ๆ เราสามารถที่จะทำได้มากกว่าที่ Code snippet ทั่ว ๆ ไปทำได้อีกด้วยล่ะ ! !

Editor ที่ Emmet รองรับ

เนื่องจาก ผู้สร้าง Emmet ต้องการให้มันใช้ได้กับหลาย ๆ IDE เขาเลยทำออกมาเป็น Plugin เพื่อให้ Developer สามารถดึงมาใช้ได้กันเยอะ ๆ (ผมชอบเวอร์ ~~ )

  • Sublime Text 3 (Version 3 อย่างเดียว Version 2 ใช้ไม่ได้นะ หรืออาจจะใช้ได้ แต่เคยลองแล้วไม่ได้อะ)
  • Eclipse
  • Vim หรือที่บางคนเรียก Vi ผ่าน Package Manager ได้เลย
  • มีอื่น ๆ อีก แต่ผมไม่เคยใช้ เลยไม่กล้าพูด

เรามาลองใช้กันดีกว่า

เรื่องแรกคือ Abbreviations ถือเป็น Core ของตัว Emmet เลยทีเดียว ไม่งั้นเราจะใช้ทำไมเนอะ

div>h1

อย่างเช่น เราต้องการ Div Tag แล้วข้างใน Div Tag จะมี h1 อยู่ข้างใน เราก็พิมพ์ตามด้านบน พอกด Tab ก็จะออกมาเป็น

<div>
   <h1></h1>
</div>

เรามาลองอะไรที่ซับซ้อนกว่านี้หน่อย

html>(head>title{this is test.})+body

มันก็จะออกมาเป็น

<html>
   <head>
     <title>This is test.</title>
   </head>

   <body>

   </body>
</html>

อีกอย่าง ถ้าเราใส่ปีกกาจะเป็นการเพิ่ม Content ลงไปใน Tag ที่เรากำหนดไว้ เช่น ตัวอย่างข้างบน ที่เราใส่ title{This is test} มันก็คือการใส่ This is test ลงไปใน Tag title นั่นเอง

Class & ID

บางครั้ง ไม่สิ ทุกครั้งสิ เราก็ต้องมากำหนด Style ด้วย CSS ผ่าน Class หรือ ID ถ้าเราจะกำหนด Class เราก็แค่ใส่ จุด แล้วตามด้วยชื่อ Class ที่เราต้องการ เช่น

div.container

เมื่อเรากด Tab เราก็จะเป็น

<div class = "container"> </div>

ส่วน ID ก็เช่นกัน แต่เปลี่ยนจาก จุด เป็น # เช่น

div#section1

ก็จะกลายเป็น

<div id = "section1"> </div>

แล้ว Properties อื่น ๆ ละ ?

เราสามารถเติม Properites อื่น ๆ ได้โดยใช้ [ ] แล้วข้างในก็เติม Properites ที่เราต้องการเข้าไป เช่น เราต้องการ Properites enable แล้วให้ค่ามันเป็น True ที่ Tag Link

div[enable=true]

พอเรากด Tab ก็จะกลายเป็น

<div enable = "true"></div>

แต่แค่นี้คงยังไม่มันส์ แล้วถ้าเกิดว่าเราจะต้องเขียนอะไรซ้ำ ๆ กันเยอะ ๆ อย่างเช่นเขียน li สัก 100 อันล่ะ (สมมุตินะ) ถ้าเขียนเองคงตายแน่นอน ถึงจะใช้ Sublime กด Cmd + Shift + D ก็ต้องกดไปอีก 99 ครั้ง ไหน ๆ เราก็ใช้ Emmet แล้ว ก็ใช้มันให้เป็นประโยชน์กันเถอะ

ul>li*100

ผลที่ออกมาก็จะเป็น ul แล้วข้างในเป็น li 100 อัน เยอะมากก......!!@#@#%#%
แต่นอกจากที่เราจะใช้ตัวคูณเพื่อเสก Tag ตามจำนวนที่เราต้องการแล้ว เรายังสามารถรันตัวเลขลงไปได้ด้วย เช่นใน Tag li เมื่อกี้ผมต้องการกำหนด ให้ใน Tag li มี Class ชื่อ ls แล้วตามด้วยเลข Tag ที่เท่าไหร่ ใน Emmet เราสามารถที่จะรันตัวเลขแบบอัตโนมัติก็ได้โดยใช้ $ เช่น

ul>li.item $$$*100

ผลที่ได้ก็จะออกมาเป็น

<ul>
   <li class = "item 001"></li>
   <li class = "item 002"></li>
             .
             .
             .
   <li class = "item 100"></li>
</ul>

ได้กันเป็นแบบนี้เลยทีเดียว เจ๋งมาก ! !
กับอีก Feature นึงคือ การ Generate Lorem ipsum ได้ด้วยล่ะเช่น

p>lorem

มันก็จะออกมาได้เป็น

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda dolores sit natus modi aut aliquid numquam fuga, suscipit impedit pariatur molestias optio neque quis blanditiis harum, a! Possimus, asperiores, animi.</p>

แต่ถ้าเราต้องการ ให้มัน Generate ออกมาสัก 4 คำก็ได้โดยการใส่เลขจำนวนคำหลัง lorem เช่น เราต้องการให้มัน Generate ออกมา 4 คำก็ต้องเขียนไปว่า lorem4 เช่น

p>lorem4

ผลก็จะได้ออกมาเป็น

<p>Lorem ipsum dolor sit.</p>

เพิ่มเติม เล็กน้อย

ในไฟล์ html ของเรา อย่างน้อยก็จะต้องมีพวก Tag head, body อะไรที่เป็นพื้นฐาน ซึ่งถ้าเราต้องพิมพ์ html>head>title... อะไรก็คงเยอะ มันเลยมี Snippet ของตัว Emmet เข้ามาช่วยอีก นั่นคือ html:5 พอกด Tab เท่านั้นแหละ รู้เลย !!! มาหมด

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>

</body>
</html>

จริง ๆ แล้วนอกจากที่เอามาให้ดูในนี้แล้ว มันยังมีทางฝั่ง CSS ด้วย แต่ไม่ขอเอามาพูดและ เพราะเริ่มเยอะไปมากแล้ว สามารถเข้าไปดูที่เหลือได้ใน Document ของ Emmet ได้เลยที่ http://docs.emmet.io เขาจะบอกหมดเลยว่า มันมีอะไรบ้าง บอกเลยว่า เยอะมาก ๆ ผมยังจำได้ไม่หมดเลย (กำลังหัดใช้อย่างจริงจังมากอยู่ด้วยล่ะ)
จากที่เห็น ว่ามันทำให้เราเขียนเว็บได้ง่ายมาก ๆ มากกว่าเมื่อก่อนที่เราค่อย ๆ พิมพ์ทีล่ะตัวเยอะเลย ซึ่งจริง ๆ แล้วทั้งหมดนี้ก็เป็นเพียงแค่เครื่องมือช่วยทำให้เราเขียนโค๊ตได้สะดวกขึ้นเท่านั้นเอง แต่ที่สำคัญที่สุด ก็อยู่ฝีมือเราจริง ๆ แล้วล่ะครับ

Read Next...

ติดตั้ง Zigbee Dongle บน Synology NAS กับ Home Assistant

ติดตั้ง Zigbee Dongle บน Synology NAS กับ Home Assistant

ก่อนหน้านี้เราเปลี่ยนมาใช้ Zigbee Dongle กับ Home Assistant พบว่าเสถียรขึ้นเยอะมาก อุปกรณ์แทบไม่หลุดออกจากระบบเลย แต่การติดตั้งมันเข้ากับ Synology DSM นั้นมีรายละเอียดมากกว่าอันอื่นนิดหน่อย วันนี้เราจะมาเล่าวิธีการเพื่อใครเอาไปทำกัน...

โหลด CSV วิธีไหนเร็วที่สุด ?

โหลด CSV วิธีไหนเร็วที่สุด ?

เมื่อหลายวันก่อนมีพี่ที่รู้จักกันมาถามว่า เราจะโหลด CSV ยังไงให้เร็วที่สุด เป็นคำถามที่ดูเหมือนง่ายนะ แต่พอมานั่งคิด ๆ ต่อ เห้ย มันมีอะไรสนุก ๆ ในนั้นเยอะเลยนี่หว่า วันนี้เราจะมาเล่าให้อ่านกันว่า มันมีวิธีการอย่างไรบ้าง และวิธีไหนเร็วที่สุด เหมาะกับงานแบบไหน...

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ตั้งแต่ใช้ Obsidian เป็น App จด Note หลัก ชอบวิธีการจัดการมาก ๆ เมื่อใช้งานร่วมกับ Plugin ต่าง ๆ ยิ่งทำให้การใช้งานยืดหยุ่นมากกว่าเดิมอีกเยอะมาก ๆ ติดอยู่เรื่องเดียวคือ การใช้งานในหลาย ๆ อุปกรณ์ แต่เราเจอ Plugin ตัวนึงที่น่าสนใจมาก ๆ คือ LiveSync วันนี้เราจะมาเล่าวิธีการติดตั้ง และใช้งานมันกัน...

การสร้าง SSD Storage Pool บน Synology DSM

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน...