本文共 2253 字,大约阅读时间需要 7 分钟。
Lv2的设计在下面开始。
以下:
1、 具体的流程设计
2、 Lv2的设计,有tab,table,togglebutton,tree等等
首先呢,就是关于具体的流程设计。
在lv1中讨论了engine如何对其进行解析,不过,总体的流程应该如何去做,这个也是现在要讨论的问题。
首先是测试方案。
也就是如何来测试这些脚本,而不是一上来就开始写engine。
测试的方案也是比较easy的。
首先,我们要了解这个测试里有什么。
我们知道,如果说要解析一个guixml文件,一个xml文件是必不可少的,如果没有这个文件的话我们解析什么呢。。所以,在这里会有一个模块叫做:XML Files。
其次,就是最重要的部分了,就是engine模块。
然后呢,就是view的模块了,这里我们同一叫做为:Web Browser。
这三个模块组成了最基本的可能的测试模块流程之一:
XML FILES à JS ENGINE à WEB BROWSER
为什么说是之一呢,因为,在测试的过程中,有可能不是这样的顺序。
下面我把可能的测试方案都列举出来。。
方案1
Xml files ------ selected by ---à web browser ----use---à js engine -----show in the-----à web browser
因为想到我那个打印机怎么打都打不出visio的线,同时啊,visio的图也可能不能发到网上去,大家就先这样凑活的看。。
上面的流程其实就是在浏览器中直接选择一个文件来进行解析。这个方法是最直观的方法了。
方案2
web browser ---load--àxml file ----use---à js engine ---show in the ----à web browser
你可能会认为,这两个不是一样么。。其实还是有一点点的不同了。因为这样子的话,可以通过body的一个叫做onload的attribute来读取这个xml文件,而不是需要进行选择才能够执行。这个就是方案1和方案2的区别。
方案3
Js engine ----include------à xml files ------to show in the-----àweb browser
这里,js engine 会写入xml文档而不是html文档中的调用,也就是说,需要考虑到,xml文档和js engine之间存在的一个关系,是否需要有方案3这样的混合xml文档呢?这个有待考虑。不过,按照软件工程来看,这个方法虽然在效果上很不错,但是啊,并不是一个很好的工程。因为之间出现了强耦合。
Ok。现在我们再来看看解析器要做的事情。
这个parser有很多的表,对吧。恩。那么,这个解析器要如何去解析这样的表呢,或者说,如何去解析xml文件后把这些attribute怎样的放入这个表。。
当xml file通过上面三种方案的任意一种read进入内存的时候,解析器开始工作。这里使用的解析工具是Microsoft.xmldom。这个activeObject。有一点需要注意,就是,JavaScript也是区分大小写的。不要再这个上面出现错误。
通过dom,我们可以很容易的得到attribute和value。包括component的attribute以及component需要的value。为什么这样子说呢,打一个比方:
现在有一个这样的xml片段:
<attribute name= “value”>click_me</attribute>
Ok,相对于attribute来说,他有一个attribute叫做name,那么这个name有一个value叫做value,也就是说,这个attribute拥有一个attribute叫做“name=value”。那么现在再来看那个click_me。从逻辑上来看,click_me是value的value。也就是component的value,而name的value中的value相当于是component的attribute。所以说,我们同样需要得到“value= click_me”这一项attribute。
有点绕哈。。哇,我能写出这样纠结的东西~
那么解析的第一步,我们可以创建一个复合表。将这些attribute和value一点一点的对应出来,为我们像component表和attribute表输入数据做好前提准备。
这个复合表的设计如下:
Component 名称 | |
Attribute1 | Value1 |
Attribute2 | Value2 |
。。。 | 。。。 |
举个例子:
click_me | |
Type | Button |
Text-align | middle |
。。。 | 。。。 |
哦。这里就需要注意啦,这里仅仅考虑只有一个frame的情况。如果有多个frame的话,需要建立一个frame的container来包含这些。
Frame的container:
Frame 名称 |
包含的复合表的子表们 表1 表2 。。。。。。。。 |
采用这样的方法来进行约束。
那么,在后期读取的时候,可以采用vb中的对象方式。也就是frame1.click_me这样的形式进行,这样会让整个的开发清晰,那么同时也提出了需要一个解析这样的对象方式的方法的需求。在test中已经能够实现这样的读取了,通过js的split来进行分割。
哦。休息一下,把这些传上去,然后慢慢来。。
转载地址:http://menpi.baihongyu.com/