สรุปการเปลี่ยนแปลงบน jQuery 3 เป็นยังไง อะไรเปลี่ยนไปบ้าง
สดๆร้อนๆเลยสำหรับการปล่อยเวอร์ชันที่ 3 ที่เป็น Final Release สำหรับ jQuery 3 ครับ วันนี้ผมจะพามาดูกันว่า มีอะไรเปลี่ยนแปลงไปจากเวอร์ชัน 2 บ้าง เพื่อการเปลี่ยนผ่านที่ง่ายขึ้น ของชาว Developer อย่างเราๆ ไปดูกันเลยครับ
ความเข้ากันได้กับ jQueryUI และ jQuery Mobile
ทางทีมงาน jQuery บอกว่า ฟังค์ชันส่วนใหญ่เข้ากันได้ปกติ แต่ก็ยังมีบางฟังค์ชันที่ทำงานไม่ได้ โดยทางทีมงานได้แนะนำให้ใช้ตัว Migrate เพื่อแก้ปัญหาชั่วคราวไปก่อน โดยทางทีมงานจะทำการแก้ไขให้ในเร็วๆนี้
Jquery 3 Migrate : https://code.jquery.com/jquery-migrate-3.0.0.js
การรองรับ Browser ต่างๆ
jQuery 3 รองรับ Browser ดังนี้ครับ
- Internet Explorer: 9+
- Chrome, Edge, Firefox, Safari: Current and Current - 1
- Opera: Current
- Safari Mobile iOS: 7+
- Android 4.0+
สังเกตว่า jQuery 3 ได้ยกเลิกการ Support Browser บนระบบปฏิบัติการเก่าๆอย่าง iOS 6 ลงไป และ Android 3 ลงไป หากท่านกำลังพัฒนา Web Application ที่ต้องทำงานกับ User กลุ่มที่ใช้งานระบบปฎิบัติการเก่าๆ ก็ไม่แนะนำให้อัพเกรดครับ
การเปลี่ยนแปลงที่สำคัญบน jQuery 3
เรามาดูการเปลี่ยนแปลงหลักๆที่เกี่ยวข้องในชีวิตประจำวันกันครับ ว่าเปลี่ยนอะไรกันบ้าง
การใช้ Ajax เพื่อร้องขอไฟล์ประเภท Script ข้าม Domain จะต้องมีการระบุเพื่ออนุญาติในการร้องขอไฟล์นั้น
โดยปกติแล้ว เราสามารถใช้งาน jQuery.ajax()
หรือ jQuery.get()
เพื่อร้องขอไฟล์แบบ Ajax นั้น ตัว jQuery จะ Auto Detect ได้อยู่แล้วว่าเป็นไฟล์ประเภทอะไร แต่ใน jQuery 3 นั้นถ้าคุณต้องการร้องขอไฟล์ประเภท Script ข้าม Domain ผ่าน Ajax คุณจะต้องระบุ dataType: "script"
ลงในไปใน jQuery.ajax()
ให้ชัดเจนเลยว่า ไฟล์ที่คุณต้องการ เปลี่ยนไฟล์ประเภท Script สิ่งๆนี้ ออกมาเพื่อป้องกันการโจมตีผ่าน Script ในกรณีที่เรียกใช้งาน Ajax call แล้วโดนเปลี่ยนเส้นทางโดยไม่ได้รับอนุญาติ (Man-in-the-middle) ไปยัง Script ที่ไม่พึงประสงค์ ทำให้ผู้ใช้งานโดนโจมตีได้
jQuery.get()
และ jQuery.post()
สามารถใช้ parameter setting เหมือน jQuery.ajax()
ได้แล้ว
ปกติแล้ว jQuery.get()
กับ jQuery.post()
จะไม่สามารถใช้ parameter setting ได้เยอะเหมือน jQuery.ajax()
แต่ใน jQuery 3 นั้นทำได้แล้วครับ โดยสามารถไปดู parameter setting ที่สามารถ set ได้ใน Documentation API ของ jQuery.ajax()
ครับ
ยกเลิกฟังค์ชัน .toggleClass()
ที่ไม่มี arguments และ .toggleClass(boolean)
ทางทีมงานให้เหตุผลว่า การใช้ฟังค์ชันนี้ในกรณี .toggleClass()
และ .toggleClass(boolean)
มีความเป็นไปได้สูงที่จะเกิดข้อผิดพลาด เช่น .toggleClass( undefined )
ทางทีมงานเลยยกเลิกฟังค์ชันดังกล่าวออก
เปลี่ยนชื่อฟังค์ชัน jQuery.unique()
ไปเป็น jQuery.uniqueSort()
ทางทีมงานให้เหตุผลว่า ชื่อของ jQuery.uniqueSort()
นั้นสื่อและให้ความหมายชัดเจนกว่า jQuery.unique()
แต่การทำงานของฟังค์ชัน ยังเหมือนเดิมทุกประการ
ยกเลิกฟังค์ชัน jQuery.parseJSON()
ยกเลิก jQuery.parseJSON()
แล้วให้ไปใช้งานฟังค์ชัน Native ของ Javascript แทน นั้นคือ JSON.parse()
อันนี้ผมแค่ยกตัวอย่างมาส่วนหนึ่งครับ ยังมีอีกเยอะเลยที่ไม่ได้เขียนถึง สามารถเข้าไปดูได้ที่ : http://jquery.com/upgrade-guide/3.0/
ผมเชื่อว่า Web Developer หลายท่านก็ยังใช้งาน jQuery เป็นหลักอยู่ ตอนนี้ได้เวลาศึกษา jQuery 3 เอาไว้บ้างแล้วนะครับ เพื่อเตรียมพร้อมการ Migrate จากเวอร์ชันก่อนๆ มายัง jQuery 3
สำหรับผม ตอนนี้แนะนำให้รอก่อนครับ เหมือน jQuery 3 จะเปลี่ยน API ไปเยอะพอสมควร ทำให้ Library หลายๆตัวต้องปรับตัวและเตรียมปรับเวอร์ชัน ต้องใช้เวลาสักพักครับ แต่ศึกษาเอาไว้ก่อน ก็เป็นเรื่องที่ดีครับ