在 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课程。