Stimulus 使用准备

如果说 CSS 是把样式从 HTML 剥离的技术, Stimulus 就是把 JS 从 HTML 剥离的技术, 结合 Turbolinks 一起使用, 开发效率和用户体验都很棒.

CSS 使用 class链接HTML,Stimulus使用data-controller链接HTML。

Stimulus 的代码一般长这样:


当点击按钮的时候, Stimulus 会自动找到 user_controller.js 文件, 并调用 user_controller.js 中的 action 函数.

Rails的使用案例
https://www.jianshu.com/p/8b5e81216b83

Stimulus 增加了魔法属性data-action,它描述了页面上的事件应该怎样触发控制器里的方法;
魔法属性 data-target,它为你提供了在控制器作用域(controller’s scope)中寻找元素的途径(handle )。

ES6 规范
导出
export default命令:为模块指定默认输出(这样就不需要知道所要加载模块的变量名)

//a.js
let sex = "boy";
export default sex(sex不能加大括号)
//原本直接export sex外部是无法识别的,加上default就可以了.但是一个文件内最多只能有一个export default。
其实此处相当于为sex变量值"boy"起了一个系统默认的变量名default,自然default只能有一个值,所以一个文件内不能有多个export default。
// b.js
本质上,a.js文件的export default输出一个叫做default的变量,然后系统允许你为它取任意名字。所以可以为import的模块起任何变量名,且不需要用大括号包含
import any from "./a.js"
import any12 from "./a.js" 
console.log(any,any12)   // boy,boy

export default class extends Controller {

}

export 和 export default的区别

  1. export与export default均可用于导出常量、函数、文件、模块等
  2. 在一个文件或模块中,export、import可以有多个,export default仅有一个
  3. 通过export方式导出,在导入时要加{ },export default则不需要
  4. export能直接导出变量表达式,export default不行。
  5. 为模块指定默认输出(这样就不需要知道所要加载模块的变量名)

https://segmentfault.com/a/1190000010426778
https://www.jianshu.com/p/edaf43e9384f

导入

import { Controller } form "stimulus"
export default class extends Controller {
  static targets = [ "source" ]

  // ...
}

static targets 这行是什么? 在 Stimulus 加载控制器类时,它会在被称为目标(targets)的静态数组中寻找目标名称字符串。针对数组中的每个目标名称,Stimulus
会为你的控制器添加三个新属性。这里 "source" 这个目标名称就变成了这样三个属性:

  • this.sourceTarget 在控制器作用域内寻找到的第一个来源目标。如果没有找到,访问此属性会抛出一个错误
  • this.sourceTargets 在控制器作用域内寻找到的由所有来源目标组成的数组。
  • this.hasSourceTarget 如果找到了来源目标,返回 true,否则,返回 false。

常见的事件有一个速记符号 你可能已经注意到了我们省略了操作描述符中的 click->。那是因为 Stimulus 将点击事件设置成了操作

你可能感兴趣的:(Stimulus 使用准备)