Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

介绍

ahtml 是一个服务端脚本语言。ahtml 以 AAuto 作为母语言,即可以实现在 html 中嵌入 AAuto 代码,嵌入规则很简单,与 php 类似:

<?
var tab = { "Hello"; "world" };
?>
...
<body>
<?
for (index, content in tab) {
  response.write("<p>第", index, "条: ", content, "</p>", '\r\n');
}
?>
</body>
...

如果你希望代码读起来更加优美,也可以这样写:

...
<body>
<? for index, content in tab begin ?>
	<p>第<?=index?>条: <?=content?></p>
<? end ?>
</body>
...

运行环境

操作系统需求

ahtml 需要运行在 Windows 操作系统下,且 Windows 平台必须高于 Windows 2000。

其他需求

由于 ahtml 是一个 FastCGI 应用,而且目前 ahtml 仅支持通过命名管道 (Named pipe) 的方式同 Web 服务器(FastCGI 宿主)实现数据交互,您需要一个支持 FastCGI 的 Web 服务器软件(如 IIS)。

配置

Windows 2003 Server + IIS 6

下载源码并发布为 exe 文件

下载或检出最新的工程源码文件,用 AAuto Quicker 将工程发布为 exe 文件。

下载并安装 FastCGI for IIS6

IIS6 默认不支持 FastCGI,需要下载扩展。

下载地址: http://www.iis.net/downloads/microsoft/fastcgi-for-iis

配置 FastCGI

在命令提示符下运行:
cscript fcgiconfig.js -add -section:"ahtml" -extension:ahtml -path:"{所在文件夹}/ahtmlcgi.exe"

如果服务器不支持或禁用了 cscript,请用记事本程序打开并编辑 %WINDIR%\system32\inetsrv\fcigext.ini,在其末尾添加:

[Types]
ahtml=ahtml
[ahtml]
ExePath={所在文件夹}/ahtmlcgi.exe

(其中的 {所在文件夹} 应替换为第一步发布的 exe 所在的文件夹路径)

配置 IIS 使之与 FastCGI 协同工作

  1. 右击“网站”(或指定站点)选择“属性”,单击“主目录”选项,点击“配置”按钮。
  2. 单击”添加“按钮,单击”浏览“,选中 %WINDIR%\system32\inetsrv\fcgiext.dll。
  3. 在扩展名里输入 .ahtml,动作选择“限制为”,输入 GET,HEAD,POST。
  4. 确认“脚本引擎”和“检查文件是否存在”是否选择,如没选中,请选中。
  5. 确认无误后,单击“确定”。

重启 IIS

在命令提示符中输入并运行:iisreset。

Windows Server 2008 (或 Windows 7) + IIS7 及以上

下载源码并发布为 exe 文件

下载或检出最新的工程源码文件,用 AAuto Quicker 将工程发布为 exe 文件。

启用 FastCGI 组件

Windows Server 2008 或 Server 2008 R2 UI
  1. 单击“开始”,指向“管理工具”,然后单击“服务器管理器”。
  2. 在“角色摘要”中,单击“添加角色”。
  3. 使用“添加角色向导”添加“Web 服务器 (IIS)”角色。
  4. 有关如何安装默认 IIS 7 Web 服务器的详细说明,请参阅 部署静态内容服务器 (IIS 7)。
  5. 在“选择角色服务”页上,请记下默认情况下安装的预选角色服务,然后选择以下附加的角色服务:
    CGI
  6. 在“要安装的功能摘要”页上,确认所做的选择,然后单击“安装”。
  7. 在“安装结果”页上,确认已经成功安装了 Web 服务器 (IIS) 角色和所需角色服务,然后单击“关闭”。
Windows Vista 或 Windows 7 UI
  1. 单击“开始”,然后单击“控制面板”。
  2. 在“控制面板”中,单击“程序”,然后单击“打开/关闭 Windows 功能”。
  3. 在“Windows 功能”对话框中,单击“Internet 信息服务”以安装默认的功能,然后在“应用程序开发功能”部分中选择以下附加功能:
    CGI
  4. 单击“确定”以关闭“Windows 功能”对话框。

下载并安装 Administration Pack

用于 FastCGI 配置。IIS 7.5 及以上无需操作此步骤。

下载地址:http://www.iis.net/downloads/microsoft/administration-pack

配置 IIS 使之与 FastCGI 协同工作

  1. 打开 IIS 管理器,选中根节点(或指定站点),在右侧“功能视图”中双击进入“处理程序映射”。
  2. 在右侧的“操作”面板中单击“添加模块映射”链接,将弹出“添加模块映射”对话框。
  3. 在“请求路径”中输入 *.ahtml,在“模块”下拉框中选中“FastCgiModule”。
  4. 单击“可执行文件”右侧的“...”按钮,查找并选中刚才生成的 ahtmlcgi.exe 文件,在“名称”中填写 ahtml。
  5. 单击“请求限制...”按钮,在弹出的“请求限制”对话框中的“映射”选项卡中选中“仅当请求映射至以下内容时才调用处理程序”,并选择“文件”。
  6. 单击“确定”按钮关闭“请求限制”对话框。
  7. 单击“确定”按钮关闭“添加模块映射”对话框。

以上操作确认无误后,请重启 IIS。

重启 IIS

使用管理员权限运行命令提示符,在命令提示符中输入并运行:iisreset。

语法

基本语法

ahtml 以 AAuto 作为母语言,因此 ahtml 支持 AAuto 所有的语法特性(包括基本流程语句、库引用机制等)。

标准库

除 AAuto 内核库之外,ahtml 会自动引入一些标准库。另外,并不是所有的 AAuto 标准库都可以在 ahtml 中被引入。下面的表格展示了自动引入的标准库以及可引入的标准库。

库名称 是否自动引入
com 是
console 是
fsys 否
util 是

扩展库

ahtml 也会引入 AAuto 中的一些扩展库。

库名称 是否自动引入
mysql 是
preg 否

用户库

除标准库、扩展库之外,用户可自定义用户库。ahtml 文件同目录下可以新建一个名为 lib 的文件夹,其中的库文件即为“用户库”,可在 ahtml 文件中被引入(用法同 AAuto 的用户库相同)。

扩展对象

ahtml 作为服务端语言,同时作为 FastCGI 应用,需要处理来自 Web 服务器的客户端请求并作出响应。

简单地说,ahtml 的扩展对象有两个:

类型 对象名
请求对象 request
响应对象 response

请求 (request) 对象

请求对象是用来获取来自 Web 服务器的客户端请求信息的(如 Web 服务端、站点信息,Query String、POST Data、附加协议头等)。

就目前而言,request 对象有四个键值对成员:

成员名 用途
server 来源于服务器的信息,相当于 PHP 中的 ``$_SERVER`` 数组
post 客户端的 POST Data,相当于 PHP 中的 ``$_POST`` 数组
get 客户端的 Query String,相当于 PHP 中的 ``$_GET`` 数组
cookie 客户端的 COOKIE,相当于 PHP 中的 ``$_COOKIE`` 数组

其操作方法如同 AAuto 中的普通键值对一样(需要注意的是,request.cookie 比较特殊,不支持直接遍历。

范例:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>request.server 测试</title>
</head>
<body>
<table>
	<tr>
		<th>键名</th>
		<th>值</th>
	</tr>
	<? for key, value in request.server begin ?>
	<tr>
		<td><?=key?></td>
		<td><?=value?></td>
	</tr>
	<? end ?>
</table>
</body>
</html>

需要注意的是,实际应用时应在输出前转义 html 字符,以避免 XSS 攻击。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors