资源描述
NoahWeb应用——模组资源
这次给大家介绍一下NoahWeb中的模组,模组Module和动作Action一样,都是NoahWeb中的逻辑层部分,如果你对动做有所了解的话,会对你学习模组有很大的帮助,动作中可以实现的功能和语法,在模组中你都可以实现。关于模组,你可以暂时把它理解为面向对象的‘方法’,大家都知道方法是一段被封装好的代码,在使用的时候只要调用这个方法的名称就可以了,这样可以很大程度上减少代码量而且易于维护,模组的使用同样可以达到这个效果,而且在表现层和逻辑层都可以调用,这样也可以体现出代码的重用。好了下面就具体给大家说一下模组。
首先我们来看看一段模组文件的代码:
<?xmlversion="1.0"encoding="gb2312"?>
<ModulesNameSpace="siteroot">
</Modules>
上面的代码是一个空的模组文件,里面没有任何内容,只有一个简单的描述,由代码可以看出模组文件是使用XML格式来描述的。第二行中有个名称空间的声名<Modules NameSpace="siteroot">,‘siteroot’是一个名称空间,名称空间下的资源文件都存储名称空间所对应的目录下的config文件夹中,反过来说一个目录中的config文件中的所有资源都属于一个名称空间,而模组里的代码就存储在当前名称空间下的Module.xml.config这个文件里面,例如,你的站点存在D盘下,根站点名称为demo,"siteroot"是这个站点的根目录下的名称空间,则"siteroot"下的Module.xml.config这个文件就存储在D:\demo\config下面。
因此不同名称空间下的模组文件是存储在不同位置的,比如说你新建了一个名为example的名称空间,那么第二行中声名的名称空间就应该是example,代码为:<Modules NameSpace="example">,而Module.xml.config这个文件就应该存储在D:\demo\example\config中。
下面我们来看几个例子分别实现:
· 创建一个模组;
· 在逻辑层调用模组;
· 表现层调用模组;
· 在模组设置局部变量和全局变量。
1.先做准备一下其他的资源
在调用模组前我们先准备两个字符资源,这样方便后面模组中调用,建字符资源过程如下:
打开设计器,选择一个已有的站点,然后选中一个名称空间,右键选择‘编辑’,如下图:
点击编辑后进入编辑器界面,如下图:
点击‘新建’按钮打开编辑页面,然后输入字符资源的名称和内容,如下图:
然后点击‘确定’回到上一页面,保存字符资源。
继续新建第二个字符资源为:
然后点击‘确定’回到上一页面,保存字符资源,这样两个字符资源就建好了.
2、编写第一个模组
现在我们来编写第一个模组。打开设计器,右键选中当前的名称空间,在‘使用外部编辑器’中选择‘编辑此空间下的Module文件’如下图:
应该会看到下面的代码:
<?xmlversion="1.0"encoding="gb2312"?>
<ModulesNameSpace="example">
</Modules>
在文件中新建一个Module,起名为test。代码如下:
<?xmlversion="1.0"encoding="gb2312"?>
<ModulesNameSpace="example">
<ModuleId="test">
</Module>
</Modules>
然后在模组中用If语句做判断,当全局变量_root.number为1时,打印一个字符资源source1,当全局变量_root.number为2时,打印另一个字符资源source2。加入判断后的完整代码如下(我省略Moudles不显示了):
<ModuleId="test">
<IfEX="[_root.number]==1">
<EchoContentLinkId="source1"/>
</If>
<IfEX="[_root.number]==2">
<EchoContentLinkId="source2"/>
</If>
</Module>
被加粗的字体部分在模组中打印字符资源。
3、在逻辑层中调用模组
模组自身是不能被执行需要在动作中调用,所以为了调用模组,我们还需要再建两个动作action,一个赋值为1,一个赋值为2。打开设计器,右键点击example名称空间,选中‘使用外部编辑器’中的‘编辑此空间下的Action文件’,如下图:
在动作文件Action.xml.config中加入两个Action,第一个Action起名为‘test1’,代码如下:
<Actionname="example.test1"NextAction="">
<SetVarName="number"Value="'1'"/>
<OutArea="main">
<ModuleLinkId="test"/>
</Out>
</Action>
上面代码<SetVar Name="number" Value="'1'" />中,用SetVar设置变量number的值为1,然后调用模组test。我们可以这样调用模组,打开设计器选中‘模组’栏,然后找到上面建好的模组test,右键点击test选‘辅助’里面的‘复制ModuleLink’,如下图:
然后回到代码中把复制的ModuleLink粘贴到Action代码中就可以了。
第二个Action起名为‘test2’,代码如下:
<Actionname="example.test2"NextAction="">
<SetVarName="number"Value="2"/>
<OutArea="main">
<ModuleLinkId="test"/>
</Out>
</Action>
当执行动作'test1'时调用模组test,模组根据number的赋值来判断打印哪个字符资源,因为赋值为1,所以打印字符资源‘source1’,如下图:
当执行动作'test2'时因为赋值为2,所以打印字符资源‘source2’,如下图:
4.在表现层调用模组
下面我们来说说如果在表现层中调用该模组,这里我们需要用Dreamweaver来新建一个新的HTML页面,如下图:
这里我们需要在HTML文件中的第一行加入一个NoahWeb的标签,要注意的是NoahWeb的这个标签必须放在第一行。把当前第一行的代码向下移一行,把光标指向第一行的开始部分,然后点击‘插入’菜单栏里‘NoahWeb Base Objects’下面的‘NoahPageHeadTag’标签,如下图:
插入标签后就可以直接用NoahWeb引擎来解析此文件了,页面如下:
下面我们还需要在页面中插入两个标签,一个是为number赋值的NoahSetValue,另一个是调用模组的标签。首先我们来插入赋值的NoahSetValue标签,把光标指向body体中,然后选择菜单栏‘插入’标签下‘NoahWeb Objects’下面的'NoahSetValue',如下图:
加入标签后body体中会出现一灰颜色的代码,如下图:
在SetName后面添入变量名称number,在SetValue后面添入值2,如下图:
现在加入调用模组的标签,这里我们需要继续使用上面建好的模组test和字符资源source1、source2。打开设计器中的模组面板,在example名称空间下右键选择test这个模组,然后选择'辅助'下面的‘复制Noah’
回到Dreamweaver中把刚才复制的模组粘贴到NoahSetValue标签的下面,如下图:
加入标签后,保存文件,这里要注意的是,保存时要把文件保存成aspx文件格式,而且要把文件保存在example文件夹下面,如下图:
这样表现层调用模组的文件就写好了,下面我们在浏览器中调用test.aspx这个文件看看结果,如下图:
由于我们在页面中赋的值是‘2’所以浏览器中显示的是字符资源‘source2’。
有兴趣的朋友可以亲自动手做一下,把SetValue的值改成‘1’,然后调用这个页面看看结果吧。
5.在模组设置局部变量和全局变量
在模组中我们还可以通过设置局部变量和全局变量来让模组能更方便的重用,下面我们来看一个在模组中设置局部变量和全局变量的例子:在模组中设置两个局部变量x和y,然后把两个局部变量相加得到的值传给全局变量_root.sum,然后在动作中设置局部变量x和y所接收的值并打印字符资源。下面我们来看看具体部骤:
首先打开Module.xml.config文件新建一个Module文件,命名为summation,代码为:
<ModuleId="summation"x="Value"y="Value">
<SetVarName="_root.sum"Value="[x]+[y]"/>
</Module>
之后我们再来建一个字符资源,在字符资源中调用全局变量做输出。新建一个字符资源起名为sum,字符资源代码如下:
<br> x+y=<!--NoahValueValueName="[_root.sum]"MaxChar=""DChar=""Safety="False"-->
字符资源中调用全局变量_root.sum作为x+y的显示结果。
新建字符资源如下图:
建立好字符资源后我们还需要在Action.xml.config新建一个动作来为局部变量传值和打印字符资源,动作名为:summation,动作部分代码如下:
<Actionname="example.summation"NextAction="">
><OutArea="main">
><ModuleLinkId="summation">
><!--设置Module中声明的局部变量x所接收的值-->
><VarValue="3"/>
><!--设置Module中声明的局部变量y所接收的值-->
><VarValue="9"/>
></ModuleLink>
><EchoContentLinkId="sum"/>
></Out>
></Action>
在动作中我们分另为两个变量x和y传入了值,之后打印字符资源,下面我们来执行一下summation这个动作,看看动作执行的结果,如下图:
在动作中为x和y传入的值分别是3和9,3加9的和为12,所以浏览器中输出的信息是x+y=12。
同样表现层也可以调用这个Moudle,详细的操作步骤我就不说了,具体的代码就是
<!--NoahModuleLinkId="summation"Value="3"Value="9"-->
<!--NoahValueValueName="[_TEXT._this.sum]"MaxChar=""DChar=""Safety="False"-->
好了模组部分的内容就简单给大家先介绍到这里了,模组强大而且很灵活.
本文章作者来自:
展开阅读全文