riot.js 学习【一】自定义标签

本文介绍了Riot.js中最核心的功能——自定义标签。通过示例代码展示了自定义标签的效果,并提到了新人可能遇到的坑,如script标签的编写规范、this.update的使用以及opts的含义。此外,还讲解了riot.js如何支持简单的表达式和外部标签定义文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义标签

Riot.js最强大的功能,莫过于自定义标签,先来一段代码,看个效果:

<!Doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src="riot.js"></script>
    <script type="text/javascript" src="compiler.js"></script>
</head>
<body>

    <!-- 调用自定义标签 -->
    <timer start="10"></timer>

</body>

<!-- 最前面一定要有空格或TAB,留意它的type -->
<script type="riot/tag">
    <timer>
        <h3>Times: { index }</h3>
        this.index = opts.start || 0;

        var self = this;
        tick(){
            // 每个1秒,index自增
            this.index++;
            // 调用this.update更新UI【最欣赏这个了,能自己控制】
            this.update();
        }
        var timer = setInterval(this.tick, 1000);
    </timer>
</script>

<!-- 调用riot,启动自定义标签timer -->
<script type="text/javascript">
    riot.mount("timer");
</script>
</html>

效果如下[每个1秒,times的值,就+1]:
计时器

说一下,新人会遇到的坑:

  1. script type=”riot/tag”
    compiler会遍历所有带有script type=”riot/tag” 的元素,如果script有src,则会加载外部的文件,如果没有src,则编译script里的内容。

    PS: script中编写的内容,必须是空格或tab开头,如果直接跟着 “<”,是编译不出内容的。
    这跟它内部的解析器有关【第一次还挺坑的…】

  2. tick()
    该函数的this对象,是当前的自定义标签的context,只要 xx(){} 这样声明的函数,context都被指定为标签的context

    可通过this.tick访问 tick 函数

  3. this.update
    必须调用 this.update(); UI的内容才会更新。
    可能会觉得没其它MV*的引擎自动化,但是,手动控制返回会更加灵活

  4. opts
    代码中,有个很奇怪的变量opts:

    this.index = opts.start || 0;

    其实它的值,就是 this.opts,是自定义标签传入的属性。
    如:

    <timer start="10"></timer>

    那 this.opts.start/opts.start 就等于 10

  5. { index }
    riot.js强大的读值方法,它支持简单的表达式,三元判断。但是有一个坑,{}里,要用单引号\’代替双引号\”,不然超级容易解析出错。
    像 { index || 10 }, { index > 10 ? ‘老头’ : ‘小屁孩’ },都可以支持

  6. 支持引用外部标签定义文件

    <script src="todo.tag" type="todo/tag"></script>

    todo.tag的内容和编译,按照上面例子编写即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值