แนวคิดหลักเบื้องหลังไมโครฟรอนท์เอนด์คือการโหลดโค้ดแบบ Lazy Loading ที่รันไทม์ โดยที่คอมไพเลอร์ Angular ไม่จำเป็นต้องรู้เกี่ยวกับโมดูลฟีเจอร์ Lazy Loading ที่รันไทม์ สิ่งนี้มีประโยชน์อย่างยิ่ง เมื่อหลายทีมกำลังทำงานในโครงการและการปรับใช้อิสระเป็นสิ่งจำเป็นสำหรับประสิทธิภาพการทำงาน
await import('http://localhost:4200').then(m => m.ROUTES)
หากคุณไม่คุ้นเคยกับแนวคิดพื้นฐาน เราขอแนะนำให้คุณอ่านบทความนี้ก่อน:
ในส่วนถัดไป ฉันจะถือว่าคุณรู้อยู่แล้วว่าการเชื่อมโยงโมดูลสามารถใช้เพื่อโหลดไมโครฟรอนท์เอนด์แบบสถิตด้วย URL แบบฮาร์ดโค้ดได้อย่างไร เห็นได้ชัดว่าการมี URL แบบฮาร์ดโค้ดนั้นไม่ดี เนื่องจากเราอาจต้องการใช้ตรรกะบางอย่างที่ตัดสินใจว่าควรโหลดไมโครฟรอนต์เอนด์ใดโดยขึ้นอยู่กับการอนุญาตของผู้ใช้ หรือเพียงแค่ขั้นตอนการปรับใช้ (dev, staging, prod)
ฉันได้สร้าง monorepository ที่มีรีโมต สองตัว (remote1, remote2) และหนึ่งเชลล์ ทั้ง remote1 และ remote2 เปิดเผยคอนฟิกูเรชันการกำหนดเส้นทางในการกำหนดค่า webpack เพื่อให้เชลล์สามารถโหลดคอนฟิกูเรชันการเราต์ได้ เชลล์มีเฉพาะเต้ารับเราเตอร์ที่ใช้เพื่อแสดงรีโมต และยังมีแถบนำทางที่มีลิงค์เราเตอร์หนึ่งอันสำหรับรีโมตแต่ละตัว นี่เป็นรหัสที่จำเป็นสำหรับการนำเสนอโดยพื้นฐาน ส่วนที่ยุ่งยากคือการกำหนดเส้นทางแบบไดนามิกซึ่งอิงตามไฟล์รายการ
ไฟล์ Manifest อย่างน้อยควรใช้ RemoteConfig จาก แพ็คเกจ @angular-architects/module-federationและสามารถขยายคุณสมบัติที่กำหนดเองเพิ่มเติมที่จำเป็นสำหรับแอปพลิเคชันของคุณ ตัวอย่างรายการของฉันขยายดังต่อไปนี้:
ไฟล์ Manifest นี้ควรถูกจัดเก็บไว้ในโฟลเดอร์ asset จากนั้นเราจึงมั่นใจได้ว่าเมื่อทำการบู๊ตสแตรปว่ารีโมตสามารถโหลดได้
ตอนนี้ การกำหนดเส้นทางเป็นปัญหาหลักเพราะเราไม่สามารถแค่เขียนโค้ดคอนฟิกูเรชันการกำหนดเส้นทางแบบคงที่ได้ แต่เราสามารถใช้โทเค็นการพึ่งพาระดับต่ำจากเราเตอร์เชิงมุมเพื่อให้เราสามารถใช้คุณสมบัติuseFactory สิ่งสำคัญคือต้องจัดเตรียมการกำหนดค่าการกำหนดเส้นทางที่ว่างเปล่า จากนั้นเราสามารถเข้าถึงโทเค็นการฉีดROUTES ได้
ฟังก์ชันcreateRoutesเป็นฟังก์ชันยูทิลิตี้ที่ส่งคืนอ็อบเจ็กต์ Routes ตามไฟล์รายการ โดยพื้นฐานแล้ว ไฟล์ Manifest จะถูกทำซ้ำและจับคู่กับการกำหนดค่าเส้นทางโดยใช้ค่าของรายการ ในการโหลดรายการสามารถใช้ฟังก์ชันgetManifest ได้
และนั่นก็เกือบแล้ว สิ่งเดียวที่เหลือคือการเพิ่มลิงค์เราเตอร์ไปยังแถบนำทางแบบไดนามิก คอมโพเนนต์ยังใช้ฟังก์ชัน getManifest และในเทมเพลต เราสามารถวนซ้ำรายการใน ngFor ได้
วิธีการแบบไดนามิกนี้สามารถใช้ได้กับกรณีที่น่าสนใจหลายกรณี รหัสเป็นแบบคงที่ แต่ตรรกะมีอยู่ในไฟล์รายการ ดังนั้นไปป์ไลน์ CI/CD สามารถแลกเปลี่ยนไฟล์ได้ขึ้นอยู่กับระยะ มิฉะนั้น ไฟล์ Manifest สามารถโหลดได้จากแบ็กเอนด์ทั้งนี้ขึ้นอยู่กับการอนุญาตของผู้ใช้ที่เข้าสู่ระบบ หรือจะใช้สำหรับการทดสอบ A/B ก็ได้
“หวัดดี Siri เล่น Me Dive โดย Olivia Dean” ในเดือนพฤษภาคม 2021 ฉันเริ่มฝึกงานที่ Future Academy Africa ในเมือง Akure ประเทศไนจีเรีย
สวัสดีชาวไซเบอร์! ยินดีต้อนรับกลับสู่ OSINT สำหรับซีรี่ส์การล่าภัยคุกคาม ในบทความแรก ฉันได้ให้ภาพรวมของ OSINT และความสำคัญในการตามล่าภัยคุกคาม
เมื่อสัปดาห์ที่แล้วฉันสังเกตเห็นข่าวประชาสัมพันธ์ที่เผยแพร่ผ่าน PressGazette (เว็บไซต์ข่าวของสื่ออังกฤษ) บทความประกาศว่า Acast ซึ่งเป็นบริษัทโฮสติ้งและโฆษณาพอดคาสต์ของ Scandi จะเป็นผู้นำกลุ่มผู้เผยแพร่ "อาจมีอิทธิพลมากที่สุด" ในพอดคาสต์
เมื่อวานนี้ เราปิดการแข่งขัน Eurovision Song Contest ปีนี้ด้วยตอนจบที่สดใสและวุ่นวาย โดย Loreen นักร้องชาวสวีเดนคว้าถ้วยรางวัลกลับบ้าน กลายเป็นผู้หญิงคนแรกที่ชนะสองครั้งและนำมงกุฎกลับมายังสวีเดน 50 ปีหลังจาก ABBA ชนะการแข่งขัน กับ “วอเตอร์ลู” พวกเขากลายเป็นหนึ่งในการแสดงที่ยิ่งใหญ่ที่สุดในวงการเพลงป๊อป
ในโลกที่เชื่อมต่อถึงกันทุกวันนี้ ภัยคุกคามจากการโจมตีทางไซเบอร์นั้นแพร่หลายมากขึ้นกว่าเดิม อาชญากรไซเบอร์และผู้มีบทบาทในระดับชาติพยายามใช้ประโยชน์จากช่องโหว่และขโมยข้อมูลที่มีค่าอย่างต่อเนื่อง ซึ่งก่อให้เกิดความเสี่ยงที่สำคัญต่อองค์กรทุกขนาด
เช้าวันนี้เป็นสีทองอร่ามบนเนินเขาทางทิศตะวันตก เมื่อแสงแรกของแสงแดดส่องให้เห็นหญ้าที่ปกคลุมด้วยน้ำค้างแข็งบนที่ราบ ฝูงวัวแองกัสที่สงบนิ่ง ตัวสีดำสนิทและตัวมหึมา มีเงาสะท้อนยามพระอาทิตย์ขึ้นขณะที่พวกมันเดินไปตามทางที่ไม่ค่อยมีใครรู้จักไปยังสถานที่ที่พวกเขารู้จักดี บาร์อาหารเช้า