- รู้เบื้องต้นเกี่ยวกับตัวกรองใน AngularJS
- ตัวกรอง (Filters) ปรับปรุง (Enhance) ส่วนต่อประสานผู้ใช้ (User Interface)ใน AngularJS อย่างไร
- การสร้างตัวกรองแบบกำหนด (Custom Filters) เองใน AngularJS
- การทดสอบตัวกรอง (Testing Filters)ใน AngularJS
- ผลกระทบ (Impact) ของตัวกรอง (Filters) ต่อประสิทธิภาพ (Filters)
AngularJS พัฒนาโดย Google เป็นเฟรมเวิร์กที่ใช้ JavaScript แบบโอเพ่นซอร์สที่มีประสิทธิภาพซึ่งได้เข้ามาอยู่ในเว็บแอปพลิเคชันสมัยใหม่มากมาย ความสามารถมีตั้งแต่การทำเว็บ Angular และทำแอพอย่างง่ายไปจนถึงการทำเว็บ Angular และทำแอพที่ซับซ้อน หนึ่งในเหตุผลหลักที่ชื่นชม AngularJS เป็นเพราะคุณสมบัติที่เป็นเอกลักษณ์ เช่น คำสั่ง การฉีดการพึ่งพา (dependency injection) การผูกข้อมูลแบบสองทาง (two-way data binding) และตัวกรอง (Filters)
ตัวกรองเป็นส่วนสำคัญของ AngularJS โดยพื้นฐานแล้วพวกเขาอนุญาตให้นักพัฒนาจัดรูปแบบข้อมูล ทำให้มีส่วนติดต่อผู้ใช้ที่สะอาดตาและอ่านง่ายขึ้น เมื่อคุณทำเว็บ Angular และทำแอพ การทำความเข้าใจตัวกรองและวิธีใช้งานอย่างมีประสิทธิภาพสามารถยกระดับกระบวนการทำเว็บ Angular และทำแอพของคุณได้
1. รู้เบื้องต้นเกี่ยวกับตัวกรองใน AngularJS
ใน AngularJS ตัวกรองจะจัดรูปแบบค่าของนิพจน์เพื่อแสดงต่อผู้ใช้ สามารถใช้ในเทมเพลตมุมมอง ตัวควบคุม บริการ และคำสั่ง ตัวกรองสามารถจัดการข้อมูล แปลงเป็นรูปแบบที่ใช้งานง่าย ตัวอย่างเช่น คุณสามารถใช้ตัวกรองเพื่อแปลงสตริงเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก จัดรูปแบบตัวเลขเป็นสกุลเงิน จัดเรียงอาร์เรย์ และอื่นๆ อีกมากมาย
ตัวกรองใน AngularJS สามารถใช้กับนิพจน์โดยใช้อักขระไปป์ ( |
) ตามด้วยชื่อตัวกรองและพารามิเตอร์ทางเลือกใดๆ
{{ expression | filterName:parameter }}
มีตัวกรองในตัวมากมายใน AngularJS เช่น currency
, date
, json
, lowercase
, uppercase
, , orderBy
, filter
, number
, limitTo
และอื่นๆ ตัวกรองเหล่านี้พร้อมใช้งานทันทีที่แกะกล่อง ทำให้สะดวกสำหรับนักพัฒนา
2. ตัวกรอง (Filters) ปรับปรุง (Enhance) ส่วนต่อประสานผู้ใช้ (User Interface)ใน AngularJS อย่างไร
การทำเว็บ Angular และทำแอพต้องมีความสมดุลที่ดีระหว่างการจัดการข้อมูลและการออกแบบส่วนติดต่อผู้ใช้ ใน AngularJS ตัวกรองมีบทบาทสำคัญในการแสดงข้อมูลในแบบที่ผู้ใช้เข้าถึงและเข้าใจได้
ตัวอย่างเช่น สมมติว่าคุณกำลังทำเว็บ Angular และทำแอพอีคอมเมิร์ซโดยใช้ AngularJS แอปพลิเคชันของคุณอาจต้องแสดงรายการสินค้าพร้อมราคา โดยปกติแล้ว ราคาจะต้องมีรูปแบบเป็นสกุลเงิน ในสถานการณ์นี้ ตัวกรองของ AngularJS currency
มีประโยชน์ ช่วยจัดรูปแบบตัวเลขเป็นรูปแบบสกุลเงิน เพิ่มความสามารถในการอ่านราคา
<p>{{ product.price | currency }}</p>
ในทำนองเดียวกัน หากคุณกำลังสร้างแพลตฟอร์มบล็อก คุณอาจต้องแสดงวันที่ของแต่ละโพสต์ ที่นี่ date
ตัวกรองสามารถช่วยจัดรูปแบบวัตถุ JavaScript Date เป็นสตริงที่มนุษย์อ่านได้
<p>Published on: {{ post.date | date:'medium' }}</p>
ตัวอย่างเหล่านี้แสดงให้เห็นว่าตัวกรองสามารถปรับปรุงการนำเสนอข้อมูลในแอปพลิเคชัน AngularJS ของคุณได้อย่างมาก ซึ่งนำไปสู่ประสบการณ์ผู้ใช้ที่ดีขึ้น
3. การสร้างตัวกรองแบบกำหนด (Custom Filters) เองใน AngularJS
แม้ว่า AngularJS จะมีตัวกรองในตัวหลายแบบ แต่อาจมีบางสถานการณ์ที่คุณต้องการการจัดการข้อมูลบางประเภทที่ไม่สามารถใช้ได้ ในกรณีเช่นนี้ AngularJS ให้คุณสร้างตัวกรองแบบกำหนดเองได้
ในการกำหนดตัวกรองแบบกำหนดเอง คุณต้องลงทะเบียนฟังก์ชันโรงงานตัวกรองใหม่กับโมดูลของคุณ ฟังก์ชันนี้ควรส่งคืนฟังก์ชันอื่นที่ทำกระบวนการกรองจริง
ต่อไปนี้คือตัวอย่างตัวกรองแบบกำหนดเองที่ทำให้อักษรตัวแรกของสตริงเป็นตัวพิมพ์ใหญ่:
angular.module('myApp', []).filter('capitalize', function() {
return function(input) {
if (input)
return input[0].toUpperCase() + input.slice(1);
}
});
จากนั้น คุณสามารถใช้ตัวกรองแบบกำหนดเองนี้ในเทมเพลตของคุณได้ดังนี้:
<p>{{ post.title | capitalize }}</p>
ด้วยการสร้างตัวกรองแบบกำหนดเอง คุณสามารถปรับแต่งแอปพลิเคชัน AngularJS ของคุณให้ตรงกับความต้องการเฉพาะ นำเสนอประสบการณ์ผู้ใช้ที่ปรับแต่งได้มากขึ้น
4. การทดสอบตัวกรอง (Testing Filters)ใน AngularJS
เช่นเดียวกับคอมโพเนนต์อื่นๆ ของแอปพลิเคชัน AngularJS คุณจำเป็นต้องทดสอบตัวกรองเพื่อให้แน่ใจว่าทำงานได้ตามที่คาดไว้ การทดสอบช่วยให้คุณตรวจจับและแก้ไขจุดบกพร่องหรือปัญหาใดๆ ก่อนปรับใช้แอปพลิเคชันของคุณ เพื่อให้มั่นใจว่าผู้ใช้จะได้รับประสบการณ์ที่ราบรื่น
AngularJS ได้รับการออกแบบโดยคำนึงถึงการทดสอบและทำงานได้ดีกับกรอบการทดสอบยอดนิยมเช่น Jasmine และ Karma เมื่อทดสอบตัวกรอง เรากำลังตรวจสอบฟังก์ชันการเปลี่ยนแปลงของตัวกรองเป็นหลัก ต่อไปนี้เป็นตัวอย่างของวิธีที่คุณอาจทดสอบตัวกรอง ‘ตัวพิมพ์ใหญ่’ แบบกำหนดเองที่เรากำหนดไว้ก่อนหน้านี้:
describe('capitalize filter', function () {
var $filter, capitalize;
beforeEach(angular.mock.module('myApp'));
beforeEach(inject(function (_$filter_) {
$filter = _$filter_;
capitalize = $filter('capitalize');
}));
it('Should capitalize the first letter of a string', function() {
var name = 'angularJS';
expect(capitalize(name)).toEqual('AngularJS');
});
});
ในตัวอย่างนี้ เราใช้ Jasmine เพื่อกำหนดชุดทดสอบสำหรับตัวกรอง ‘ตัวพิมพ์ใหญ่’ ของเรา ก่อนอื่นเราจะใส่บริการ ‘$filter’ แล้วจึงเรียกตัวกรองที่กำหนดเองของเราโดยใช้ ‘$filter(‘capitalize’)’ จากนั้นเราจะเขียนการทดสอบเพื่อตรวจสอบว่าตัวกรองของเราใช้อักษรตัวแรกของสตริงเป็นตัวพิมพ์ใหญ่อย่างถูกต้อง
5. ผลกระทบ (Impact) ของตัวกรอง (Filters) ต่อประสิทธิภาพ (Filters)
แม้ว่าตัวกรองใน AngularJS จะมีประโยชน์มากมาย แต่ก็อาจส่งผลกระทบต่อประสิทธิภาพการทำงานของแอปพลิเคชันของคุณได้หากไม่ได้ใช้อย่างชาญฉลาด นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งสำหรับชุดข้อมูลขนาดใหญ่และตัวกรองที่มีราคาแพงในการคำนวณ
ตัวกรอง AngularJS ไม่ได้ดำเนินการเพียงครั้งเดียว แต่หลายครั้งต่อรอบการย่อย เมื่อมีการเปลี่ยนแปลงเกิดขึ้นในแอปพลิเคชันของคุณ AngularJS จะเริ่มรอบการสรุป ซึ่งจะตรวจสอบการเปลี่ยนแปลงข้อมูลและอัปเดต DOM ตามนั้น หากตัวกรองของคุณมีราคาแพงในการคำนวณ อาจทำให้การอัปเดตช้าลงและแอปพลิเคชันตอบสนองน้อยลง
วิธีหนึ่งในการลดปัญหานี้คือการใช้ตัวกรองเท่าที่จำเป็นและหลีกเลี่ยงการใช้ในคำสั่ง ‘ng-repeat’ ซึ่งสามารถเพิ่มจำนวนการเรียกใช้ฟังก์ชันได้อย่างมาก อีกวิธีหนึ่งคือการใช้ไวยากรณ์ ‘::’ (การรวมครั้งเดียว) หากคุณทราบว่าข้อมูลของคุณจะไม่เปลี่ยนแปลง สิ่งนี้ทำให้มั่นใจได้ว่าตัวกรองจะทำงานเพียงครั้งเดียว ซึ่งเป็นการปรับปรุงประสิทธิภาพ
<p>{{ ::product.price | currency }}</p>
นี่เป็นแนวปฏิบัติที่ดีในการปฏิบัติตามในขณะที่สร้างเว็บไซต์หรือแอพด้วย AngularJS
ตัวกรองเป็นคุณสมบัติอันทรงพลังของ AngularJS ซึ่งมีบทบาทสำคัญในการกำหนดอินเทอร์เฟซผู้ใช้และปรับปรุงประสบการณ์ผู้ใช้เมื่อทำเว็บ Angular และทำแอพ การทำความเข้าใจวิธีใช้ตัวกรองในตัว การสร้างตัวกรองแบบกำหนดเอง และการตระหนักถึงผลกระทบต่อประสิทธิภาพการทำงานเป็นกุญแจสำคัญในการควบคุม AngularJS และทำเว็บ Angular และทำแอพที่มีประสิทธิภาพและเป็นมิตรกับผู้ใช้
เช่นเดียวกับเครื่องมือหรือเฟรมเวิร์กการพัฒนาใดๆ กุญแจสู่ความเชี่ยวชาญอยู่ที่การฝึกฝน ดังนั้น อย่าลืมใช้แนวคิดและเทคนิคเหล่านี้ในขณะที่ทำเว็บ Angular และทำแอพ