【问题标题】:How to use [function] in webdna如何在 webdna 中使用 [function]
【发布时间】:2012-02-22 15:57:00
【问题描述】:

我花了几个小时在 Govinda 中挖掘 WebdnaCodeSparker 的出色工作。

我必须承认我从未使用过 [function],现在我想知道如何使用它... 我想到了文档,它清楚地告诉我如何将变量发送到将执行它的函数。

但是如何在搜索上下文中使用函数呢? 例子:

我把下面的代码放在一个[函数]中

[搜索 mydb.db&neSKUdata:FINDALL] [founditems][/founditems] [/search]

我想得到结果

[SKU]-[名称]

也许函数不适合做这种动作?

【问题讨论】:

    标签: language-design language-features scripting-language


    【解决方案1】:

    我会说,如果您不知道自己想要什么(例如[function]),那么最好避免仅仅因为您认为应该使用复杂性来增加复杂性)。 ...就像您可以将 [search] 内联到您的代码中一样。

    但是当你准备好时,有几个很好的理由在 webdna 中使用[function],.. 至少这些是一些原因:

    1. 让您的代码更易于阅读

    2. 让您的代码更易于维护

    3. 从代码中删除不需要的空格

    4. 使您的代码更易于编写
      (一旦你在一个复杂的站点中完成了额外的工作来设置一堆函数来执行各种任务,那么编写新代码来使用这些函数会更快/更容易!你只需调用函数!)

    您可以将函数想象为[include].. 它可以有效地让您将一堆代码放在页面中的一个位置.. 只需一行短行(函数调用)。 我喜欢使用这样的函数......作为包含......我经常将函数定义放在同一个文件中(如果该函数的代码仅对该页面是唯一的),......但我把函数定义在页面顶部,不碍事,而不是在调用函数的地方,这会使我的代码更难阅读。

    使用函数作为一种方法来一遍又一遍地做同样的事情(或一遍又一遍地做类似的事情)而不一遍又一遍地编写相同的代码也是很好的。这使您的代码更易于维护。如果稍后需要进行一些更改(比如客户现在想要一个有序列表 (<ol>) 而不是无序列表 (<ul>))......那么您只需在一个地方进行更改(在函数定义),而不是在所有调用函数的地方。

    因为[function] 只输出介于[return]...[/return] 之间的代码,所以您可以在[function...]...[/function] 内但在任何[return]...[/return] 之外进行所有计算。然后只输出您想要输出的最终结果。 . 将最终结果放入[return]...[/return]

    [function name=finalResult]
     [math]a=0[/math]
    
     this 
     is 
     to
     mimic
     a
     big
     super
     long
     block
     of
     code
    
       [text]finalResult=
         [math]a=[a]+1[/math]
       [/text]
    
     with
     tons
     of
     white
     space
     where
     we
     do
     lots
     of
     calculations
    
     [return][finalResult][/return]
    [/function]
    

    举例说明如何使用函数调用返回搜索结果,以便数据库可以更改,但结果的格式始终相同,您可以这样做:

    [function name=getResults]
     [search db=[whichDb].db&neSKUdata=[blank]]
       [founditems]
         [return]<div class"myclass">[SKU]-[name]</div>[/return]
       [/founditems]
       [showif [numfound]=0]
         [return]Nothing to see here[/return]
       [/showif]
     [/search]
    [/function]
    

    在你的页面上

    <div class="resultsContainer">
     [getResults whichDb=myDb]
    </div>
    

    又在别的地方

    <div class="resultsContainer">
     [getResults whichDb=anotherDb]
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多