如何从另一个同样用 Javascript 编写的经典 asp 文件中包含一个用 Javascript 编写的经典 asp?

How to include a classic asp written in Javascript from another classic asp file also written in Javascript?

我正在做一个经典的 ASP 项目,很遗憾无法切换到其他技术。我了解到可以在 Javascript (ES3) 中编写服务器端经典 ASP 代码,所以我做了一些调查,但我找不到从我的 JS 中包含另一个基于 JS 的 ASP 文件的方法基于 ASP 文件。

这是我要导入的基于 JS 的 ASP 文件:

includejs.asp

<%@ Language=JavaScript %>

<%
function myFunction(p1, p2) {
    return p1 + p2;
}

%>

并且我尝试了以下两种方法,都没有用

myjs1.asp

<%@ Language=JavaScript %>

<script language="JScript" runat="server" src="./includejs.asp"></script>

<%
    // myFunction is from another file
    Response.Write(myFunction(20,2));
%>

myjs2.asp

<%@ Language=JavaScript %>

<!--#include virtual="./includejs.asp" -->

<%
    // myFunction is from another file
    Response.Write(myFunction(20,2));
%>

我的发现

我第一次尝试就能够导入如下所示的纯 javascript 文件

function myFunction(p1, p2) {
    return p1 + p2;
}

但我想包含一个 ASP 包装 javascript 以便我也可以包含包含的 Js 文件中的其他文件。

我终于明白了。感谢@Flakes 关于我不应该在包含文件中再次放入 <%@ Language=JavaScript %> 的评论,这正是我上面的第二种方法不起作用的原因。

在这里我放了一个更复杂的工作示例,以防万一有人需要它。

myjs.asp 包括 lib.asp 其中包括 lib2.asp

myjs.asp - lib2() 函数来自 lib2.asp,包含在 lib.asp

<%@ Language=JavaScript %>

<!--#include file="lib.asp" -->

<%
    Response.Write(lib());
    Response.Write(lib2());
%>

lib.asp

<!--#include file="lib2.asp" -->

<%
function lib() {
    return "this is lib.asp";
}
%>

lib2.asp

<%
function lib2() {
    return "this is lib2.asp";
}

function myFunction2(p1, p2) {
    return p1 * p2;
}
%>

很多事情都可能出错,所以你必须注意每一个细节。

需要注意的一件事是,如果您像我一样使用相对路径并且您的 lib.asp 在同一目录中,则必须使用 file=... 而不是 virtual=... 在 #include 语句中。检查 here 以查看有关包含指令中的文件与虚拟的更多详细信息