在 Rails 6 中使用 webpacker 的 wow.js 的正确方法是什么?
What is the correct way to use wow.js in Rails 6 with webpacker?
我正尝试在 Rails 6.1.3.2 项目上将 wow.js 与我的 Ruby 一起使用。我已经用 Yarn 安装了 wowjs,我在我的 node_modules 文件夹中看到了它。
我已经将 wowjs 导入到我的应用程序中 app/javascript/packs/application.js
import WOW from 'wowjs';
require("wowjs/css/libs/animate.css")
我有一个 script.js 文件位于此路径:app/javascript/script.js 并启动 WOW
wow = new WOW({
animateClass: 'animated',
offset: 100
});
wow.init();
wowjs导入后script.js导入到app/javascript/packs/application.rb中是这样的:
import WOW from 'wowjs';
require("wowjs/css/libs/animate.css")
import "scripts.js"
我在控制台中不断收到以下错误:
scripts.js:514 Uncaught ReferenceError: WOW is not defined
at Object.<anonymous> (scripts.js:514)
at Object../app/javascript/scripts.js (scripts.js:897)
at __webpack_require__ (bootstrap:63)
at Module../app/javascript/packs/application.js (application.js:1)
at __webpack_require__ (bootstrap:63)
at bootstrap:198
at bootstrap:198
我以类似的方式安装了其他模块,但没有出现错误。我想了解这样做的“rails 方式”是什么。预先感谢您的帮助。
安装jquery, wowjs by yarn, 添加这行到app/javascript/packs/application.js
:
window.WOW = require('wowjs').WOW;
通过添加到 app/assets/stylesheets/application.scss
这一行,将 wow css 嵌入到项目中:
@import "wowjs/css/libs/animate";
并通过创建此视图示例来完成 app/views/pages/home.html.erb
:
Welcome to project railstrace !
<section class="wow slideInLeft" data-wow-duration="2s" data-wow-delay="5s">ABC</section>
<section class="wow slideInRight" data-wow-offset="10" data-wow-iteration="10">DEF</section>
<script>
new WOW({live: false}).init()
</script>
注意:如果设置 new WOW({live: false}).init()
将删除此警告:您的浏览器不支持 MutationObserver。
尽情享受吧!
这个问题的最终答案如下:
将 import 语句从 application.js 移动到 scripts.js 使用模块的地方:
import "splitting/dist/splitting.css";
import "splitting/dist/splitting-cells.css";
import Splitting from "splitting";
我遗漏了 'wow' 作为 'var' 的声明。所以我将 'var' 添加到 script.js 中,如下所示:
var wow = new WOW({
animateClass: 'animated',
offset: 100
});
wow.init();
对我来说,重要的教训是导入语句需要位于使用模块的脚本的顶部。我曾假设仅仅通过将它们导入 application.js 就足以使它们可用于所有脚本。也许那是新手的教训。非常感谢@rossta 提供的一些重要指导。我很期待他即将推出的Webpacker课程。
我正尝试在 Rails 6.1.3.2 项目上将 wow.js 与我的 Ruby 一起使用。我已经用 Yarn 安装了 wowjs,我在我的 node_modules 文件夹中看到了它。
我已经将 wowjs 导入到我的应用程序中 app/javascript/packs/application.js
import WOW from 'wowjs';
require("wowjs/css/libs/animate.css")
我有一个 script.js 文件位于此路径:app/javascript/script.js 并启动 WOW
wow = new WOW({
animateClass: 'animated',
offset: 100
});
wow.init();
wowjs导入后script.js导入到app/javascript/packs/application.rb中是这样的:
import WOW from 'wowjs';
require("wowjs/css/libs/animate.css")
import "scripts.js"
我在控制台中不断收到以下错误:
scripts.js:514 Uncaught ReferenceError: WOW is not defined
at Object.<anonymous> (scripts.js:514)
at Object../app/javascript/scripts.js (scripts.js:897)
at __webpack_require__ (bootstrap:63)
at Module../app/javascript/packs/application.js (application.js:1)
at __webpack_require__ (bootstrap:63)
at bootstrap:198
at bootstrap:198
我以类似的方式安装了其他模块,但没有出现错误。我想了解这样做的“rails 方式”是什么。预先感谢您的帮助。
安装jquery, wowjs by yarn, 添加这行到app/javascript/packs/application.js
:
window.WOW = require('wowjs').WOW;
通过添加到 app/assets/stylesheets/application.scss
这一行,将 wow css 嵌入到项目中:
@import "wowjs/css/libs/animate";
并通过创建此视图示例来完成 app/views/pages/home.html.erb
:
Welcome to project railstrace !
<section class="wow slideInLeft" data-wow-duration="2s" data-wow-delay="5s">ABC</section>
<section class="wow slideInRight" data-wow-offset="10" data-wow-iteration="10">DEF</section>
<script>
new WOW({live: false}).init()
</script>
注意:如果设置 new WOW({live: false}).init()
将删除此警告:您的浏览器不支持 MutationObserver。
尽情享受吧!
这个问题的最终答案如下:
将 import 语句从 application.js 移动到 scripts.js 使用模块的地方:
import "splitting/dist/splitting.css";
import "splitting/dist/splitting-cells.css";
import Splitting from "splitting";
我遗漏了 'wow' 作为 'var' 的声明。所以我将 'var' 添加到 script.js 中,如下所示:
var wow = new WOW({
animateClass: 'animated',
offset: 100
});
wow.init();
对我来说,重要的教训是导入语句需要位于使用模块的脚本的顶部。我曾假设仅仅通过将它们导入 application.js 就足以使它们可用于所有脚本。也许那是新手的教训。非常感谢@rossta 提供的一些重要指导。我很期待他即将推出的Webpacker课程。