เมื่อคุณต้องเผชิญกับปัญหาที่ต้องแก้ไข (และตรงไปตรงมาสมัยนี้ใครไม่เป็น) กลยุทธ์พื้นฐานที่เราใช้โดยคนคอมพิวเตอร์มักเรียกว่า "แบ่งและพิชิต" มันจะเป็นแบบนี้:
- กำหนดแนวคิดของปัญหาเฉพาะเป็นชุดของปัญหาย่อยที่เล็กกว่า
- แก้ปัญหาเล็ก ๆ แต่ละปัญหา
- รวมผลลัพธ์เป็นวิธีการแก้ปัญหาเฉพาะ
แต่“ แบ่งแยกและพิชิต” ไม่ใช่กลยุทธ์เดียวที่เป็นไปได้ นอกจากนี้เรายังสามารถใช้แนวทางทั่วไปเพิ่มเติม:
- กำหนดแนวคิดของปัญหาที่เฉพาะเจาะจงเป็นกรณีพิเศษของปัญหาทั่วไป
- แก้ปัญหาทั่วไปอย่างใด
- ปรับวิธีแก้ปัญหาทั่วไปให้เข้ากับปัญหาเฉพาะ
- Eric Lippert
ฉันเชื่อว่ามีวิธีแก้ปัญหามากมายสำหรับปัญหานี้ในภาษาฝั่งเซิร์ฟเวอร์เช่น ASP.Net/C#
ฉันได้สรุปประเด็นสำคัญบางประการของปัญหาแล้ว
อดีต res.de.js, res.fr.js, res.en.js, res.js (สำหรับภาษาเริ่มต้น)
ปัญหา: ควรแยกไฟล์ทรัพยากรสำหรับแต่ละเพจเพื่อให้เราได้รับข้อมูลที่ต้องการเท่านั้น
วิธีแก้ไข : เราสามารถใช้เครื่องมือบางอย่างที่มีอยู่แล้วเช่น
https://github.com/rgrove/lazyload
ปัญหา: เราต้องการโครงสร้างคู่คีย์ / ค่าเพื่อบันทึกข้อมูลของเรา
วิธีแก้ไข : ฉันแนะนำวัตถุจาวาสคริปต์แทนสตริง / สตริงอากาศ เราสามารถได้รับประโยชน์จาก Intellisense จาก IDE
ปัญหา: สมาชิกทั่วไปควรเก็บไว้ในไฟล์สาธารณะและทุกเพจควรเข้าถึงได้
วิธีแก้ไข : เพื่อจุดประสงค์นี้ฉันสร้างโฟลเดอร์ในรูทของเว็บแอปพลิเคชันชื่อ Global_Resources และโฟลเดอร์สำหรับเก็บไฟล์ส่วนกลางสำหรับแต่ละโฟลเดอร์ย่อยที่เราตั้งชื่อว่า 'Local_Resources'
ปัญหา: สมาชิกแต่ละระบบย่อย / โฟลเดอร์ย่อย / โมดูลควรแทนที่สมาชิก Global_Resources ในขอบเขตของตน
วิธีแก้ไข : ฉันพิจารณาไฟล์สำหรับแต่ละไฟล์
โครงสร้างการใช้งาน
root/
Global_Resources/
default.js
default.fr.js
UserManagementSystem/
Local_Resources/
default.js
default.fr.js
createUser.js
Login.htm
CreateUser.htm
รหัสที่เกี่ยวข้องสำหรับไฟล์:
Global_Resources / default.js
var res = {
Create : "Create",
Update : "Save Changes",
Delete : "Delete"
};
Global_Resources / default.fr.js
var res = {
Create : "créer",
Update : "Enregistrer les modifications",
Delete : "effacer"
};
ไฟล์รีซอร์สสำหรับภาษาที่ต้องการควรโหลดบนเพจที่เลือกจาก Global_Resource - นี่ควรเป็นไฟล์แรกที่โหลดบนเพจทั้งหมด
UserManagementSystem / Local_Resources / default.js
res.Name = "Name";
res.UserName = "UserName";
res.Password = "Password";
UserManagementSystem / Local_Resources / default.fr.js
res.Name = "nom";
res.UserName = "Nom d'utilisateur";
res.Password = "Mot de passe";
UserManagementSystem / Local_Resources / createUser.js
// Override res.Create on Global_Resources/default.js
res.Create = "Create User";
UserManagementSystem / Local_Resources / createUser.fr.js
// Override Global_Resources/default.fr.js
res.Create = "Créer un utilisateur";
manager.js ไฟล์ ( ไฟล์นี้ควรโหลดครั้งสุดท้าย)
res.lang = "fr";
var globalResourcePath = "Global_Resources";
var resourceFiles = [];
var currentFile = globalResourcePath + "\\default" + res.lang + ".js" ;
if(!IsFileExist(currentFile))
currentFile = globalResourcePath + "\\default.js" ;
if(!IsFileExist(currentFile)) throw new Exception("File Not Found");
resourceFiles.push(currentFile);
// Push parent folder on folder into folder
foreach(var folder in parent folder of current page)
{
currentFile = folder + "\\Local_Resource\\default." + res.lang + ".js";
if(!IsExist(currentFile))
currentFile = folder + "\\Local_Resource\\default.js";
if(!IsExist(currentFile)) throw new Exception("File Not Found");
resourceFiles.push(currentFile);
}
for(int i = 0; i < resourceFiles.length; i++) { Load.js(resourceFiles[i]); }
// Get current page name
var pageNameWithoutExtension = "SomePage";
currentFile = currentPageFolderPath + pageNameWithoutExtension + res.lang + ".js" ;
if(!IsExist(currentFile))
currentFile = currentPageFolderPath + pageNameWithoutExtension + ".js" ;
if(!IsExist(currentFile)) throw new Exception("File Not Found");
หวังว่าจะช่วยได้ :)