这套框架主要在尽可能避免繁重的工作。为了能够让大量的介面互动维持在单纯的 请求-回应 的模式,至於那些更复杂更频繁的需求才使用先进的工具。
更重要的是,这套工具主要是针对那些小团队希望程序的操作流程可以更加流畅,稳定并逐步扩展团队、导入主流的方式。
试试 Stimulus 吧。
David Heinemeier Hansson原文:https://andyyou.gitbooks.io/stimulusjs/content/00_the_origin_of_stimulus.html
使用下列这段指令取代掉 Steps 1 ~ 4
$ rails webpack:install:stimulus
yarn add stimulus
mkdir app/javascript/controllers
touch app/javascript/controllers/index.js
//内容
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start()
const context = require.context(".", true, /\.js$/)
application.load(definitionsFromContext(context))
import 'controllers'
touch app/javascript/controllers/hello_controller.js
//导入套件
import { Controller } from "stimulus";
//内容要写在这里面
export default class extends Controller {
// queryselector 变数
static targets = [ "page" ]
//内建含式可以砍到,检查有没有连接上此脚本
connect() {
console.log(`new.js.erb do stimulus js`);
}
//自己的内容...
//要这样使用 targets 的变数,例如:"page",要这样用 "this.pageTarget"
close(){
this.pageTarget.remove();
console.log(`new.js.erb destory self`)
}
}
<div class="wallpaper" data-controller="channelbox" data-channelbox-target="page">
<div class="channel-box">
<button data-action="click->channelbox#close" class="close" >X</button>
...xxx
</div>
</div>
<!-- data-controller="channelbox" 指 channelbox_controller 档 -->
<!-- data-action="click->channelbox#close" 指上图 close(){} 方法 -->
<!-- data-channelbox-target="page" 指上图 static targets = [ "page" ] -->
const page = document.querySelector('div');
const btn = document.querySelector('button');
btn.addEventListener('click',(e)=>{
close();
});
function close(){
console.log('123')
}
如此这般~对於 stimulus 的初探到此,如果有错在请
谢谢各位~第一天get!
>>: 每个人都该学的30个Python技巧|技巧 5:各种运算子(上)(字幕、衬乐、练习)
前言 [Day 24] LIFF ScanCode曾提过liff.scanCode()因技术问题,功...
这里是大卫吴的铁人纪录 嘛~这是我第一次参赛 期许自己能完成30天的挑战 以下主题相关: 这次铁人的...
今天持续将产品设定为以居家室内的IP cam为范例,盘点个端传输的所有资料处置,并给予资料敏感度分类...
虽然之前有看过 slice / array 比较的文章, 但在写 leetcode 时还是碰到点小麻...