在线客服系统

JavaScript调试器软件架构(2)

时间:2015-04-10 09:53 来源:www.fabiaoba.com 作者:王婷婷等 点击:

  由于本软件使用C#进行开发,所以设计者采用基于C++的V8引擎作为调试器的脚本解释器,并用C#把V8引擎封装起来,作为一个独立的运行模块.通过向CLI提供接口,使得调试器的其他部件能够通过C#函数直接调用V8引擎.封装后的V8引擎提供了C#语言到JavaScript语言的直接映射,能够通过C#语言直接对JavaScript变量赋值;能够获取运行中的JavaScript变量的值;也能够直接获得JavaScript脚本的运行结果.
  2.2 JavaScript调试器的代码检查器
  代码检查器是JSLint标准的封装,JSLint是JavaScript验证工具,它定义了一组比欧洲计算机制造商协会(ECMA)定义更为严格的编码约定,可以扫描JavaScript源代码来查找问题.如果JSLint发现一个问题,便会显示描述这个问题的消息,并指出错误在源代码中的大致位置.代码检查器封装了JSLint,对外开放3个接口:(1)参数配置接口,可以接受参数配置器设置的调试信息;(2)代码解释接口,用于连接JavaScript引擎,将JavaScript提交到引擎中执行;(3)结果输出接口,可以格式化输出错误信息(包括出错的行、字符、错误描述),供结果显示模块进行显示.
  2.3 JavaScript调试器的代码压缩器
  代码压缩器使用了YUICompressor对JavaScript代码进行压缩处理.用户在编辑JavaScript语言时,应当做到格式清晰、注释清楚、变量含义明确.但是这样会导致JavaScript文件的体积变大,不利于网络的传输.于是很有必要对编写的代码进行代码压缩,实现去除注释、去除空格、去除换行、替换长的函数或变量名等操作,将大而松散的JavaScript文件变得小巧而紧凑.
  2.4 JavaScript调试器的参数配置器
  参数配置器主要用于配置整个JavaScript模块的参数,包括代码检查器的参数、压缩器的参数、脚本检查超时时间等.这些配置参数会以xml配置文件的形式保存在本地,当程序执行时,从xml配置文件读取配置信息,存储在程序的临时变量中,以方便程序快速调用.当使用参数配置器进行参数配置后,参数配置器一方面将配置结果存储到xml配置文件,另一方面更新临时变量的配置值,使配置能够马上生效.
  参数配置器配置界面如图3所示.
  2.5 JavaScript调试器的代码辅助子模块
  代码辅助子模块提供JavaScript编辑窗的代码折叠、语法高亮、代码片段、代码缩进功能.代码辅助模块的功能是基于xml配置的,xml中配置了需要高亮的语法关键词、代码缩进空格数、代码片段等信息.
  3 JavaScript调试器的软件架构
  3.1 JavaScript调试器的软件架构
  JavaScript调试器采用了柔性可扩展的软件架构,调试器的底层,为一个软件基础平台,主要用于个模块的接口通讯,基础平台之上,则是各个核心模块,如图4所示.上层模块之间是相互独立的,只要符合模块的接口规范,可以很简易的将功能模块进行优和升级.
  比如Javascript引擎模块,有常见的V8和Rhino,它们通过不同的语言进行编写,通过封装后,都可以动态部署到软件中.又比如常见的代码检查模块,有JSLint和JSHint,它们提供了不同规范程度的语法检查,Javascript调试器的这种柔性架构,能够很方便的在它们之间进行选择,也可以更具实际的需要,选择其他的一些代码检查器.
  通过这种架构的设计,核心的功能都实现了可配置、可替换、可升级.当有新的Javascript标准发布,或者更好的功能模块时,能够快速实现软件升级,而不会对整个系统造成影响.
  3.2 模块间信息传递
  软件使用了松散耦合的设计思想,不同的模块都是独立设计的,在与其他模块进行交互的时候,不直接操作对方模块,而是使用基础平台的接口.本软件主要使用委派的信息交互方式来实现模块间的信息传递.
  委派其实是一个容器,或称为函数指针,里面存放需要调用的接口函数,如图5所示.完全封闭的两个对象A和B.A对象中有一个接口,负责处理传递过来的消息.B对象中定义了委派(Delegate),指向A对象中的Interface A,当B对象需要传递消息时,对委派(Delegate)进行调用(Invoke),将消息传递到A对象,由Interface A对消息进行处理.
  软件中广泛使用了委派来处理不同封闭对象的信息传递.比如代码检查后,将检查结果传递到结果显示模块,就是这样处理的.如图6所示,DocumentForm中包含了ShowDebugResultArr的定义,这个定义指向DebugResultForm对象中的ShowDebugResultAction,当语法检查完成后,检查的结果会通过委派,将语法检查结果传递到错误显示窗口(DebugResultForm)中,DebugResultForm通过函数ShowDebugResultAction来对传过来的信息进行处理和加工,并显示到错误显示窗口中.

www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
  本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/ CSSCI核心/医学投稿辅导/职称投稿辅导。

投稿邮箱:fabiaoba365@126.com
 在线咨询: 投稿辅导275774677投稿辅导1003180928
 在线咨询: 投稿辅导610071587投稿辅导1003160816
 联系电话:13775259981

联系方式
李老师QQ:发表吧客服610071587 陈老师QQ:发表吧客服275774677 刘老师QQ:发表吧客服1003160816 张老师QQ:发表吧客服1003180928 联系电话:18796993035 投稿邮箱:fabiaoba365@126.com
期刊鉴别
  • 刊物名称:
  • 检索网站:
热门期刊
发表吧友情提醒

近来发现有些作者论文投稿存在大量剽窃、抄袭行为,“发表吧”对此类存在大量剽窃、抄袭的论文已经停止编辑、推荐。同时我们也提醒您,当您向“发表吧”投稿时请您一定要保证论文的原创性、唯一性,这既是对您自己负责,更是对他人的尊敬。

此类投稿的论文如果发表之后,对您今后的人生和事业将造成很大的麻烦,后果不堪设想,请您一定要慎重,三思而后行。

如因版权问题引起争议或任何其他原因,“发表吧”不承担任何法律责任,侵权法律责任概由剽窃、抄袭者本人承担。

 
QQ在线咨询
陈老师:275774677
张老师:1003180928
李老师:610071587
刘老师:1003160816
论文刊登热线:
137-7525-9981
微信号咨询:
fabiaoba-com

友情链接

申请链接