JavaScript 引擎 SpiderMonkey
SpiderMonkey, 是 Mozilla项目的一部分, 是一个执行JavaScript脚本的引擎.它用 C 实现。还有一个叫做 Rhino的Java版本。此外.Net下也有SpiderMonkeyDotNet,不过目前还不太成熟。
TAG: Javascript Spider SpiderMonkey Mozilla JSAPI
SpiderMonkey, 是 Mozilla 项目的一部分, 是一个执行JavaScript脚本的引擎. 它用 C 实现。还有一个叫做 Rhino的Java版本。此外.Net 下也有 SpiderMonkeyDotNet,不过目前还不太成熟。 我记得我以前所在的公司里有一个server tools 开发组,他们做的事情其实就是调用一个 javascript 引擎,将一些对象封装,然后让测试人员可以写 server test 脚本来进行服务端功能的测试。 其实微软也有一个 Javascript 引擎 ActiveX 组件 Microsoft Script Control 1.0,使用起来更加简单方便,有兴趣的可以自己到网上搜索相关的资料。 具体的介绍就不再多说了,网上有不少资料: 官方网站: 看这两篇基本上够了: 功能强大的JavaScript引擎--SpiderMonkey [自由、创新、研究、探索……] 使用 SpiderMonkey 使 C++应用支持 JavaScript 脚本引擎 [颓废到底] 官方的用户指南,网上的文章大部分也是根据这个来的: 其实我觉得这个最清楚明了,有空的话我准备把他翻译一下: 我这次做的一个简单的应用,我是想用 javascript prototype 中的 toJSON 功能将字符串转换为 JSON 格式,虽然C++中也有一些 JSON的解决方案,不过用起来都不爽,刚开始 JS_CompileFile 怎么也通不过,后来搞清楚原来是 prototype中使用了很多网页上的对象,document, window之类,这些在普通应用程序中当然没有了,后来我把 prototype改了一下,之留下来那些跟toJSON 有关的东西就OK 了,附上代码: 1. void ConvertBufferToJson( char *buf) 2. { 3. uint32 max_gc_size = (8L * 1024L * 1024L); 4. size_t stack_chunk_size = (8192); 5. 6. JSRuntime *rt; 7. JSContext *cx; 8. JSObject *globalObj; 9. JSClass global_class = { 10. "global" ,0, 11. JS_PropertyStub, JS_PropertyStub,JS_PropertyStub, JS_PropertyStub, 12. JS_EnumerateStub, JS_ResolveStub,JS_ConvertStub, JS_FinalizeStub }; 13. 14. /* 初始化JS RunTime,返回结果给rt */ 15. rt = JS_NewRuntime(max_gc_size); 16. if (!rt) return ; 17. 18. /* 创建一个上下文,并将其与JS RunTime关联起来 */ 19. cx = JS_NewContext(rt, stack_chunk_size); 20. if (!cx) return ; 21. 22. /* 创建全局对象 */ 23. if (!(globalObj = JS_NewObject (cx, &global_class, NULL, NULL))) return ; 24. /* 实例化内置对象和全局对象*/ 25. JS_InitStandardClasses (cx, globalObj); 26. 27. /*执行一段脚本*/ 28. JSScript* jScript = JS_CompileFile(cx, globalObj, "prototype.js" ); 29. 30. //JSObject* scriptobj = JS_NewScriptObject(cx, jScript); 31. //JS_AddNamedRoot(cx, &scriptobj, "sy_script"); 32. 33. jsval rval = JSVAL_FALSE; 34. JSBool ok = JS_ExecuteScript(cx, globalObj, jScript, &rval); 35. 36. rval = JSVAL_FALSE; 37. jsval argvs[1]; 38. argvs[0] = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, buf)); 39. 40. ok = JS_CallFunctionName(cx, JS_GetGlobalObject(cx), "GetJsonValue" , 1, argvs, &rval); 41. 42. JSString *retstr = JS_ValueToString(cx, rval); 43. strcpy(buf, JS_GetStringBytes(retstr)); 44. 45. /*释放上下文*/ 46. JS_DestroyContext(cx); 47. /*释放RunTime*/ 48. JS_DestroyRuntime(rt); 49. }
(jh_zzz) |
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200912/8137.html]
· 上一篇:ATL实现定制的 IE浏览器栏、工具栏和桌面工具栏3
· 下一篇:搜索引擎原理读书笔记
相关文章
· 网络爬虫详解 | |
推荐内容
网络蜘蛛或爬虫需要能够下载网页、图片(流)以及登录的Cookies等信息,以下的C#代码...
spider简单的爬虫程序...
一个搜索引擎的模型,从理论上讲,具备上述条件的实体和google没有什么本质上的区别。...
Win32 API 支持抢先式多线程网络,这是编写MFC网络蜘蛛非常有用的地方。SPIDER工程(...
URL的组织和管理考虑到系统自身的资源和时间有限,Spider程序应尽可能的对链接进行筛...
比较两个字符串的相似程度问题,根据比较的标准常用的可以分为两个子问题:类似与DNA...
热点内容
|