服务器端:simpleModule.c
#include
#include
#include "/usr/lib/appweb/inc/appweb.h"
#include "/usr/lib/appweb/inc/ejs.h"
EjsVar *MyFunction(Ejs *ejs, EjsVar *thisObj, int argc, EjsVar **argv)
{
int i = 1;
if ( i == 1) {
ejsWrite(ejs, "
Hello Linux
"); }
else{
ejsWrite(ejs, "
Hello World
"); }
return 0;
}
MprModule *maSimpleModuleInit(MaHttp *http)
{
MprModule *module;
Ejs *ejs;
/**
*创建Module
*simpleModule为模块的名字
*3.3.4为appweb版本号
**/
module = mprCreateModule(http, "simpleModule", "3.3.4", NULL, NULL, NULL);
if (module == 0)
return 0;
ejs = ejsGetMaster(http);
//绑定自己的C函数
ejsDefineGlobalFunction(ejs, "myTest", MyFunction);
return module;
}
这里两个重点:
1、创建模块mprCreateModule(),模块的名字必须是独一无二的;
2、绑定c函数ejsDefineGlobalFunction();访问的时候通过绑定后的函数名访问c函数,即myTest();
编译生成动态库:gcc simpleModule.c -fPIC -shared -o mod_test.so -L /usr/lib/appweb/lib -lappweb -lajs
将动态库拷贝到/usr/lib/appweb/modules目录下面(该目录是appweb.conf配置文件指定搜索路径)
在appweb里面添加模块加载:(这一步还是很重要的)在appweb.conf的ejs模块加载后填上这句
LoadModule simpleModule mod_test
simpleModule:就是我们的模块名字
mod_test:是动态库的名字
客户端:hello.ejs:
welcome to appweb ejs:<% myTest() %>
这样建立的hello.ejs不能直接使用,需要经过编译
ajsweb hello.ejs
出现[BUILD]: hello.ejs代表编译成功,相应的会有hello.mod生成(这个mod文件的生成困扰了我一段时间。。。)
运行appweb --config /etc/appweb/appweb.conf
在浏览器输入127.0.0.1/hello.ejs即可看到结果:
welcome to appweb ejs:
Hello Linux
OK!
阅读(4060) | 评论(0) | 转发(0) |