รหัสนี้อยู่ในไฟล์ชื่อ route.js
สิ่งต่อไปนี้ใช้ไม่ได้สำหรับฉัน:
var scripts = document.getElementsByTagName("script")
var currentScriptPath = scripts[scripts.length-1].src;
var baseUrl = currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1);
สิ่งต่อไปนี้ทำ:
var bu2 = document.querySelector("script[src$='routes.js']");
currentScriptPath = bu2.src;
baseUrl = currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1);
การทดสอบของฉันอ้างอิงจากบล็อกต่อไปนี้เกี่ยวกับการใช้ need to lazy load angular:
http://ify.io/lazy-loading-in-angularjs/
require.js ทำให้เกิดการบูต requireConfig
requireConfig เริ่มต้นแอปเชิงมุม js
แอพเชิงมุม js เริ่มต้นเส้นทางของฉัน js
ฉันมีรหัสเดียวกันที่ใช้โดย revel web framework และ asp.net mvc ใน revel document.getElementsByTagName ("script") สร้างเส้นทางไปยังไฟล์ js ที่ต้องการ bootstrap ของฉันและไม่ใช่เส้นทางของฉัน js ใน ASP.NET MVC จะสร้างเส้นทางไปยังองค์ประกอบสคริปต์ Browser Link ของ Visual Studio ที่ใส่ไว้ในระหว่างเซสชันการดีบัก
นี่คือรหัสเส้นทางการทำงานของฉัน js:
define([], function()
{
var scripts = document.getElementsByTagName("script");
var currentScriptPath = scripts[scripts.length-1].src;
console.log("currentScriptPath:"+currentScriptPath);
var baseUrl = currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1);
console.log("baseUrl:"+baseUrl);
var bu2 = document.querySelector("script[src$='routes.js']");
currentScriptPath = bu2.src;
console.log("bu2:"+bu2);
console.log("src:"+bu2.src);
baseUrl = currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1);
console.log("baseUrl:"+baseUrl);
return {
defaultRoutePath: '/',
routes: {
'/': {
templateUrl: baseUrl + 'views/home.html',
dependencies: [
'controllers/HomeViewController',
'directives/app-style'
]
},
'/about/:person': {
templateUrl: baseUrl + 'views/about.html',
dependencies: [
'controllers/AboutViewController',
'directives/app-color'
]
},
'/contact': {
templateUrl: baseUrl + 'views/contact.html',
dependencies: [
'controllers/ContactViewController',
'directives/app-color',
'directives/app-style'
]
}
}
};
});
นี่คือเอาต์พุตคอนโซลของฉันเมื่อเรียกใช้จาก Revel
currentScriptPath:http:
baseUrl:http:
bu2:[object HTMLScriptElement] routes.js:13
src:http:
baseUrl:http:
สิ่งที่ดีอีกอย่างที่ฉันได้ทำคือการใช้ประโยชน์จากการกำหนดค่าที่ต้องการและใส่การกำหนดค่าที่กำหนดเองลงไป เช่นเพิ่ม
customConfig: { baseRouteUrl: '/AngularLazyBaseLine/Home/Content' }
จากนั้นคุณสามารถรับได้โดยใช้รหัสต่อไปนี้จากด้านในของ route.js
var requireConfig = requirejs.s.contexts._.config;
console.log('requireConfig.customConfig.baseRouteUrl:' + requireConfig.customConfig.baseRouteUrl);
บางครั้งคุณต้องกำหนด baseurl ล่วงหน้าบางครั้งคุณต้องสร้างแบบไดนามิก ทางเลือกของคุณสำหรับสถานการณ์ของคุณ