Loader подключается один раз на всё приложение. Приложение само рисует статьи и вставляет в каждую контейнер .news-game. Loader замечает новые контейнеры через MutationObserver. Если контейнер удалён вместе со статьёй, открытая игра закрывается.
<!-- один раз в шаблоне приложения -->
<script async src="https://goshva.github.io/newsgame/widget/v1.js" data-site="demo-cis-spa"></script>
<!-- в компоненте статьи -->
<div class="news-game" data-placement="article-end"
data-article-id="{{ article.gameId }}" data-lang="ru"></div>
Третий материал показывает, что будет, если игры для статьи нет в каталоге: блок скрывается и не занимает места.