一. 前言
GoAhead提供了一个Javascript的嵌入式版本,用于JST页面中。由于完整的Javascript 6规范是一个相当大的语言,GoAhead的实现了一个适合嵌入式使用的小子集。GoAhead Javascript™是Javascript的一个严格的子集,实现了该语言的基本元素。它还为JST页面提供了引擎,使动态网页的创建变得容易。
作为一个独立的产品,Embedthis Ejscript™更全面地支持最新的Javascript 6规范,当与Appweb嵌入式网络服务器一起使用时,如果你有足够的可用内存,它是GoAhead的替代品。
二. 嵌入式Javascript使用
当GoAhead Javascript在JST网页内使用时,它由JST定界符内的脚本组成。基本的格式如下:
<% function(arguments, ...); %>
Javascript函数是由jsSetGlobalFunction创建的。当函数被评估时,实现Javascript函数的相应C程序被调用。
举例:
嵌入式主要是用于将系统的数据显示到web页面上,当刷新页面时,嵌入到web的回调函数将被调用,如下:
static int form_syslog(int ejid, Webs *wp, int argc, char **argv)
{
if (1 == argc)
{
if (!strcmp(argv[0], "syslog.priority_error"))
{
if (4 == ....)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.priority_warning"))
{
if (5 == ....)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.priority_notice"))
{
if (6 == ....)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.priority_info"))
{
if (7 == ....)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.priority_debug"))
{
if (8 == ....)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.log_size"))
{
websWrite(wp, "%s", _uci_get("syslog[0].log_size"));
}
else if (!strcmp(argv[0], "syslog.position_ram"))
{
if (0 == ...)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.position_rom"))
{
if (1 == ...)
{
websWrite(wp, "%s", "selected");
}
}
else if (!strcmp(argv[0], "syslog.position_console"))
{
if (2 == ...)
{
websWrite(wp, "%s", "selected");
}
}
}
return 0;
}
/* web html节选 */
<form method="post" action="/action/syslog" class="syslog-form">
<p>
<label>priority:</label>
<select name="syslog.priority">
<option value="4" <% form_syslog("syslog.priority_error"); %> >error</option>
<option value="5" <% form_syslog("syslog.priority_warning"); %> >warning</option>
<option value="6" <% form_syslog("syslog.priority_notice"); %> >notice</option>
<option value="7" <% form_syslog("syslog.priority_info"); %> >info</option>
<option value="8" <% form_syslog("syslog.priority_debug"); %> >debug</option>
</select>
</p>
</form>
当如下html代码由GoAhead发送到客户端之前,会先调用form_syslog,将<% %>中的内容替换为form_syslog调用webWrite写的内容。
三. 总结
本文介绍了GoAhead内嵌的JavaScript的作用,举例了基本的使用方法。