Я пишу некоторые сценарии серверной стороны с помощью JScript и WSH. Сценарии становятся довольно длинными, и некоторые общие функции, и переменные подошли бы лучше к общему сценарию библиотеки, который я включал в свои различные экземпляры сценария.
Но, я не могу найти, что путь ссылается на один файл JScript от другого. На мгновение, я, хотя читая содержание файла и передавая его eval()
мог работать. Но, поскольку это говорит относительно MSDN:
Обратите внимание, что новые переменные или типы, определенные в операторе оценки, не видимы к программе включения.
Там какой-либо путь состоит в том, чтобы включать/ссылаться файл JScript от другого?
Попробуйте использовать файл сценария Windows . По сути, это XML-документ, который, помимо прочего, позволяет вам включать несколько файлов сценариев и определять несколько заданий.
<!-- MyJob.wsf -->
<job id="IncludeExample">
<script language="JScript" src="MyLib1.js"/>
<script language="JScript" src="MyLib2.js"/>
<script language="JScript">
WScript.Echo(myLib1.foo());
WScript.Echo(myLib2.bar());
</script>
</job>
Хорошо, я нашел достойное решение:
// A object to which library functions can be attached
var library = new Object;
eval((new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile("common_script_logic.js", 1).ReadAll());
// Test use of the library
library.die("Testing library");
Я создаю объект, к которому могу прикрепить свои библиотечные функции. Таким образом, я могу обращаться к коду, определенному в моей библиотеке, из вызывающего скрипта. Не идеально, но вполне приемлемо.
Было бы здорово увидеть более правильное решение :-)