Современный веб-сайт для популяризации онтологий и семантических технологий в нефтегазовой отрасли. Проект создан для студентов Губкинского университета и специалистов НИИ Транснефть.
Консолидация научной и практической части применения онтологий для автоматизации проектирования в нефтегазовой отрасли. Сайт служит платформой для:
- Популяризации онтологий среди студентов и специалистов
- Публикации научных статей и исследований
- Размещения вакансий и проектов
- Предоставления полезных ресурсов и материалов
- Создания сообщества экспертов в области онтологий
- Frontend: Vue 3 + Vite
- Роутинг: Vue Router 4
- Стили: CSS3 с CSS переменными
- Адаптивность: Mobile-first подход
- Деплой: GitHub Pages
ontology.ru/
├── src/
│ ├── components/ # Переиспользуемые компоненты
│ │ ├── AuthorCard.vue # Карточка автора
│ │ ├── ArticleCard.vue # Карточка статьи
│ │ ├── ProjectCard.vue # Карточка проекта
│ │ └── ResourceCard.vue # Карточка ресурса
│ ├── pages/ # Страницы приложения
│ │ ├── HomePage.vue # Главная страница
│ │ ├── ProjectsPage.vue # Проекты и вакансии
│ │ ├── ResourcesPage.vue # Полезные ссылки
│ │ ├── SciencePage.vue # Научные публикации
│ │ └── AuthorsPage.vue # Авторы и эксперты
│ ├── App.vue # Главный компонент
│ ├── main.js # Точка входа
│ └── style.css # Глобальные стили
├── public/ # Статические файлы
├── index.html # HTML шаблон
├── package.json # Зависимости
├── vite.config.js # Конфигурация Vite
└── README.md # Документация
- Node.js 16+
- npm или yarn
npm installnpm run devСайт будет доступен по адресу: http://localhost:5173
npm run buildnpm run previewnpm run deploy- Hero секция с описанием онтологий
- Статистика проектов и публикаций
- Обзор применения онтологий в нефтегазовой отрасли
- Преимущества использования онтологий
- Обзор технологий и инструментов
- Список активных проектов с вакансиями
- Фильтрация по статусу, технологиям
- Детальная информация о проектах
- Возможность отклика на вакансии
- Статистика проектов
- Каталог программ, методичек, курсов
- Фильтрация по типу ресурса, языку
- Рейтинговая система
- Возможность скачивания и добавления в избранное
- Рекомендуемые ресурсы
- Научные публикации и статьи
- Фильтрация по журналу, году
- Метрики цитирования и импакт-факторы
- Популярные журналы
- Тренды исследований
- Профили экспертов и авторов
- Фильтрация по организации, специализации
- Публикации авторов
- Контактная информация
- Партнерские организации
Карточка автора с информацией о специалисте:
- Аватар и основная информация
- Специализации (теги)
- Контактные данные
- Список публикаций
Использование:
<AuthorCard :author="authorData" />Структура данных:
{
id: 1,
name: 'Иванов А.П.',
title: 'Ведущий научный сотрудник',
organization: 'НИИ Транснефть',
specializations: ['Онтологии', 'Нефтегазовая отрасль'],
description: 'Описание эксперта...',
contacts: {
email: 'ivanov@transneft.ru',
phone: '+7 (495) 123-45-67',
linkedin: 'https://linkedin.com/in/ivanov'
},
publications: [
{ id: 1, title: 'Название статьи', year: 2024, url: '#' }
],
avatar: 'path/to/avatar.jpg'
}Карточка научной статьи:
- Заголовок и авторы
- Журнал и год публикации
- DOI и ссылки
- Аннотация и ключевые слова
- Метрики (цитирования, импакт-фактор)
Использование:
<ArticleCard :article="articleData" />Карточка проекта с вакансиями:
- Информация о проекте
- Список вакансий с требованиями
- Контактная информация
- Возможность отклика на вакансии
Использование:
<ProjectCard :project="projectData" />Карточка полезного ресурса:
- Тип ресурса (программа, методичка, курс)
- Описание и метаданные
- Рейтинг и отзывы
- Ссылки для скачивания
Использование:
<ResourceCard :resource="resourceData" />- Откройте файл
src/pages/SciencePage.vue - Найдите массив
articlesв секцииsetup() - Добавьте новый объект статьи:
{
id: 7, // Уникальный ID
title: 'Название статьи',
authors: ['Автор 1', 'Автор 2'],
journal: 'Название журнала',
year: 2024,
doi: '10.1234/doi',
url: 'https://ссылка-на-статью',
abstract: 'Аннотация статьи...',
keywords: ['ключевое', 'слово', '1', 'ключевое', 'слово', '2'],
metrics: {
citations: 10,
impactFactor: 3.5
}
}- Откройте файл
src/pages/AuthorsPage.vue - Найдите массив
authorsв секцииsetup() - Добавьте новый объект автора:
{
id: 7,
name: 'ФИО автора',
title: 'Должность',
organization: 'Организация',
specializations: ['Специализация 1', 'Специализация 2'],
description: 'Описание автора...',
contacts: {
email: 'email@domain.com',
phone: '+7 (495) 123-45-67',
linkedin: 'https://linkedin.com/in/profile'
},
publications: [
{ id: 1, title: 'Название публикации', year: 2024, url: '#' }
],
avatar: null // Путь к аватару или null
}- Откройте файл
src/pages/ProjectsPage.vue - Найдите массив
projectsв секцииsetup() - Добавьте новый объект проекта:
{
id: 5,
title: 'Название проекта',
description: 'Описание проекта...',
status: 'active', // active, planning, completed, on-hold, cancelled
duration: '12 месяцев',
teamSize: 8,
budget: '15 млн ₽',
technologies: ['OWL', 'RDF', 'Protégé'],
vacancies: [
{
id: 1,
title: 'Название вакансии',
salary: '120-180 тыс. ₽',
description: 'Описание вакансии...',
requirements: ['Требование 1', 'Требование 2']
}
],
contacts: {
manager: 'Имя руководителя',
email: 'project@transneft.ru',
phone: '+7 (495) 123-45-67'
}
}- Откройте файл
src/pages/ResourcesPage.vue - Найдите массив
resourcesв секцииsetup() - Добавьте новый объект ресурса:
{
id: 10,
title: 'Название ресурса',
description: 'Описание ресурса...',
type: 'software', // software, manual, article, video, course, book, tool
url: 'https://ссылка-на-ресурс',
author: 'Автор',
year: 2024,
language: 'ru', // ru, en, de
rating: 4,
tags: ['тег1', 'тег2'],
extra: {
fileSize: '150 MB',
pages: 120,
duration: '6 недель'
}
}Основные цвета определены в CSS переменных в файле src/style.css:
:root {
--primary-color: #1e3a8a; /* Основной синий */
--secondary-color: #3b82f6; /* Вторичный синий */
--accent-color: #06b6d4; /* Акцентный голубой */
--success-color: #10b981; /* Зеленый */
--warning-color: #f59e0b; /* Оранжевый */
--error-color: #ef4444; /* Красный */
}- Откройте файл
src/style.css - Найдите секцию
:root - Измените значения цветовых переменных
- Все компоненты автоматически обновятся
Для добавления новых стилей:
- Глобальные стили: Добавьте в
src/style.css - Стили компонента: Добавьте в секцию
<style scoped>компонента - Стили страницы: Добавьте в секцию
<style scoped>страницы
Сайт полностью адаптивен и оптимизирован для:
- Desktop: 1200px+
- Tablet: 768px - 1199px
- Mobile: до 767px
Используются стандартные брейкпоинты:
@media (max-width: 768px) {
/* Стили для мобильных устройств */
}- Убедитесь, что репозиторий подключен к GitHub
- Выполните сборку:
npm run build - Деплой:
npm run deploy
Сайт можно развернуть на любой статической платформе:
- Netlify: Перетащите папку
distв Netlify - Vercel: Подключите репозиторий к Vercel
- Firebase Hosting: Используйте Firebase CLI
Каждый компонент следует принципам:
- Single Responsibility: Один компонент - одна задача
- Reusability: Компоненты переиспользуемы
- Props Validation: Валидация входных параметров
- Composition API: Использование Vue 3 Composition API
- Создайте новый файл в
src/pages/ - Добавьте роут в
src/main.js - Добавьте ссылку в навигацию
src/App.vue
- Создайте файл в
src/components/ - Экспортируйте компонент с именем
- Импортируйте и используйте в нужных местах
- Lazy Loading: Компоненты загружаются по требованию
- Code Splitting: Автоматическое разделение кода
- Image Optimization: Оптимизация изображений
- CSS Optimization: Минификация CSS
Для мониторинга производительности:
- Используйте Vue DevTools
- Проверьте Lighthouse в Chrome DevTools
- Мониторьте Core Web Vitals
Установите Vue DevTools для отладки:
npm install -g @vue/devtoolsИспользуйте console.log() для отладки:
console.log('Debug info:', data)Проверьте консоль браузера для ошибок JavaScript и Vue.
Проект создан для НИИ Транснефть и Губкинского университета.
Для вопросов и предложений:
- Email: ontology@transneft.ru
- Телефон: +7 (495) 123-45-67
- Базовая функциональность
- 5 основных страниц
- Адаптивный дизайн
- Компонентная архитектура
- Система авторизации
- Административная панель
- API для динамического контента
- Система комментариев
- Интеграция с внешними API
- Многоязычность
- PWA функциональность