Oimo.js — это JavaScript-библиотека для расчёта трёхмерной физики твёрдых тел, ориентированная на работу в браузере и интеграцию с WebGL-движками (например, Three.js). Установка через npm применяется в проектах с использованием сборщиков модулей (Vite, Webpack, Rollup, Parcel) и в Node.js-среде.
Если проект ещё не создан, выполняется инициализация:
npm init -y
Создаётся файл package.json, в котором будут храниться
зависимости и параметры проекта.
Добавление Oimo.js выполняется командой:
npm install oimo
После установки пакет появляется в разделе dependencies
файла package.json, а исходный код библиотеки — в каталоге
node_modules.
Пример фрагмента package.json:
{
"dependencies": {
"oimo": "^1.0.9"
}
}
При использовании современного JavaScript (ES Modules) импорт выполняется следующим образом:
import * as OIMO from 'oimo';
Либо, если требуется конкретный экспорт:
import OIMO from 'oimo';
Форма импорта зависит от версии пакета и способа его сборки. В
большинстве случаев используется пространство имён
OIMO.
После импорта создаётся физический мир:
import * as OIMO from 'oimo';
const world = new OIMO.World({
gravity: [0, -9.8, 0]
});
Параметры конструктора:
gravity — вектор гравитацииtimestep — шаг симуляцииiterations — количество итераций решения
ограниченийbroadphase — алгоритм широкофазной проверки
столкновенийВ main.js:
import * as OIMO from 'oimo';
Vite автоматически обрабатывает зависимость без дополнительной конфигурации.
Webpack корректно обрабатывает пакет из node_modules.
Дополнительных настроек, как правило, не требуется.
При необходимости можно добавить оптимизацию:
resolve: {
extensions: ['.js']
}
Если проект использует TypeScript, возможны два варианта:
Импорт остаётся стандартным:
import * as OIMO from 'oimo';
При отсутствии типов создаётся файл oimo.d.ts:
declare module 'oimo';
CDN-подключение используется в простых HTML-проектах без сборщика.
<script>Пример использования публичного CDN:
<script src="https://cdn.jsdelivr.net/npm/oimo@1.0.9/build/oimo.min.js"></script>
После загрузки библиотеки глобальный объект OIMO
становится доступным в пространстве окна (window.OIMO).
<script>
const world = new OIMO.World({
gravity: [0, -9.8, 0]
});
console.log(world);
</script>
В этом режиме модульная система не используется — библиотека подключается как глобальный скрипт.
Современные CDN поддерживают импорт как ES-модуля:
<script type="module">
import * as OIMO from 'https://cdn.jsdelivr.net/npm/oimo@1.0.9/build/oimo.module.js';
const world = new OIMO.World({
gravity: [0, -9.8, 0]
});
console.log(world);
</script>
Преимущества такого подхода:
import/export;В URL можно фиксировать версию:
https://cdn.jsdelivr.net/npm/oimo@1.0.9/...
Либо использовать последнюю доступную:
https://cdn.jsdelivr.net/npm/oimo/...
Фиксация версии предпочтительна в продакшн-проектах для предотвращения несовместимостей.
| Характеристика | npm | CDN |
|---|---|---|
| Использование сборщика | Да | Нет (опционально) |
| Управление версиями | Через package.json | Через URL |
| Подходит для крупных проектов | Да | Ограниченно |
| Работа офлайн | Да | Нет |
| Глобальные переменные | Нет | Да (при обычном script) |
После установки каталог библиотеки обычно содержит:
node_modules/oimo/
├── build/
│ ├── oimo.js
│ ├── oimo.min.js
│ └── oimo.module.js
├── src/
└── package.json
oimo.js — обычная версияoimo.min.js — минифицированнаяoimo.module.js — ES-модульПри использовании сборщика чаще применяется модульная версия.
import * as OIMO from 'oimo';
console.log(OIMO);
Если объект содержит классы World,
RigidBody, Shape, подключение выполнено
корректно.
<script>
console.log(typeof OIMO);
</script>
Значение "object" свидетельствует об успешной
загрузке.
OIMO is not definedПричины:
<script>;Решение — переместить подключение библиотеки выше пользовательского
кода или использовать type="module".
Cannot find module 'oimo'
Причины:
node_modules;Решение:
npm install
Для production-сборки:
Минифицированная версия через CDN:
<script src="https://cdn.jsdelivr.net/npm/oimo@1.0.9/build/oimo.min.js"></script>
При совместном использовании с Three.js типичная схема:
world.step().Установка обеих библиотек через npm:
npm install three oimo
Импорт:
import * as THREE from 'three';
import * as OIMO from 'oimo';
Установка через npm обеспечивает гибкость, контроль зависимостей и интеграцию в современный фронтенд-стек. Подключение через CDN подходит для простых сценариев и быстрого старта без сборки проекта.