Syntax 为什么经典的ASP服务器端包含在注释中?

Syntax 为什么经典的ASP服务器端包含在注释中?,syntax,asp-classic,language-design,Syntax,Asp Classic,Language Design,为什么服务器端包含的语法是 将语义上有意义的内容放在评论中似乎既尴尬又误导人——事实上,我第一次看到这种语法时,就认为它是一个被“注释掉”的包含。设计使用这种语法的语言,而不是像这样的替代方案,背后的原因是什么 (我知道,用简单的替换来解析这个示例替代方案会得到类似于的结果,但是更智能地解析它以避免误用HTML注释应该是很简单的。)我认为主要原因是服务器端处理(在服务器端包含的情况下)直接由IIS处理,然后传递到与内容相关的处理引擎 因此,使用问题中的示例,如果语法是: 然后它直接处理ASP

为什么服务器端包含的语法是

将语义上有意义的内容放在评论中似乎既尴尬又误导人——事实上,我第一次看到这种语法时,就认为它是一个被“注释掉”的包含。设计使用这种语法的语言,而不是像
这样的替代方案,背后的原因是什么


(我知道,用简单的替换来解析这个示例替代方案会得到类似于
的结果,但是更智能地解析它以避免误用HTML注释应该是很简单的。)

我认为主要原因是服务器端处理(在服务器端包含的情况下)直接由IIS处理,然后传递到与内容相关的处理引擎

因此,使用问题中的示例,如果语法是:


然后它直接处理ASP处理语法,这意味着SSI定义在它的方法中不再是通用的

如合同中所述

此指令可用于ASP页、STM页、INC页或具有映射到SSI解释器(Ssinc.dll)或ASP解释器(ASP.dll)的文件扩展名的任何页。如果已安装IIS管理器,则可以修改默认应用程序映射并添加新映射

另外,由于
注释是在服务器端处理的,因此它永远不会到达客户端浏览器,因此HTML语义不受影响


有用的链接

服务器端包含(及其“注释样式”格式)并不局限于ASP/IIS——它用于实现服务器端宏的概念,服务器端宏将直接处理,而无需在客户端上呈现为文本


这里有一个有用的总结:

Ah,所以它在到达ASP解析器之前就已经被处理了。这就可以解释了。谢谢这可能有一些如上所述的实用程序,感谢您的链接和解释。不过,依咪浩,一条评论不应该做任何事情,它应该就在那里。应该使用其他一些语法。。。这应该适用于各种语言、平台等。不幸的是,事实并非如此。无论是谁设计了这个,都违反了一个非常重要的原则。例如,在C++中,将显示注释代码;想象一下,如果它仍然增加x@从技术上讲,JosephDoggie不是一个HTML注释。注释显示为“客户端”,其中SSI是顾名思义的“服务器端”,从不向客户端显示,只有IIS服务器才知道它。在这方面,我认为它们是不可比的。@Lankymart,它仍然被称为注释语法,许多网站甚至称之为注释语法。无论如何,虽然知道SSI是它的正确名称很好,我也很感激,但它仍然非常令人困惑。我的VS版本甚至以绿色突出显示它,就像它是一条评论一样。这是不应该做的事情。我来到“经典ASP”作为经典,当它不是经典的时候,我甚至没有做它。没有这样的语法,生活已经够艰难的了。。。。但是我很感激你的建议!我同意;使用注释语法来表示实际做了一些事情,这真的很奇怪!我有一个长期的背景,在C,C++,和C,并来到经典ASP真正晚在游戏中,它只是看起来“假的”。我看到下面的原因,它们看起来是有效的,但是想象一下,在C++中的一行中包含了一个.h文件,开始了:/我已经知道,Oracle数据库中也会发生这种事情,其中注释可以包含一个“优化器提示”,它改变了查询的处理方式。我不知道为什么语义上有意义的注释会被认为是一个好主意,但显然它们不是web代码的一个特点。很高兴知道,但这只是设计它的人的一个可怕的想法。它的语法仍然非常糟糕——将注释用于实际做某事的东西@JosephDoggie您没有得到它,它不是注释(HTML),而是HTML注释标记(
)中的SSI指令(
include
)。不要比较两者。@Lankymart,见上文