【发布时间】:2020-04-28 20:40:32
【问题描述】:
我正在尝试 RoR 6(我来自 MEAN,但我没有接触过版本 3 的 RoR),但在寻找管理 JavaScript 代码的最佳方法时遇到了一些麻烦。也许是因为我的背景。
我已经阅读了很多关于该主题的内容(包括官方指南https://guides.rubyonrails.org/working_with_javascript_in_rails.html),但似乎官方文档已经过时了。
根据文档,当您从 cli 生成控制器时,它应该为该控制器创建一个 .js 文件,但它不会发生。此外,现在 Webpack 已经被添加到 RoR 6 并且 JavaScript 不再由 Asset Pipeline 管理(我对吗?)但是没有任何关于这件事的参考。
我想找到一种方法来为每个视图编写代码 JS 并将该代码与其他代码隔离。
- 我应该把所有的JS代码放在哪里?
- 如何隔离每个视图的 JS 代码?
- 由于 Bootstrap(通过使用 Yarn)和 Webpack 这种方式,我已将 jQuery 添加到项目中,但 $ 或 jQuery 未定义:
const { environment } = require('@rails/webpacker')
const webpack = require("webpack")
environment.plugins.append("Provide", new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default']
}))
module.exports = environment
我将不胜感激。
谢谢!
解决方案:
我找到了我要找的东西 --> https://stimulusjs.org
由 Basecamp 创建的 Stimulusjs 为每个 HTML 视图添加了一个 JS 层,让我们在编写 JS 代码时保持秩序和清晰。它将 JS 文件与 DOM 连接起来,仅此而已。足以添加一些 JS 来改进功能。
它与 Turbolinks 完美搭配,可以与 Webpack 一起使用。此外,它可以在 10 分钟内学会(不再)。安装也非常简单。
无论如何,如果你需要了解一些关于 RoR 和 Webpack/Webpacker 的知识,你可以访问这些链接:
- https://webpack.js.org/guides/getting-started/
- https://github.com/rails/webpacker
- https://medium.com/statuscode/introducing-webpacker-7136d66cddfb
最后,如果你不想使用像 Stimulus 这样的 JS 框架来管理 RoR 下的 JS 代码,你可以随时为特定页面 JS 尝试这些 gem:
- Paloma gem:https://github.com/gnclmorais/paloma(未选中)
- Pagescript gem:https://github.com/maxcal/pagescript(未选中)
【问题讨论】:
标签: javascript jquery ruby-on-rails webpack ruby-on-rails-6