首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

开源 Web 应用程序框架 Mavo 入门-3

开源 Web 应用程序框架 Mavo 入门-3

Mavo 表达式既然我已向您说明了如何声明和操作数据项,下面让我们来谈谈自动化。大多数应用程序都在代码中内置了自动操作。您可以使用 Mavo 的表达式语言                MavoScript 来启用此自动化。
在本示例中,我想添加指向 Poetry Book Club 页面的链接,用于向组织者发送电子邮件并且主题行包含当前书籍的名称。为启用此自动化,我会在                Mavo 应用程序的 main 元素中添加以下片段。
<a href="mailto:poclub@example.com?subject=[title]">Contact us about this meeting</a>




[title] 部分是 Mavo 的缺省表达式语法,您可以在 HTML 中将其替换为 title                数据项的值。 Mavo 的表达式十分灵活。例如,如果希望电子邮件的主题始终为大写,那么可以使用以下代码:
<a href="mailto:poclub@example.com?subject=[uppercase(title)]">Contact us about this meeting</a>




此处,uppercase(title) 是 Mavo 表达式函数,用于对 title                的值进行操作,并将其全部转换为大写。 在此示例中,将标题“Ndewo, Colorado”转换为了“NDEWO, COLORADO”。Mavo                    表达式函数有许多,它们分别可用于操作文本字符串、列表、日期和时间以及用于数学运算。您也可以使用习惯符号来表示大多数算术运算,具体如下所示。您通常需要编写可操作 HTML                文档对象模型 (DOM) 的 JavaScript 来启用这样一个功能,Mavo 因此可以立即简化开发人员的工作。
放置 Mavo 应用程序无需在最外层的元素上声明 Mavo 应用程序。列表 2 是 bookclub1.5.html,这是  的变体。此处,在 div 元素上声明 Mavo                应用程序,该元素位于主标题和一些附加描述性文本之后。
清单 2. 浏览器中的 Poetry Book Club 通知页面,包含备用的                    Mavo                应用程序位置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>The poetry book club</title>

  <link rel="stylesheet" href="https://get.mavo.io/mavo.css"/>
  <script src="https://get.mavo.io/mavo.js"></script>
</head>
<body>
  <main>
    <h1>The poetry book club</h1>

    <p>Where we take our time with each tasty rhyme</p>

    <div mv-app="poetryclub" mv-storage="local">
      <p>
        <label>Title: </label>
        <span property="title">Ndewo, Colorado</span>
      </p>
      <img property="cover" src="//gonzaga.ogbuji.net/~uche/lit/2013/ndewo-cover-small.jpg" alt="cover" />
      <p>
        <label>Meeting date: </label>
        <time property="meeting" datetime="2017-10-09">9 Oct 2017</time>
      </p>
    </div>

  </main>
</body>
</html>




图 5 显示了浏览器中首次加载的 bookclub1.5.html。请注意 Mavo 应用程序栏相对于声明该应用程序时所用元素的位置。
图 5. 备用 Mavo 应用程序位置
数字和日期表达式及样式让我们重新审视 Mavo 图像属性,看看如何使用 Mavo 表达式对图像执行有趣的操作。您可以将任何图像上传至 Poetry Book Club                页面。为了添加定制的图像大小,我将 img 元素替换为以下片段:
<img property="cover" style="height: [height * 2 + 200]px;"
src="//gonzaga.ogbuji.net/~uche/lit/2013/ndewo-cover-small.jpg" alt="cover" />

<div>
   <input type="range" property="height" />
</div>




我在此处引入了 height 属性,将该属性声明为 HTML 滑块输入。Mavo 将此解释为一个控件,用于在用户滑动时设置从                0 到 100 的值。img 现在具有新的 style 属性,用于根据 Mavo 表达式通过                CSS 声明来设置图像的高度。该表达式是基于高度的简单数学公式:[height * 2 + 200]。在此例中,图像范围为                200(输入滑块处于最低设置)到 400(输入滑块处于最高设置)。
Mavo 中的条件表达式当距离开会时间不足一周时,我想用黄色突出显示会议日期以引起注意。为此,我将当前的日期部分替换为以下片段。
<p style="background-color: [if(days(meeting - $today) &lt; 7, yellow, white)];">
  <label>Meeting date: </label>
  <time property="meeting" datetime="2017-10-09">9 Oct 2017</time>
</p>




if() 函数使用了两到三个自变量。第一个自变量是一个条件表达式。
  • 如果其值为 true 或非零,那么会将第二个自变量设置为结果值。
  • 如果条件为 false 或零,并且有第三个自变量,那么该第三个自变量就用作结果值。
在此例中,条件为                if(days(meeting - $today) &lt; 7。如您所见,meeting                属性是会议的可编辑日期。$today 是 Mavo 自动提供的多个属性之一,它始终设置为 Web                浏览器确定的当前日期。
两个日期值相减会生成相差的秒数,days() 函数将使用该秒数,并计算等同的天数。如果结果小于 7 天(请注意,标准的                HTML 需要将 < 转义为 &lt;),那么条件为                true,并且会将第二个自变量 yellow 设置为结果。否则,结果为                white。在此例中,将页面背景样式设置为白色是一个好主意,但这是一个细节问题。
颜色自变量看起来像是属性名称。当 Mavo                发现看似属性名称的内容时,会将其替换为属性的值(如果存在这样的属性)。否则,它会逐字处理文本。如果想要确保将可能看似属性的内容处理为字面文本,您可以用引号把它引起来。以下条件采用相同的方式运行:[if(days(meeting - $today) &lt; 7, 'yellow', 'white')]。
返回列表