Я работаю над проектом, который содержит несколько функций, поэтому я пытаюсь организовать каждую функцию в отдельном файле JavaScript таким образом, чтобы код мог быть загружен по требованию. Я хочу стандартизировать процесс загрузки и выполнения, поэтому я пытаюсь разработать функцию, которая может загружать и выполнять файл JavaScript, если он отсутствует в памяти, или просто выполнить его, если он уже загружен. Один из подходов заключался бы в том, чтобы заставить функцию требовать два параметра, имя файла и имя функции точки входа, а затем проверить, загружен ли сценарий, если он просто выполняет функцию точки входа, или если это не так, тогда загрузить сценарий и при событии onload выполнить функцию точки входа, этот подход работает отлично, но для этого главный модуль должен знать все имена функций точки входа, которые в будущем могут стать болью в шее, поскольку небрежный программист может непреднамеренно дублирует имя функции. Более чистый и безопасный подход будет состоять в том, чтобы называть «основные» все функции точки входа, а при первом запуске ассоциировать «главный» с его объектом DOM объекта ... более или менее следующим образом:Как получить имя исполняемого файла JavaScript?
Загруженный модуль:
function(){
function main(){
.
. some code here
.
}
Install(getThisFileName(),main);
}();
Основной модуль:
function Load(fn){
var el,ff,i
el = document.getElementsByTagName("script");
ff = "http://"+window.location.host+fn;
for(i=el.length-1;i>=0;i--){
if(el[i] && el[i].src==ff){
el[i].Main();
return;
}
}
el = document.createElement("script");
el.type = "text/javascript";
el.src = ff;
}
function Install(ff,ep){
var el,i;
el = document.getElementsByTagName("script");
for(i=el.length-1;i>=0;i--){
if(el[i] && el[i].src==ff){
el[i].Main = ep;
ep();
return;
}
}
}
Но для того, чтобы сделать это мне нужно знать имя файла JavaScript выполняется, который я не знаю, если это вообще возможно. Есть идеи?
Рассмотрите возможность использования requirejs, head.js или других загрузчиков сценариев. – SLaks
Я второй @ предложение SLaks. Как кто-то, кто реализовал много одноразовых загрузчиков JavaScript, могу сказать вам, что гораздо менее болезненно использовать чужую работу. –