Если вы хотите добавить JQuery в качестве внешнего (загрузка из CDN) в Gastby, это немного сложно.Вам нужно:
- добавить jquery CDN в
html.js
- добавить
external
в конфигурацию веб-пакета в gatsby-node.js
Добавить jQueryна html.js
Вы, вероятно, уже сделали это: cp .cache/default-html.js src/html.js
и добавили
// src/html.js
<head>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossOrigin="anonymous"
/>
</head>
Но есть предостережение: это крест O ригин, а неcrossorigin.На этом этапе, если вы используете $
даже в componentDidMount
, он все равно выдаст ошибку, поскольку webpack не знает о jquery.
Добавьте external
в конфигурацию webpack в gatsby-node.js
Нам нужно проинформировать веб-пакет о jQuery.
//gatsby-node.js
exports.onCreateWebpackConfig = ({
actions,
}) => {
const { setWebpackConfig } = actions;
setWebpackConfig({
externals: {
jquery: 'jQuery', // important: 'Q' capitalized
}
})
}
Использование
Теперь в componentDidMount
вы можете сделать
import $ from 'jquery' // important: case sensitive.
componentDidMount() {
$('h1').css('color', 'red');
}
Почему учитывается регистр
Когда мы устанавливаем external: { X: Y }
По сути, мы говорим веб-пакету: «Где бы я ни делал import X
», ищите Y
в глобальной области видимости.В нашем случае webpack будет искать jQuery
в window
.jQuery присоединяется к окну с двумя именами: jQuery
и $
.Вот почему заглавная буква Q важна.
Кроме того, чтобы проиллюстрировать, вы также можете сделать: external: { foo: jQuery }
и использовать его как import $ from foo
.Это все еще должно работать.
Надеюсь, это поможет!