riot.js教程【二】组件撰写准则、预处理器、标签样式和装配方法

简介: 基本要求 一个riot标签,就是展现和逻辑的组合(也就是html和JS) 以下是编写riot标签最基本的规则: 先撰写HTML,再撰写JS,JS代码可以写在标签内部,但这并不是必须的; 当riot标签定义在document body之内时,其内部不能使用script标签; 当riot...

 

基本要求

一个riot标签,就是展现和逻辑的组合(也就是html和JS)

以下是编写riot标签最基本的规则:

先撰写HTML,再撰写JS,JS代码可以写在<script>标签内部,但这并不是必须的;

当riot标签定义在document body之内时,其内部不能使用script标签;

当riot标签定义在单独的文件中时,其内部才可以使用script标签;

如果JS代码没有写在<script>标签内部,

那我们就认为最后一个HTML标签结尾之后就是JS代码;

riot标签可以是空的,或者只有HTML,或者只有JS;

引号是可选的,<foo bar={baz}>等价于<foo bar="{baz}">;

相似的ES6编码风格:

methodName(){  }等价于this.methodName=function(){  }.bind(this)

这里的this总是指向当前的标签实例;

<div class={selected:flag}></div>当flag变量是true的时候,该DIV的class属性是selected;

<input checked={ undefined }> 等价于 <input>

所有的属性名称必须是小写(浏览器规范要求);

riot标签可以支持自闭合标签<div />等价于<div></div>;<br> <img> <hr>等标签编译之后并不会自闭合;

riot标签必须闭合(或者自闭合)

标准HTML标签,例如label,table等也可以被重写,但不建议这么干

riot标签也可以拥有自己的属性;

在document body中自定义riot标签,必须注意缩进格式;

tab键的缩进与空格缩进是不同的,这要注意;

不用写<script>标签

<todo>

 

  <!-- layout -->

  <h3>{ opts.title }</h3>

 

  // logic comes here

  this.items = [1, 2, 3]

 

</todo>

this.items = [1,2,3]就是JS代码,可以正确执行

riotjs标签内部最后一个html标签结束后,就可以直接写JS代码,不用把JS代码写在<script>标签内部;

声明预处理器

你可以通过type属性指定一个JS的预处理器

<my-tag>
  <script type="coffee">
    # your coffeescript logic goes here
  </script>
</my-tag>

目前支持coffee,typescript,es6和none;

你也可以写成这样:type = 'text/coffee';

标签样式

你可以在riot标签内部插入<style>标签,并在内部编写样式;

Riotjs会自动把<style>标签内部的东西,插入到html的head节中;

这个调整过程,只会发生一次,不管这个riot标签在页面内实例化多少次;

如果你想控制这个调整过程,你可以在head标签内加入一个这样的标签:

<style type='riot';></style>

这样的话标签内的样式就都会转义到该区块内了;

<todo>

 

  <!-- layout -->

  <h3>{ opts.title }</h3>

 

  <style>

   /** other tag specific styles **/

    h3 { font-size: 120% }

    /** other tag specific styles **/

  </style>

 

</todo>

Riotjs支持scoped伪类;但目前还不支持shadow dom;

我不建议你使用scoped伪类;因为这玩意儿已经被W3C废除了;

Riotjs将在4.x版本支持shadow dom;

关于shadow dom的内容,请参考:

https://www.toobug.net/article/what_is_shadow_dom.html

关于riotjs 4.x升级的内容,请参考:

https://github.com/riot/riot/issues/2283

关于scoped伪类,请参考:

https://developer.mozilla.org/en-US/docs/Web/CSS/:scope

装配方法

你可以通过如下方式装配组件

<body>
 
  <!-- place the custom tag anywhere inside the body -->
  <todo></todo>
 
  <!-- include riot.js -->
  <script src="riot.min.js"></script>
 
  <!-- include the tag -->
  <script src="todo.js"></script>
 
  <!-- mount the tag -->
  <script>riot.mount('todo')</script>
 
</body>

在body区域内的自定义标签,必须通过这种方式闭合:<todo></todo>

这种闭合方式是错误的:<todo />

下面是其他集中装配组件的方式

// 自动装配当前页面上所有的自定义组件
riot.mount('*')
 
// 通过指定的ID装配组件
riot.mount('#my-element')
 
// 装配选中的组件
riot.mount('todo, forum, comments')

一个页面可装配的组件的数量是不受限制的

 

 

上一篇文章的地址:http://www.cnblogs.com/liulun/p/7672876.html 

20171113:对本文部分文字和修辞方式做了修改

目录
相关文章
|
13天前
|
JavaScript 前端开发 开发者
哇塞!Vue.js 与 Web Components 携手,掀起前端组件复用风暴,震撼你的开发世界!
【8月更文挑战第30天】这段内容介绍了Vue.js和Web Components在前端开发中的优势及二者结合的可能性。Vue.js提供高效简洁的组件化开发,单个组件包含模板、脚本和样式,方便构建复杂用户界面。Web Components作为新兴技术标准,利用自定义元素、Shadow DOM等技术创建封装性强的自定义HTML元素,实现跨框架复用。结合二者,不仅增强了Web Components的逻辑和交互功能,还实现了Vue.js组件在不同框架中的复用,提高了开发效率和可维护性。未来前端开发中,这种结合将大有可为。
50 0
|
9天前
|
JavaScript 前端开发
JavaScript基础知识-方法
文章通过示例代码讲解了JavaScript中如何给对象添加方法以及如何调用这些方法。
13 2
JavaScript基础知识-方法
|
9天前
|
JavaScript 前端开发
JavaScript基础知识-数组的常用方法
关于JavaScript基础知识-数组的常用方法。
9 1
JavaScript基础知识-数组的常用方法
|
2天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
7天前
|
前端开发 JavaScript
前端ES5 | js —添加元素方法
前端ES5 | js —添加元素方法
|
11天前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
23 0
|
11天前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
36 0
|
12天前
|
移动开发 前端开发 JavaScript
前端表单验证的完美攻略:HTML5属性与JavaScript方法的无缝对接,让你的Web应用数据输入既安全又优雅
【8月更文挑战第31天】本文介绍前端表单验证的重要性及其实现方法,利用HTML5的内置属性如`required`、`pattern`和`minlength`进行基本验证,并借助JavaScript处理复杂逻辑,如密码确认。通过示例代码详细展示了如何结合两者实现高效且友好的表单验证,同时使用CSS增强用户体验。此方法简化开发流程并提升验证效果。
19 0
|
13天前
|
JavaScript 开发者
揭秘Vue.js生命周期钩子:它们是如何掌控组件的生与死?
【8月更文挑战第30天】Vue.js 的生命周期钩子是开发者必须掌握的关键概念,它涵盖了组件从创建、挂载、更新到销毁的整个过程,提供了在特定时机操作DOM、获取数据或执行逻辑的能力。从 `beforeCreate` 到 `unmounted`,每个阶段都有特定的任务:如 `created` 适合异步数据获取,`mounted` 用于DOM操作,而 `beforeUnmount` 则用于清理资源。
10 0
|
JavaScript 前端开发