摘要:每個(gè)項(xiàng)目都是從開始的,此項(xiàng)目也不例外。控制器為帶來生命力作為其核心,的目標(biāo)是自動(dòng)將元素連接到對象。檢查是否生效刷新頁面,你會(huì)看到任何改變都沒有。在中,處理事件的控制器方法叫做操作方法。這意味這我們擁有了標(biāo)準(zhǔn)的重構(gòu)技術(shù)兵工廠。
學(xué)習(xí) Stimulus 的最簡單方式就是構(gòu)建一個(gè)簡單的控制器。這一章我們就來學(xué)習(xí)一個(gè)。
先決條件要往下繼續(xù),你需要運(yùn)行一個(gè) stimulus-starter ,它是一個(gè)用于探索 Stimulus 的預(yù)配置骨架。
推薦使用 remixing stimulus-starter on Glitch ,這樣就能完整地在瀏覽器里運(yùn)行了,而且不需要再安裝其他東西:
Remix on Glitch
或者,如果你喜歡使用自己的舒適的文本編輯器,您將需要克隆并設(shè)置stimulus-starter:
$ git clone https://github.com/stimulusjs/stimulus-starter.git $ cd stimulus-starter $ yarn install $ yarn start請輸入代碼
然后在瀏覽器中訪問 http://localhost:9000/。
(注意 stimulus-starter 使用 Yarn 來管理依賴,你得先安裝它。)
從 HTML 起步我們從一個(gè)簡單的練習(xí)開始:帶按鈕的文本域。點(diǎn)擊按鈕時(shí),讓文本域的值顯示在控制臺(tái)。
每個(gè) Stimulus 項(xiàng)目都是從 HTML 開始的,此項(xiàng)目也不例外。編輯public/index.html并在標(biāo)簽后面添加以下代碼:
然后刷新頁面,便能看到文本域和按鈕了。
控制器為 HTML 帶來生命力作為其核心,Stimulus 的目標(biāo)是自動(dòng)將 DOM 元素連接到 JavaScript 對象。這些對象由控制器調(diào)用。
我們一起來通過拖拽框架內(nèi)置的控制器類創(chuàng)建第一個(gè)控制器。在 src/controllers/ 文件夾里創(chuàng)建一個(gè)hello_controller.js文件。然后放入以下代碼:
// src/controllers/hello_controller.js import { Controller } from "stimulus" export default class extends Controller { }鏈接控制器和 DOM 的標(biāo)識(shí)符
下一步,我們需要告訴 Stimulus 控制器應(yīng)該怎樣連接到 HTML。在 標(biāo)識(shí)符充當(dāng)了元素和控制器之間的鏈接。在此例中,標(biāo)識(shí)符hello告訴 Stimulus 去hello_controller.js創(chuàng)建一個(gè)控制器的實(shí)例。在安裝指南中可以了解更多關(guān)于如何動(dòng)態(tài)加載控制器。 刷新頁面,你會(huì)看到任何改變都沒有。我們應(yīng)該如何知道控制器有沒有生效? 一種方式是在 connect() 方法中添加一個(gè) log 狀態(tài),控制器鏈接到 在 hello_controller.js 實(shí)現(xiàn) connect()方法: 刷新頁面,你就能在控制臺(tái)中看到Hello, Stimulus!了。 現(xiàn)在,我們看下,如何修改代碼讓 log 信息在點(diǎn)擊“Greet”按鈕時(shí)顯示。 首先,將 connect() 重命名為 greet(): 我們想要在按鈕的點(diǎn)擊事件觸發(fā)時(shí)調(diào)用greet()方法。在 Stimulus 中,處理事件的控制器方法叫做操作(action)方法。 將 action 方法連接到按鈕的點(diǎn)擊事件。public/index.html并添加魔法屬性data-action到按鈕上: data-action的值 value click->hello#greet被成為操作描述符。這里的意思是:
click 是事件名稱
hello 是控制器標(biāo)識(shí)符
greet 要調(diào)用的方法名 刷新頁面并打開開發(fā)者控制臺(tái)。你就能在點(diǎn)擊“Greet”按鈕時(shí)看到 log 信息了。 我們即將完成此次練習(xí),修改 action 使其對我們輸入到文本域里的任何名字都說 hello。 要實(shí)現(xiàn)它,首先我們需要在控制器中引用 input 元素。然后就能通過讀取它的值獲取輸入的內(nèi)容了。 Stimulus 讓我們將重要元素標(biāo)記為目標(biāo)(target),然后我們就能輕松地在控制器中通過相應(yīng)的屬性引用這些元素了。打開public/index.html添加魔法屬性data-target到 input 元素: ﹟目標(biāo)描述符(Target Descriptors)解釋
hello 是控制器標(biāo)識(shí)符
name 是目標(biāo)的名稱 在我們將 name 添加到控制器的目標(biāo)描述符列表中時(shí),Stimulus 會(huì)自動(dòng)創(chuàng)建一個(gè)this.nameTarget屬性,它會(huì)返回第一個(gè)匹配到的目標(biāo)元素。我們可以使用這個(gè)屬性讀取元素的值并構(gòu)建歡迎字符串。 我們來試試。打開hello_controller.js然后這樣修改: 然后刷新頁面,打開控制塔。在輸入框中輸入你的名字,點(diǎn)擊“Greet”按鈕。Hello, world! 我們已經(jīng)知道 Stimulus 控制器是 JavaScript 類的實(shí)例。該類的方法可以作為事件處理器使用。 這意味這我們擁有了標(biāo)準(zhǔn)的重構(gòu)技術(shù)兵工廠。比如,我們可以通過提取name getter 來清理 greet() 方法: 恭喜!你寫出了你的第一個(gè) Stimulus 控制器! 本文我們覆蓋了該框架的核心概念:controllers, identifiers, actions, 和 targets。在下一章,我們將了解如何組件這些東西構(gòu)建正兒八經(jīng)的控制器,呃,像 Basecamp 那樣。 Next: Building Something Real 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。 轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/100098.html
HTML 時(shí) Stimulus 就會(huì)觸發(fā)它。// src/controllers/hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
connect() {
console.log("Hello, Stimulus!", this.element)
}
}
// src/controllers/hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
greet() {
console.log("Hello, Stimulus!", this.element)
}
}
操作描述符(action descriptor)解釋
將重要元素映射到控制器屬性中
data-target的值hello.name被稱為目標(biāo)描述符. 這里的意思是:// src/controllers/hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
static targets = [ "name" ]
greet() {
const element = this.nameTarget
const name = element.value
console.log(`Hello, ${name}!`)
}
}
// src/controllers/hello_controller.js
import { Controller } from "stimulus"
export default class extends Controller {
static targets = [ "name" ]
greet() {
console.log(`Hello, ${this.name}!`)
}
get name() {
return this.nameTarget.value
}
}
總結(jié)和后續(xù)步驟
摘要:參考閱讀是一款擁有謙遜理想的框架。這是一個(gè)受歡迎的方案,比如當(dāng)你六個(gè)月后返回一個(gè)模板不記得各種東西是如何組合在一起的時(shí)候。可讀的代碼,也意味著團(tuán)隊(duì)中的其他人也能通過閱讀模版或者開發(fā)者控制臺(tái),來快速地追蹤行為或判斷問題。 參考閱讀:https://chloerei.com/2018/02/... Stimulus 是一款擁有謙遜理想的 JavaScript 框架。Stimulus 不會(huì)...
摘要:年,和前端開發(fā)者與應(yīng)用程序前端開發(fā)者之間產(chǎn)生了巨大的分歧。開發(fā)最常見的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開發(fā)者可以從瀏覽器開發(fā)中學(xué)習(xí)到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發(fā)者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現(xiàn)代化的前端工程課程來提高你的技能。 下載:PDF ...
摘要:年,和前端開發(fā)者與應(yīng)用程序前端開發(fā)者之間產(chǎn)生了巨大的分歧。開發(fā)最常見的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開發(fā)者可以從瀏覽器開發(fā)中學(xué)習(xí)到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發(fā)者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現(xiàn)代化的前端工程課程來提高你的技能。 下載:PDF ...
摘要:年,和前端開發(fā)者與應(yīng)用程序前端開發(fā)者之間產(chǎn)生了巨大的分歧。開發(fā)最常見的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開發(fā)者可以從瀏覽器開發(fā)中學(xué)習(xí)到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發(fā)者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現(xiàn)代化的前端工程課程來提高你的技能。 下載:PDF ...
摘要:兩句話掌握最難知識(shí)點(diǎn)元類千萬不要被所謂元類是的程序員不會(huì)用到的特性這類的說辭嚇住。元類道生一,一生二一般來說,元類均被命名后綴為。這是的一大難點(diǎn),但學(xué)完了元類,一切變得清晰。 兩句話掌握python最難知識(shí)點(diǎn)——元類 千萬不要被所謂元類是99%的python程序員不會(huì)用到的特性這類的說辭嚇住。因?yàn)槊總€(gè)中國人,都是天生的元類使用者 學(xué)懂元類,你只需要知道兩句話: 道生一,一生二,二生三...
閱讀 3773·2021-11-23 09:51
閱讀 4385·2021-11-15 11:37
閱讀 3523·2021-09-02 15:21
閱讀 2746·2021-09-01 10:31
閱讀 879·2021-08-31 14:19
閱讀 851·2021-08-11 11:20
閱讀 3307·2021-07-30 15:30
閱讀 1689·2019-08-30 15:54