สวัสดีครับ ในบทความนี้จะเกี่ยวกับ Peer dependencies ใน npm ครับ
ในบางครั้งถ้าเราต้องการจะสร้าง Library A และ Plugin B ที่ใช้งานร่วมกันตัวอย่างเช่น
import A from 'A';
import B from 'B';
A.addPlugin(new B());
A.doSomeThing();
จากตัวอย่างด้านบน หมายความว่า Plugin B จะต้อง Implement ให้สามารถใช้งานใน Library A ได้
ปัญหาคือ ถ้า Library A มีการเปลี่ยน version และมีการเปลี่ยนแปลงอะไรบางอย่างที่ทําให้ Plugin B ไม่สามารถใช้งานได้อีกต่อไป จึงทําให้เกิดปัญหาขึ้นมา
Peer dependencies จะมาช่วยแก้ปัญหานี้คือ จะช่วยบอก npm ว่า Plugin B จะสามารถใช้งานกับ Library A version อะไรได้บ้าง
ตัวอย่างการกําหนด peerDependencies ให้กับ Plugin B
{
"name": "B",
"version": "1.0.0",
"peerDependencies": {
"A": "2.x"
}
}
จากตัวอย่างด้านบน หมายความว่า Plugin B v1.0.0 จะสามารถใช้งานร่วมกับ Library A v2.x ได้ แต่ใน Library A version อื่นๆนอกเหนือจากนี้ อาจจะไม่สามารถทํางานร่วมกันได้
ใน npm version 3-6 จะขึ้น Warning กรณีที่ version ของ package ใน peerDependencies ไม่ตรงกันกับ package ที่อยู่ใน node_module
แต่ ใน npm version 7 จะทําการ Install package ใน peerDependencies ให้โดยอัตโนมัติ ทําให้เกิด Conflic และ Error ขึ้นกรณีที่ ใน node_module มี package version อื่น อยู่แล้ว ซึ่งเราสามารถแก้ปัญหาได้โดยใช้ —legacy-peer-deps ตอนใช้คําสั่ง npm install เพื่อบอก npm ว่าไม่ต้อง Install ให้ แค่แสดง Warning ขึ้นมาเฉยๆพอ เหมือนกับ npm version 3-6
$ npm install --legacy-peer-deps <your package> OR gate เป็นวงจร digital ชนิดหนึ่ง โดย input ที่ป้อนให้กับวงจรในแต่ละขา จะเป็นได้สองสถานะคือ High, Low หรือ 0, 1
ในปัจจุบันเทคโนโลยี Internet มีการพัฒนาอย่างรวดเร็วทําให้เราเข้าถึง และใช้งาน Internet มากขึ้น ทําให้เกิดธุรกิจที่เกี่ยวข้องกับ Internet จํานวนมาก ร้านค้าใช้ Internet มาช่วยในการดําเนินธุรกิจ ในบทความนี้ผมจะพูดเกี่ยวกับ Payment Gateway หรือช่องทางการชําระเงินออนไลน์ของผู้ให้บริการเจ้านึงคือ Omise และมาลองเปรียบเทียบกับ Payment Gateway เจ้าอื่นๆ
Delegate คืออะไรDelegate จะเก็บตําแหน่ง Address ของ Method ที่ต้องการจะเรียกใช้ ทําให้เราสามารถเรียกใช้ Method ใดๆ ผ่าน Delegate ได้ คุณอาจจะสงสัยว่า ทําไมไม่เรียกใช้ Function ตรงๆไปเลย ข้อดีของการเรียกผ่าน Delegate คือสามารถเรียก Mathod ของ Class อื่นได้