所以,首先,我是一个Ruby人。我喜欢Ruby,也喜欢Ruby on Rails。它们是我选择的语言和框架。然而,就像所有的事情一样,随着时间的推移,框架会和社区一样不断发展。
随着Ruby on Rails的发展,我们看到越来越多的Javascript被加入到这个组合中。我们已经看到了Javascript前端框架的引入,它为我们铺设了一条完全不同的路线。我不一定同意这条路线,但无论如何,我们今天使用的Javascript比以往任何时候都多。
直到StimulusJS的加入,我才真正开始深入地研究Javascript。我相信,良好的实践和尽可能贴近Ruby on Rails核心的做法将促进健康和可维护的应用程序,并尽可能地减少资源。
无论我们选择哪条道路,Javascript都会在这里停留(目前),所以了解我们可用的工具是很重要的。与Ruby中的puts 调试一样,我们在Javascript中也有console.log() 。这将使我们在Javascript中调试或构建一些东西时走得很远。然而,当我们在Javascript中遇到超出窗口范围的情况时,事情就会变得有点困难。
这就是我们最好的开发工具技巧,我在Chrome和Firefox上都测试过。因此,让我们采取一个非常简单的刺激控制器,我们有一个目标,当它连接时,我们将把目标记录到我们的控制台,这样我们就可以确保它被正确注册。
import { Controller } from "stimulus"
export default class extends Controller {
static targets = ["input"]
initialize() { }
connect() {
console.log(this.inputTarget)
}
disconnect() { }
}
所以,当我们打开开发工具时,我们会看到控制台中的记录输入。

因此,一切看起来都工作得很好。在这样一个非常简单的情况下,我们可以继续进行编码。然而,其他时候,在更复杂的问题上,我们可能想与这个对象互动。然而,这就是事情变得有点困难的地方。我们是否尝试抓取页面上的元素,然后通过我们的代码,在刺激控制器中重新创建我们要做的事情?在一个简单的例子中,这将发挥作用。然而,如果你想使用另一个Javascript库,如Tribute、Choices-JS、FullCalendar等,就会非常困难,因为我们在全局范围内无法访问这些库。相反,我们是在Stimulus控制器中把这些导入我们的应用程序。
因此,如果你发现自己处于这些情况中,请继续将你想互动的对象记录到控制台。然后在控制台中右键点击该对象,选择Store as global variable

这将创建一个该对象的临时变量,现在允许你与之互动。

这个功能已经存在了几年了,但我只是偶然发现了这个功能。它完全改变了我在Javascript中调试和处理问题的方式。
我希望这能提醒你,或者在你的工具箱中找到一个新的技巧。谢谢你的阅读!