Bu kod, route.js adlı bir dosyadadır.
Aşağıdakiler benim için işe yaramadı:
var scripts = document.getElementsByTagName("script")
var currentScriptPath = scripts[scripts.length-1].src;
var baseUrl = currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1);
şu yaptı:
var bu2 = document.querySelector("script[src$='routes.js']");
currentScriptPath = bu2.src;
baseUrl = currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1);
Testim, need to lazy load angular kullanımıyla ilgili şu bloga dayanıyor:
http://ify.io/lazy-loading-in-angularjs/
required.js bir requireConfig önyükleme başlatır
requireConfig, açısal bir app.js oluşturur
açısal app.js, rotalarımı başlatıyor.js
Bir revel web çerçevesi ve asp.net mvc tarafından sunulan aynı koda sahiptim. Revel'de document.getElementsByTagName ("script"), gerekli bootstrap js dosyama giden bir yol üretti ve route.js'mi DEĞİL. ASP.NET MVC'de, hata ayıklama oturumları sırasında oraya yerleştirilen Visual Studio'nun enjekte edilen Tarayıcı Bağlantısı komut dosyası öğesine bir yol üretti.
bu benim çalışma rotaları.js kodum:
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'
]
}
}
};
});
Bu, Revel'den çalışırken konsol çıktım.
currentScriptPath:http:
baseUrl:http:
bu2:[object HTMLScriptElement] routes.js:13
src:http:
baseUrl:http:
Yaptığım bir başka güzel şey de, gerekli yapılandırmadan yararlanmak ve içine bazı özel yapılandırmalar koymak. yani ekle
customConfig: { baseRouteUrl: '/AngularLazyBaseLine/Home/Content' }
daha sonra aşağıdaki kodu route.js'nin içinden kullanarak alabilirsiniz.
var requireConfig = requirejs.s.contexts._.config;
console.log('requireConfig.customConfig.baseRouteUrl:' + requireConfig.customConfig.baseRouteUrl);
bazen bir baseurl'yi önceden tanımlamanız gerekir, bazen de dinamik olarak oluşturmanız gerekir. Durumunuz için seçiminiz.