Установка через npm и подключение через CDN

Phaser является одной из самых популярных библиотек для создания 2D-игр на JavaScript. Для современных проектов с использованием систем сборки и модулей, таких как Webpack, Vite или Parcel, предпочтительным способом установки является npm.

Установка через npm выполняется командой:

npm install phaser

После установки библиотека будет доступна в папке node_modules/phaser. В проекте можно подключить Phaser как модуль ES6:

import Phaser from 'phaser';

Это позволяет использовать все классы и методы Phaser с автодополнением в редакторе, а также интегрировать библиотеку с TypeScript, что обеспечивает строгую типизацию.

Пример минимальной конфигурации игры:

import Phaser from 'phaser';

const config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    physics: {
        default: 'arcade',
        arcade: {
            gravity: { y: 300 },
            debug: true
        }
    },
    scene: {
        preload: preload,
        create: create,
        update: update
    }
};

const game = new Phaser.Game(config);

function preload() {
    this.load.image('sky', 'assets/sky.png');
}

function create() {
    this.add.image(400, 300, 'sky');
}

function update() {
    // игровой цикл
}

Ключевые моменты при использовании npm:

  • Phaser автоматически оптимизируется для современных сборщиков модулей.
  • Возможность использовать Phaser вместе с TypeScript и получать типизацию.
  • Простое обновление версии через npm update phaser.

Подключение через CDN

Для быстрых прототипов или небольших проектов удобнее подключать Phaser через CDN. Это не требует установки npm и позволяет сразу использовать библиотеку в HTML-файле.

Пример подключения через CDN:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Phaser через CDN</title>
    <script src="https://cdn.jsdelivr.net/npm/phaser@3/dist/phaser.min.js"></script>
</head>
<body>
    <script>
        const config = {
            type: Phaser.AUTO,
            width: 800,
            height: 600,
            physics: {
                default: 'arcade',
                arcade: {
                    gravity: { y: 300 },
                    debug: true
                }
            },
            scene: {
                preload: preload,
                create: create,
                update: update
            }
        };

        const game = new Phaser.Game(config);

        function preload() {
            this.load.image('sky', 'assets/sky.png');
        }

        function create() {
            this.add.image(400, 300, 'sky');
        }

        function update() {
            // игровой цикл
        }
    </script>
</body>
</html>

Преимущества использования CDN:

  • Быстрое подключение без установки зависимостей.
  • Удобно для тестирования и демонстраций.
  • Можно подключить конкретную версию Phaser, указав ее в ссылке.

Сравнение методов подключения

Характеристика npm CDN
Поддержка модулей ES6 Да Нет
Интеграция с TypeScript Да Нет
Обновление Через npm Через изменение ссылки
Идеально для Крупных проектов с сборкой Быстрых прототипов, учебных примеров
Размер проекта Требует установки Не требует установки

Использование npm подходит для долгосрочных проектов с системой сборки, обеспечивая контроль версий и удобство работы с типизацией. Подключение через CDN — быстрый способ начать работу без настройки сборщика, что особенно удобно для обучения и небольших демо-игр.


Рекомендации по организации проекта

При работе через npm рекомендуется хранить все игровые ассеты в отдельной папке assets и использовать относительные пути в методах this.load. В HTML-проектах с CDN также удобно структурировать проект аналогично: папка assets для изображений, звуков и шрифтов.

При переходе от CDN к npm важно помнить о различиях в импортах: через npm используется import Phaser from 'phaser';, а через CDN Phaser доступен глобально как Phaser. Это влияет на написание классов и модулей внутри проекта.


Грамотное понимание различий между npm и CDN позволяет строить проект с учетом его масштаба и требований к сборке, обеспечивая правильную интеграцию Phaser в рабочий процесс.