服务器端: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! |
|