Библиотека Waypoints распространяется в виде JavaScript-файлов и может быть установлена через популярные менеджеры пакетов.
Через npm:
npm install waypoints
Через yarn:
yarn add waypoints
После установки библиотека становится доступной для подключения в проекте через систему модулей.
Подключение в ES-модулях:
import Waypoint from 'waypoints/lib/noframework.waypoints';
Для использования адаптера с jQuery:
import 'waypoints/lib/jquery.waypoints';
Важно учитывать, что структура пакета включает несколько вариантов сборки:
noframework.waypoints — для чистого JavaScriptjquery.waypoints — для работы с jQueryshortcuts)При отсутствии сборщика модулей библиотеку удобно подключать напрямую через CDN.
Базовая версия (без фреймворков):
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/noframework.waypoints.min.js"></script>
Версия для jQuery:
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>
Если используется jQuery, порядок подключения строго определён:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="path/to/jquery.waypoints.min.js"></script>
Нарушение порядка приведёт к ошибкам, так как Waypoints расширяет объект jQuery.
После установки доступны следующие ключевые файлы:
waypoints.js — основной файлnoframework.waypoints.js — версия без зависимостейjquery.waypoints.js — адаптер для jQueryshortcuts/ — дополнительные утилиты (например,
inview, sticky)Каждый файл решает отдельную задачу, и выбор зависит от архитектуры проекта.
Чистый JavaScript (без зависимостей):
import Waypoint from 'waypoints/lib/noframework.waypoints';
С использованием jQuery:
import 'waypoints/lib/jquery.waypoints';
После подключения библиотеки важно убедиться, что она доступна в окружении.
Для vanilla JS:
console.log(typeof Waypoint); // должен вернуть "function"
Для jQuery:
console.log(typeof $.fn.waypoint); // должен вернуть "function"
Если возвращается undefined, возможны следующие
причины:
При использовании современных инструментов сборки важно учитывать особенности импорта.
Webpack / Vite:
import Waypoint from 'waypoints/lib/noframework.waypoints';
new Waypoint({
element: document.getElementById('target'),
handler: function(direction) {
console.log('Scrolled to waypoint!');
}
});
Особенности:
Waypoints включает набор дополнительных модулей, расширяющих функциональность.
Пример подключения inview:
<script src="path/to/noframework.waypoints.min.js"></script>
<script src="path/to/shortcuts/inview.min.js"></script>
Пример через npm:
import 'waypoints/lib/noframework.waypoints';
import 'waypoints/lib/shortcuts/inview';
Расширения подключаются после основного файла и зависят от него.
1. Неправильный путь к файлу
<script src="waypoints.js"></script> <!-- файл отсутствует -->
2. Отсутствие зависимости (для jQuery-версии)
<script src="jquery.waypoints.min.js"></script> <!-- без jQuery -->
3. Использование ES-модулей без сборщика
import Waypoint from 'waypoints'; // не работает в браузере без сборки
4. Конфликт версий jQuery
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/noframework.waypoints.min.js"></script>
</head>
<body>
<div id="box" style="margin-top: 1000px;">Target</div>
<script>
new Waypoint({
element: document.getElementById('box'),
handler: function() {
console.log('Waypoint triggered');
}
});
</script>
</body>
</html>
Рекомендуемая структура:
project/
│
├── src/
│ ├── js/
│ │ ├── main.js
│ │ └── waypoints-init.js
│
├── node_modules/
│
└── dist/
Пример инициализации в отдельном файле:
// waypoints-init.js
import Waypoint from 'waypoints/lib/noframework.waypoints';
export function initWaypoints() {
new Waypoint({
element: document.querySelector('.section'),
handler: function() {
console.log('Section reached');
}
});
}
noframework-версию при отсутствии
jQueryТакой подход обеспечивает стабильную работу библиотеки и упрощает дальнейшую интеграцию в проект.