Ext.js - คำถามและคำตอบ
Ext JS ย่อมาจาก JavaScript แบบขยาย เป็นกรอบงาน JavaScript เพื่อพัฒนาแอปพลิเคชันเดสก์ท็อปบนเว็บ UI
เป็นผลิตภัณฑ์ Sencha ที่ขยายมาจาก YUI (ส่วนต่อประสานผู้ใช้ Yahoo)
ไฟล์เหล่านี้เป็นไฟล์หลักที่จะรวมไว้ในหน้า HTML เพื่อเรียกใช้โค้ด Ext JS -
- Ext-all.js
- Ext-all.css
- วิดเจ็ต UI ที่ปรับแต่งได้พร้อมคอลเล็กชัน UI ที่หลากหลายเช่นกริดกริดเดือยฟอร์มแผนภูมิต้นไม้
- ความเข้ากันได้ของโค้ดของเวอร์ชันใหม่กับเวอร์ชันเก่า
- ตัวจัดการรูปแบบที่ยืดหยุ่นช่วยจัดระเบียบการแสดงข้อมูลและเนื้อหาในเบราว์เซอร์อุปกรณ์และขนาดหน้าจอต่างๆ
- แพ็คเกจข้อมูลขั้นสูงแยกวิดเจ็ต UI ออกจากชั้นข้อมูล แพคเกจข้อมูลช่วยให้สามารถรวบรวมข้อมูลฝั่งไคลเอ็นต์โดยใช้โมเดลที่มีฟังก์ชันสูงซึ่งเปิดใช้งานคุณลักษณะต่างๆเช่นการเรียงลำดับและการกรอง
- เป็นโปรโตคอลที่ไม่เชื่อเรื่องพระเจ้าและสามารถเข้าถึงข้อมูลจากแหล่งข้อมูลส่วนหลังใดก็ได้
- วิดเจ็ต Themes Ext JS ที่ปรับแต่งได้มีให้ใช้งานในรูปแบบสำเร็จรูปหลายแบบที่สอดคล้องกันในทุกแพลตฟอร์ม
เพิ่มความคล่องตัวในการพัฒนาข้ามแพลตฟอร์มบนเดสก์ท็อปแท็บเล็ตและสมาร์ทโฟน - สำหรับทั้งเบราว์เซอร์รุ่นใหม่และรุ่นเก่า
เพิ่มประสิทธิภาพการทำงานของทีมพัฒนาโดยการรวมเข้ากับสภาพแวดล้อมการพัฒนาองค์กรผ่านปลั๊กอิน IDE
ช่วยลดต้นทุนในการพัฒนาเว็บแอปพลิเคชัน
เพิ่มขีดความสามารถให้ทีมสร้างแอปด้วยประสบการณ์ผู้ใช้ที่น่าสนใจ
มีชุดวิดเจ็ตสำหรับทำให้ UI มีประสิทธิภาพและใช้งานง่าย
เป็นไปตามสถาปัตยกรรม MVC ดังนั้นโค้ดที่อ่านได้สูง
ขนาดของห้องสมุดมีขนาดใหญ่ประมาณ 500 KB ซึ่งทำให้เวลาในการโหลดครั้งแรกมากขึ้นและทำให้แอปพลิเคชันช้า
HTML เต็มไปด้วยแท็ก <DIV> ทำให้ซับซ้อนและแก้ไขจุดบกพร่องได้ยาก
ตามนโยบายใบอนุญาตสาธารณะทั่วไปแอปพลิเคชันโอเพนซอร์สฟรี แต่จ่ายสำหรับการใช้งานเชิงพาณิชย์
บางครั้งสำหรับการโหลดแม้แต่สิ่งง่ายๆก็ต้องใช้การเข้ารหัสไม่กี่บรรทัดซึ่งง่ายกว่าใน html หรือ Jquery ธรรมดา
ต้องการนักพัฒนาที่มีประสบการณ์มากในการพัฒนาแอปพลิเคชัน Ext JS
Ext JS รองรับความเข้ากันได้ข้ามเบราว์เซอร์รองรับเบราว์เซอร์หลักทั้งหมดเช่น -
- IE 6 ขึ้นไป
- Firefox 3.6 ขึ้นไป
- Chrome10 ขึ้นไป
- Safari 4 ขึ้นไป
- Opera 11 ขึ้นไป
Ext JS 4+ รองรับสถาปัตยกรรม MVC (Model view controller) จาก Ext JS 5 เริ่มรองรับ MVVM (Model View Viewmodel) ด้วย
Ext JS 6 เป็น Ext JS เวอร์ชันล่าสุดซึ่งมีประโยชน์หลักที่สามารถใช้ได้กับทั้งเดสก์ท็อปและแอพพลิเคชั่นมือถือ โดยทั่วไปจะเป็นการรวม Ext JS (แอปพลิเคชันเดสก์ท็อป) และ Sencha touch (แอปพลิเคชันมือถือ)
Ext JS เป็นเฟรมเวิร์ก JavaScript ดังนั้นในการเริ่มใช้งานคุณควรใช้ความรู้ HTML และ JS มาก่อน (ไม่ใช่ระดับผู้เชี่ยวชาญ แต่ควรมีความเข้าใจพื้นฐาน) จากนั้นจึงต้องทำความเข้าใจพื้นฐานดังนั้นให้เวลาและค่อยๆเรียนรู้
ทั้งสองเฟรมเวิร์กแตกต่างกันมากเราสามารถเปรียบเทียบ Ext JS และ jQuery UI ได้เนื่องจาก Ext JS เป็นเฟรมเวิร์ก UI ที่สมบูรณ์แบบ แต่ Ext JS ยังมีส่วนประกอบอีกมากมายจากนั้น jQuery UI
พารามิเตอร์ | ต่อ JS | JS เชิงมุม |
---|---|---|
UI ที่หลากหลาย | Ext JS มีตัวเลือก UI ที่หลากหลายเช่นแบบฟอร์มตารางแผนภูมิ | Angular JS ไม่มี UI ที่สมบูรณ์ในตัว |
ส่วนประกอบ UI ของธีมที่หลากหลาย | Ext JS มีหลายธีมในตัว | Angular JS ไม่ได้ให้ Rich UI แต่จะต้องรวมเข้ากับ AngularUI, AngularBootstarp เป็นต้น |
ความเข้ากันได้ข้ามเบราว์เซอร์ | Ext JS ให้ความเข้ากันได้กับเบราว์เซอร์ข้ามซึ่งใช้งานได้กับเบราว์เซอร์เกือบทั้งหมด IE6 +, FF, Chrome, Safari, Opera และอื่น ๆ | Angular JS ต้องใช้ไลบรารีของบุคคลที่สามเช่น jQuery, jqLite เพื่อแก้จุดประสงค์นี้ |
รองรับการทดสอบอัตโนมัติ | ทำได้เฉพาะกับเครื่องมือภายนอกเท่านั้น | จัดเตรียมไว้ในตัว |
การผูกข้อมูลสองทาง | ใน Ext JS 5 มีการรวมสองทาง | รองรับการผูกแบบสองทางจากเวอร์ชันแรก |
ประสิทธิภาพ | Ext JS ค่อนข้างหนักและช้ากว่า | Angular JS เป็นเฟรมเวิร์กที่มีน้ำหนักเบากว่า Ext JS |
สร้างเครื่องมือ | Ext JS ใช้เครื่องมือ Sencha cmd ในการสร้าง | Angular JS ใช้เครื่องมือของบุคคลที่สามเช่นฮึดฮัด |
Ext JS 1.1
Ext JS เวอร์ชันแรกได้รับการพัฒนาโดย Jack Slocum ในปี 2549 เป็นชุดของคลาสยูทิลิตี้ซึ่งเป็นส่วนเสริมของ YUI เขาตั้งชื่อห้องสมุดว่า YUI-ext
Ext JS 2.0
Ext JS เวอร์ชัน 2.0 เปิดตัวในปี 2550 เวอร์ชันนี้มีเอกสาร API ใหม่สำหรับแอปพลิเคชันเดสก์ท็อปที่มีคุณสมบัติ จำกัด เวอร์ชันนี้ไม่มีความเข้ากันได้แบบย้อนหลังกับ Ext JS เวอร์ชันก่อนหน้า
Ext JS 3.0
Ext JS เวอร์ชัน 3.0 เปิดตัวในปี 2009 เวอร์ชันนี้ได้เพิ่มคุณสมบัติใหม่เป็นแผนภูมิและมุมมองรายการ แต่ด้วยราคาที่รวดเร็ว มันเข้ากันได้กับเวอร์ชัน 2.0
Ext JS 4.0
หลังจากการเปิดตัว Ext JS 3 ผู้พัฒนา Ext JS มีความท้าทายที่สำคัญในการเพิ่มความเร็ว Ext JS เวอร์ชัน 4.0 เปิดตัวในปี 2554 มีโครงสร้างที่ได้รับการแก้ไขอย่างสมบูรณ์ซึ่งตามด้วยสถาปัตยกรรม MVC และแอปพลิเคชันที่รวดเร็ว
Ext JS 5.0
Ext JS เวอร์ชัน 5.0 เปิดตัวในปี 2014 การเปลี่ยนแปลงที่สำคัญในรุ่นนี้คือการเปลี่ยนสถาปัตยกรรม MVC เป็นสถาปัตยกรรม MVVM รวมถึงความสามารถในการสร้างแอปเดสก์ท็อปบนอุปกรณ์ที่รองรับระบบสัมผัสการเชื่อมโยงข้อมูลสองทางเค้าโครงที่ตอบสนองและคุณสมบัติอื่น ๆ อีกมากมาย
Ext JS 6.0
Ext JS 6 ผสานกรอบ Ext JS (สำหรับแอปพลิเคชันเดสก์ท็อป) และ Sencha touch (สำหรับแอปพลิเคชันมือถือ)
Ext JS มีส่วนประกอบ UI ที่หลากหลายส่วนประกอบที่ใช้หลัก ๆ ได้แก่ -
- Grid
- Form
- กล่องข้อความ
- แถบความคืบหน้า
- เคล็ดลับเครื่องมือ
- Window
- ตัวแก้ไข HTML
- Charts
xType กำหนดประเภทของคอมโพเนนต์ Ext JS UI ซึ่งถูกกำหนดระหว่างการแสดงผลของคอมโพเนนต์ เช่น textField, Numeric, button เป็นต้น
นี่คือประเภทการตรวจสอบที่สามารถปรับแต่งได้อย่างง่ายดาย ประเภท vType ไม่กี่รายการที่ Ext JS มีให้คือ -
alphanumText - สิ่งนี้จะคืนค่าเป็นเท็จหากข้อความที่ป้อนมีสัญลักษณ์อื่นที่ไม่ใช่ค่าตัวอักษรหรือตัวเลข
emailText - สิ่งนี้จะส่งกลับเท็จหากข้อความไม่ใช่ที่อยู่อีเมลที่ถูกต้อง
ใช่ Ext JS สามารถรวมกับ Ajax การใช้งานเป็น: สมมติว่าในกล่องข้อความบางส่วนหลังจากเบลอจะต้องตรวจสอบความถูกต้องของข้อมูลจากเซิร์ฟเวอร์เพื่อให้เราสามารถมี Ajax call onblur / onchange เป็นรหัสกล่องข้อความเพื่อตรวจสอบว่าข้อมูลที่ป้อนในกล่องข้อความมีอยู่ในเซิร์ฟเวอร์ / ฐานข้อมูลหรือไม่ .
ใช่ Ext JS สามารถรวมเข้ากับเฟรมเวิร์กฝั่งเซิร์ฟเวอร์อื่น ๆ เช่น Java, .net, Ruby บนราง, PHP, ColdFusion เป็นต้น
Ext JS สามารถนำไปใช้กับสภาพแวดล้อมการพัฒนารวม (IDE) ที่เป็นที่นิยมเช่น Eclipse, Aptana, Sublime, Webstrom เป็นต้น
ต่อไปนี้เป็นสองสามวิธีในการเข้าถึงองค์ประกอบ DOM ใน Ext JS -
- Ext.get()
- Ext.getElementById()
- Ext.fly()
- Ext.select()
สถาปัตยกรรม MVVM คือ Model View Viewmodel ในตัวควบคุมสถาปัตยกรรม MVVM ของ MVC จะถูกแทนที่ด้วย ViewModel
ViewModel- โดยทั่วไปแล้วจะรักษาการเปลี่ยนแปลงระหว่างมุมมองและโมเดล มันผูกข้อมูลจากแบบจำลองเพื่อดู ในขณะเดียวกันก็ไม่ได้มีปฏิสัมพันธ์โดยตรงกับมุมมอง แต่มีความรู้เกี่ยวกับโมเดลเท่านั้น
Ext.getCmp('buttonId').on('click', function(){
// statement to perform logic
});
Ext.onReady () เป็นวิธีแรกที่เรียกเมื่อ DOM โหลดเต็มที่เพื่อให้องค์ประกอบใด ๆ ที่คุณต้องการอ้างถึงจะพร้อมใช้งานเมื่อสคริปต์ทำงาน
Ext.select('div').on('click', function(){
// statement to perform logic
});
กล่องแจ้งเตือนประเภทต่างๆใน Ext JS ได้แก่ -
- Ext.MessageBox.alert();
- Ext.MessageBox.confirm();
- Ext.MessageBox.wait();
- Ext.MessageBox.promt();
- Ext.MessageBox.show();
คลาสพื้นฐานสำหรับ Store คือ Ext.data.Store
สำหรับรุ่นคือ Ext.data.Model
สำหรับ Controller คือ Ext.app.controller
นี่คือวิธีต่างๆในการจัดการเหตุการณ์ -
- การใช้ Listeners
- การแนบกิจกรรมในภายหลัง
- ใช้เหตุการณ์ที่กำหนดเอง
Store.getCount() - สำหรับบันทึกที่เก็บไว้
Store.getTotalCount() - สำหรับจำนวนระเบียนทั้งหมดในฐานข้อมูล
Store.getModifiedRecords () ใช้เมธอดเพื่อรับเร็กคอร์ดที่แก้ไข
Store.commitChanges () วิธีการอัปเดตการเปลี่ยนแปลงที่เก็บ
ถ้าเรามี grid Id: Ext.getCmp ('gridId'). getStore (). getAt (index);
ถ้าเรามี Store Id: Ext.getStore ('storeId'). getAt (index);
Store.load ();
- คลาสพื้นฐานสำหรับ Grid - Ext.grid.GridPanel
- สำหรับแบบฟอร์ม - Ext.form.Panel
- สำหรับแผง - Ext.panel.Panel
- สำหรับแผนภูมิ - Ext.chart.Chart
- สำหรับต้นไม้ - Ext.tree.Panel
เลย์เอาต์ประเภทต่างๆ ได้แก่ -
- Absolute
- Accordion
- Anchor
- Border
- Auto
- hBox
- vBox
- Card(TabPanel)
- Card(Wizard)
- Column
- Fit
- Table
สามารถทำได้โดยใช้ pagingToolbar () เป็น -
new Ext.PagingToolbar ({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: 'Displaying topics {0} - {1} of {2}',
emptyMsg: 'No topics to display',
});
// trigger the data store load
store.load({params:{start:0, limit:25}});
dockedItems: [{
xtype: 'toolbar',
items: [{
id:'buttonId',
handler: function() {
Ext.Msg.alert('title','alertMsg');
});
}]
}]
Loadmask ใช้เพื่อป้องกันการดำเนินการอื่น ๆ โดยการแสดงการโหลด (หรือข้อความที่กำหนดเอง) ให้กับผู้ใช้จนกว่าข้อมูลจะถูกส่งไปยังกริด Loadmask: จริง; เป็นคุณสมบัติในการแสดง loadmask ในขณะที่ข้อมูลถูกแสดงไปยังกริด
Renderer ใช้เมื่อเราต้องการจัดการข้อมูลที่ได้รับจากร้านค้าเพื่อแสดงข้อมูลที่ปรับเปลี่ยนตามเกณฑ์บางอย่าง เป็นคุณสมบัติของคอลัมน์ที่สามารถใช้เป็น -
renderer: function(value, metadata, record, rowIndex, colIndex, store){
// logic to perform
}
Ext.getCmp ('id'). getValue ();
ซ่อน: จริง;
เรียงได้: จริง; ซึ่งเป็นค่าเริ่มต้นจริง
grid.getStore().on ({
beforeload : function(store) {
// perform some operation
},
load : {
fn : function(store) {
//perform some operation
},
scope : this
}
store.load();
});
Ext JS 6 มีชุดเครื่องมือซึ่งสามารถรวมองค์ประกอบภาพของทั้งกรอบงาน (Ext JS และ Sencha Touch)
สามารถเพิ่มเป็น -
'toolkit': 'classic', // หรือ 'modern'
หากชุดเครื่องมือเป็นแบบคลาสสิกจะมีเฟรมเวิร์กแอปพลิเคชันเดสก์ท็อป Ext JS
และหากชุดเครื่องมือทันสมัยก็จะรวมเฟรมเวิร์กแอปพลิเคชันมือถือ sencha touch
Next คืออะไร?
นอกจากนี้คุณยังสามารถดูงานที่ได้รับมอบหมายในอดีตของคุณที่คุณทำกับหัวเรื่องและตรวจสอบให้แน่ใจว่าคุณสามารถพูดกับพวกเขาได้อย่างมั่นใจ หากคุณเป็นคนใหม่ผู้สัมภาษณ์ไม่คาดหวังว่าคุณจะตอบคำถามที่ซับซ้อนมากนัก แต่คุณต้องทำให้แนวคิดพื้นฐานของคุณแข็งแกร่งมาก
ประการที่สองมันไม่สำคัญมากนักหากคุณไม่สามารถตอบคำถามสองสามข้อได้ แต่สิ่งที่สำคัญคือสิ่งที่คุณตอบคุณต้องตอบด้วยความมั่นใจ ดังนั้นเพียงแค่รู้สึกมั่นใจในระหว่างการสัมภาษณ์ของคุณ พวกเราขอให้คุณโชคดีที่มีผู้สัมภาษณ์ที่ดีและสิ่งที่ดีที่สุดสำหรับความพยายามในอนาคตของคุณ ไชโย :-)