С Гэтсби, конечно, вы можете. Gatsby имеет html.js
, который служит шаблоном для всех сгенерированных страниц. Вы можете просто удалить JavaScript Гэтсби из этого HTML.
/* Generated html */
...
<body>
<div id="___gatsby">...</div>
<script src="/common.js"></script> <-- remove this
</body>
Сначала скопируйте html по умолчанию на ваш src:
cp .cache/default-html.js src/html.js
Затем отредактируйте эту строку:
/* src/html.js */
<body {...this.props.bodyAttributes}>
{this.props.preBodyComponents}
<div
key={`body`}
id="___gatsby"
dangerouslySetInnerHTML={{ __html: this.props.body }}
/>
- {this.props.postBodyComponents}
+ {process.env.NODE_ENV !== 'production' && this.props.postBodyComponents}
</body>
Это гарантирует, что вы все еще можете использовать горячую перезагрузку Гэтсби в разработке, но сгенерированные htmls не будут включать в себя сценарии React и Webpack.
Более тщательным подходом было бы перебрать postBodyComponents
и удалить только тег скрипта, который ссылается на common.js
, но в большинстве случаев я думаю, что все будет в порядке.
Это определенно противоречит цели Gatsby, у которой есть своя собственная конвенция и сложный процесс, так что он может генерировать прогрессивное веб-приложение. Для вашего случая, если вы еще не знакомы с Гэтсби, возможно, было бы проще накатить собственную SSR. Мой ответ - только показать, возможно ли это с Гэтсби или нет.