1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ch-ke-my-helper

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Мой помощник

Используется для ежедневного обучения, изображения используются только для учебных целей, не используйте для коммерческих целей, разработчики не несут ответственности за любые юридические споры, возникшие в результате этого.

Введение

Шаблон для среднего и заднего конца на основе Vue3, Vite, ElementPlus, Pinia, VueUse и других технологий. Включает часто используемые функции и хуки, а также подходы к их реализации. Использует последнюю стек технологий фронтенда, имеет соответствующие кодовые стандарты и стандарты коммитов, готов к использованию из коробки и может использоваться для обучения и справки.

Пример

Пример моего помощника

Особенности

  • Строится на основе Vue3, Vite, pnpm, имеет очень быструю скорость запуска

  • Встроенная тема Dark Mode, общая стилистика минималистичная

  • Динамическое управление правами, динамическое меню, глобальное управление состоянием страниц и т.д.

  • Мониторинг производительности и журналов системы, также может использоваться для сбора данных и мониторинга поведения пользователей

  • Упакованы часто используемые компоненты, включая динамические формы, динамические таблицы, виртуальные выборники, предварительный просмотр данных, группировка деревьев и т.д.- Упакованы общие хуки, включая запросы к сети, таблицы, формы, периодические запросы, параллельные задачи, слушатели событий, сокет-коммуникацию и т.д.

  • Используется кэширование на уровне страниц с помощью keep-alive, что позволяет сохранять состояние страниц при возврате.

  • Предоставлены подходы и решения для выполнения множества задач, обработки множества DOM (рендеринг кадров).

  • Упакованы компоненты выбора эмодзи для iOS и WeChat.

  • Включены общие функции и эффекты canvas, такие как водяные знаки, фейерверки, звездное небо, панели для подписей, вращающиеся диски и т.д.

  • Вторичная упаковка и глобальное автоматическое импортирование элементов ElementPlus.

  • Включены общие сторонние плагины, а также демонстрационные примеры.

  • Используется mediainfo.js для чтения форматов видео, video.js для совместимости с m3u8.

  • Используется dexie для создания базы данных indexDB для локального хранения журналов и массового отчета.

  • Используется eslint + prettier для проверки стиля кода.

  • Используется husky + lint-staged + cz-git для проверки коммитов.

Функции системы постоянно обновляются...

Примеры проекта

Темная тема

Высокая производительность и детализация

  • Уведомление о новых версиях в фронтенде, автоматическое обновление страницы после обновления версии

  • Использование анимации кадров для длинных форм и списков, повышение производительности отображения страницы

  • Удаление логов консоли в режиме производства, сокращение размера сборки

build: {
  minify: 'esbuild', // terser, esbuild
  terserOptions: {
    // удаление логов при использовании terser
    compress: { drop_console: true, drop_debugger: true },
  },
},
// удаление логов при использовании esbuild
esbuild: {
  drop: mode === 'production' ? ['console', 'debugger'] : [],
},
  • Настройка статических ресурсов и пакетов третьих сторон для оптимизации процесса сборки
rollupOptions: {
  input: {
    index: resolve(__dirname, `index.html`),
  },
  output: {
    // разделение больших и редко изменяющихся файлов для кэширования, уменьшение необходимости загрузки данных с сервера
    manualChunks: {
      'main/chunk-vue': ['vue'],
      'main/chunk-vue-router': ['vue-router'],
      'main/chunk-echarts': ['echarts'],
      'main/chunk-lodash-es': ['lodash-es'],
      'main/chunk-element-plus': ['element-plus'],
      'main/chunk-vue-virtual-scroller': ['vue-virtual-scroller'],
      'main/chunk-dexie': ['dexie'],
      'main/chunk-fingerprintjs': ['@fingerprintjs/fingerprintjs'],
      'main/chunk-sortablejs': ['sortablejs'],
      'main/chunk-vuedraggable': ['vuedraggable'],
    },
    chunkFileNames: 'assets/js/[name]-[hash].js',
    entryFileNames: 'assets/js/[name]-[hash].js',
    assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
  },
}
```- Константы и перечисления, упрощение получения значений

```bash
// enums.js
export class EnumArray extends Array {
  getLabel(value) {
    return this.find((item) => item?.value === value)?.label || '';
  }

  getValue(label) {
    return this.find((item) => item?.label === label)?.value || '';
  }

  getValues() {
    return this.map((item) => item.value);
  }

  getLabels() {
    return this.map((item) => item.label);
  }

  getItem(value) {
    return this.find((item) => item?.value === value) || {};
  }
}

// использование
const RoleType = new EnumArray(
  { label: 'Создатель', value: 1 },
  { label: 'Суперадминистратор', value: 2 },
  { label: 'Обычный администратор', value: 3 },
);

Установка и использование

Перед началом работы необходимо установить pnpm.

В соответствии с официальными требованиями, для использования vite3 и vite4 версии Node.js должны быть 14.18.0 или выше. При возникновении ошибок с зависимостями рекомендуется переустановить vite.
  • Установка vite
pnpm create vite@latest
  • Установка зависимостей
pnpm install
  • Запуск
pnpm run dev
  • Сборка (автоматически обновляет версию)
pnpm run build

Установка плагинов для VS Code

1. Prettier - Кодовый форматтер
2. Vue Language Features (Volar)
3. Vue 3 Snippets
4. ESLint

Кодовые стандарты

eslint + prettier + stylelint

  • Проверка и исправление кода
pnpm run lint
  • Проверка и исправление кода в стадии коммита
pnpm run lint:lint-staged

Стандарты коммитов

husky + lint-staged + cz-git + commitizen

  • Проверка кода при отправке коммита, команда включает git add . и git commit```bash pnpm run commit git push origin dev
``````bash
{
  "name": "my-helper",
  "private": true,
  "version": "0.0.0",
  "scripts": {
    "prepare": "husky install",
    "dev": "vite",
    "build": "node updateVersion.js && vite build",
    "preview": "vite preview --host --mode development",
    "lint": "eslint --ext .js,.vue src",
    "lint:lint-staged": "lint-staged",
    "commit": "git add . && git-cz"
  },
  "dependencies": {
    "@amap/amap-jsapi-loader": "^1.0.1",
    "@element-plus/icons-vue": "^2.1.0",
    "@fingerprintjs/fingerprintjs": "^4.1.0",
    "@videojs-player/vue": "^1.0.0",
    "@vueuse/components": "^10.7.0",
    "@vueuse/core": "^10.1.2",
    "axios": "^1.4.0",
    "dayjs": "^1.11.9",
    "dexie": "^3.2.4",
    "echarts": "^5.4.3",
    "echarts-gl": "^2.0.9",
    "element-plus": "^2.4.3",
    "install": "^0.13.0",
    "lodash": "^4.17.21",
    "mediainfo.js": "^0.2.1",
    "mqtt": "^5.1.3",
    "nprogress": "^0.2.0",
    "pinia": "^2.0.36",
    "sortablejs": "^1.15.0",
    "terser": "^5.18.0",
    "video.js": "^8.6.1",
    "vue": "^3.2.47",
    "vue-draggable-plus": "^0.3.2",
    "vue-lazyload": "^3.0.0",
    "vue-router": "^4.1.6",
    "vue-virtual-scroller": "2.0.0-beta.8",
    "vuedraggable": "^4.1.0"
  },
  "devDependencies": {
    "@iconify-json/ep": "^1.1.12",
    "@vitejs/plugin-vue": "^4.1.0",
    "@vitejs/plugin-vue-jsx": "^3.0.1",
    "babel-eslint": "^10.1.0",
    "commitizen": "^4.3.0",
    "cz-git": "^1.7.1",
    "eslint": "^8.36.0",
    "eslint-config-prettier": "^8.7.0",
    "eslint-plugin-json": "^3.1.0",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-vue": "^9.9.0",
    "husky": "^8.0.3",
    "lint-staged": "^15.2.0",
    "prettier": "^2.8.8",
    "sass": "^1.62.1",
    "vite": "^4.3.2",
    "vite-plugin-compression": "^0.5.1",
    "vite-plugin-vue-setup-extend": "^0.4.0"
  },
  "config": {
    "commitizen": {
      "path": "node_modules/cz-git"
    }
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*. {js,ts,vue}": [
      "pnpm run lint",
      "prettier --write"
    ]
  }
}
```## Структура директорий```
my-helper
├─ .commitlintrc.js
├─ .eslintignore
├─ .eslintrc.js
├─ .husky
│  ├─ pre-commit
│  └─ _
│     └─ husky.sh
├─ .prettierignore
├─ .prettierrc.js
├─ index.html
├─ jsconfig.json
├─ package-lock.json
├─ package.json
├─ pnpm-lock.yaml
├─ public
│  ├─ account-list
│  │  ├─ ic-account-avatar-default.jpg
│  │  ├─ ic-account-avatar1.jpg
│  │  ├─ ic-account-avatar2.jpg
│  │  ├─ ic-account-avatar3.jpg
│  │  └─ ic-account-avatar4.jpg
│  ├─ first-screen-loading
│  │  └─ index.css
│  ├─ mediainfo
│  │  ├─ mediainfo
│  │  │  └─ index.js
│  │  └─ MediaInfoModule.wasm
│  ├─ menu-icon
│  │  ├─ canvas.png
│  │  ├─ css-vfx.png
│  │  ├─ directives.png
│  │  ├─ el-encap.png
│  │  ├─ familiar-api.png
│  │  ├─ familiar-function.png
│  │  ├─ feature.familiar.png
│  │  ├─ feature.png
│  │  ├─ index.png
│  │  ├─ logs.png
│  │  ├─ not-popular-label.png
│  │  ├─ note.png
│  │  ├─ render-optimize.png
│  │  ├─ system.png
│  │  ├─ test.png
│  │  └─ third-party.png
│  ├─ note
│  │  ├─ jsknowledge.html
│  │  ├─ note.css
│  │  └─ software.html
│  ├─ avatar.jpg
│  ├─ version.js
│  └─ vite.svg
├─ README.md
├─ rules
│  └─ eslint.js
├─ src
│  ├─ apis
│  │  └─ setting.js
│  ├─ App.vue
│  ├─ assets
│  │  ├─ common
│  │  │  ├─ drag.svg
│  │  │  ├─ ic-emoji.png
│  │  │  └─ ic-user-avatar.jpg
│  │  ├─ emojis
│  │  │  ├─ ic-ios-emoji.png
│  │  │  └─ ic-wx-emoji.png
│  │  ├─ img-lazy.jpg
│  │  └─ vue.svg
│  ├─ components
│  │  ├─ auth-control
│  │  │  └─ index.vue
│  │  ├─ c-form
│  │  │  ├─ form-item copy.vue
│  │  │  ├─ form-item.vue
│  │  │  ├─ form.console.warn.js
│  │  │  └─ index.vue
│  │  ├─ canvas-demo
│  │  │  └─ stars-bg.vue
│  │  ├─ cropper
│  │  │  └─ index.vue
│  │  ├─ css-demo
│  │  │  ├─ ball-rolling.vue
│  │  │  ├─ clock.vue
│  │  │  ├─ cube.vue
│  │  │  ├─ malaria.vue
│  │  │  └─ index.vue
│  │  └─ index.vue
│  └─ index.vue
└─ index.vue│  │  │  ├─ копия-приза.  vue
│  │  │  └─ приз.  vue
│  │  ├─ пользовательский-глобальный-элемент
│  │  │  ├─ c-карта
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-календарь
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-диалог
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-вывод
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-пустота
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-форма
│  │  │  │  ├─ элемент-формы.  vue
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-ручка
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-ввод
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-пагинация
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-попап
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-выбор
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-переключатель
│  │  │  │  └─ индекс.  vue
│  │  │  ├─ c-таблица
│  │  │  │  └─ индекс.  vue
│  │  │  └─ индекс.  js
│  │  ├─ демонстрация-echarts
│  │  │  ├─ echart-столбчатая.  vue
│  │  │  ├─ echart-линейная.  vue
│  │  │  └─ echart-пироговая.  vue
│  │  ├─ эмодзи-выбор
│  │  │  ├─ эмодзи-ios.  js
│  │  │  ├─ эмодзи-wx.  js
│  │  │  ├─ эмодзи.  css
│  │  │  └─ индекс.  vue
│  │  ├─ пример-контейнер
│  │  │  └─ индекс.  vue
│  │  ├─ группы-меню
│  │  │  └─ таблица-группы.  vue
│  │  ├─ загрузка
│  │  │  └─ спиральная-загрузка.  vue
│  │  ├─ выбор-представления
│  │  │  └─ индекс.  vue
│  │  ├─ попап
│  │  │  └─ эмодзи-попап.  vue
│  │  ├─ показ-карты
│  │  │  └─ индекс.  vue
│  │  ├─ загрузка
│  │  │  ├─ загрузка-файла.  vue│  │  │  ├─ загрузка-изображения. vue
│  │  │  └─ загрузка-изображений. vue
│  │  ├─ видео-плеер
│  │  │  └─ индекс. vue
│  │  ├─ виртуальный-скролл
│  │  │  ├─ виртуальный-скролл-проверка. vue
│  │  │  ├─ виртуальный-скролл-радио. vue
│  │  │  └─ виртуальный-скролл-показ. vue
│  │  └─ виртуальный-скролл-модальное
│  │     ├─ больше-модальное. vue
│  │     ├─ показ-вывода. vue
│  │     └─ одно-модальное. vue
│  ├─ конфигурация
│  │  ├─ конфигурация. js
│  │  ├─ global-variable. js
│  │  ├─ storage-variable. js
│  │  └─ variable-map. js
│  ├─ directives
│  │  ├─ click-outside
│  │  │  └─ index. js
│  │  ├─ focus
│  │  │  └─ index. js
│  │  ├─ index. js
│  │  ├─ resize
│  │  │  └─ index. js
│  │  └─ watermark
│  │     └─ index. js
│  ├─ hooks
│  │  ├─ useAsyncComponent
│  │  │  └─ index. js
│  │  ├─ useDefer
│  │  │  └─ index. js
│  │  ├─ useDynamicTime
│  │  │  └─ index. js
│  │  ├─ useEventListener
│  │  │  └─ index. js
│  │  ├─ useFetch
│  │  │  └─ index. js
│  │  ├─ useForm
│  │  │  └─ index. js
│  │  ├─ useMqtt
│  │  │  └─ index. js
│  │  ├─ usePolling
│  │  │  └─ index. js
│  │  ├─ useSuperTask
│  │  │  └─ index. js
│  │  ├─ useTable
│  │  │  └─ index. js
│  │  └─ useWatermark
│  │     └─ index. js
│  ├─ layout
│  │  ├─ components
│  │  │  ├─ aside
│  │  │  │  ├─ aside-item. vue
│  │  │  │  └─ index. vue
│  │  │  ├─ breadcrumb
│  │  │  │  └─ index. vue
│  │  │  ├─ footer
│  │  │  │  └─ index. vue
│  │  │  ├─ header
│  │  │  │  └─ index. vue
│  │  │  ├─ menu
│  │  │  │  ├─ index. vue
│  │  │  │  └─ menu-item. vue │  │  │  └─ tabs
  │  │  │     └─ index.vue
  │  │  └─ index.vue
  │  ├─ main.js
  │  ├─ pinia
  │  │  ├─ index.js
  │  │  └─ modules
  │  │     ├─ example.js
  │  │     ├─ global.js
  │  │     ├─ modal.js
  │  │     ├─ router.js
  │  │     └─ user.js
  │  ├─ router
  │  │  ├─ index.js
  │  │  └─ routes.js
  │  ├─ styles
  │  │  ├─ atom.css
  │  │  ├─ color.css
  │  │  ├─ common.scss
  │  │  ├─ mixin.scss
  │  │  ├─ normalize.css
  │  │  └─ reset.css
  │  ├─ utils
  │  │  ├─ chainedMode.js
  │  │  ├─ day.js
  │  │  ├─ db.js
  │  │  ├─ echarts.js
  │  │  ├─ enums.js
  │  │  ├─ fetch.js
  │  │  ├─ fingerprint.js
  │  │  ├─ helpers.js
  │  │  ├─ mediainfo.js
  │  │  ├─ message-box.js
  │  │  ├─ monitor-error.js
  │  │  ├─ monitor-performance.js
  │  │  ├─ mqtt-server.js
  │  │  ├─ super-task.js
  │  │  └─ tools.js
  │  └─ views
  │     ├─ canvas
  │     │  ├─ drag
  │     │  │  └─ index.vue
  │     │  ├─ fireworks
  │     │  │  └─ index.vue
  │     │  ├─ signature-board
  │     │  │  └─ index.vue
  │     │  ├─ stars
  │     │  │  └─ index.vue
  │     │  └─ watermark
  │     │     └─ index.vue
  │     ├─ css-vfx
  │     │  ├─ animation-api
  │     │  │  └─ index.vue
  │     │  ├─ css
  │     │  │  └─ index.vue
  │     │  ├─ css-demo
  │     │  │  └─ index.vue
  │     │  ├─ loading
  │     │  │  └─ index.vue
  │     │  └─ sass
  │     │     └─ index.vue
  │     ├─ el-encap
  │     │  ├─ form-template
  │     │  │  └─ index.vue
  │     │  └─ table-template
  │     │     ├─ components
  │     │     │  ├─ append-popup.vue
  │     │     │  └─ popup.vue
  │     │     ├─ details-page.vue
  │     │     └─ index.vue
  │     ├─ error
  │     │  ├─ 404.vue
  │     │  └─ tip.vue
  │     ├─ feature
  │     │  ├─ concurrence-task
  │     │  │  └─ index.vue │     │  ├─ directives
  │     │  │  └─ index.vue
  │     │  ├─ emojis
  │     │  │  └─ index.vue
  │     │  ├─ familiar
  │     │  │  ├─ api
  │     │  │  │  └─ index.vue
  │     │  │  ├─ component
  │     │  │  │  └─ index.vue
  │     │  │  └─ function
  │     │  │     └─ index.vue
  │     │  ├─ markdown
  │     │  │  └─ index.vue
  │     │  ├─ mqtt-server
  │     │  │  └─ index.vue
  │     │  ├─ realTimeReviewHtml
  │     │  │  └─ index.vue
  │     │  ├─ text-label
  │     │  │  └─ index.vue
  │     │  ├─ video-fps
  │     │  │  └─ index.vue
  │     │  └─ worker
  │     │     ├─ index.vue
  │     │     └─ worker.js
  │     ├─ home
  │     │  └─ index.vue
  │     ├─ login
  │     │  └─ login.vue
  │     ├─ logs
  │     │  ├─ monitor-error
  │     │  │  └─ index.vue
  │     │  └─ monitor-performance
  │     │     └─ index.vue
  │     ├─ not-popular-label
  │     │  └─ index.vue
  │     ├─ note
  │     │  └─ index.vue
  │     ├─ render-optimize
  │     │  ├─ task-execution
  │     │  │  ├─ index.vue
  │     │  │  └─ worker.js
  │     │  └─ visible-win-render
  │     │     └─ index.vue
  │     ├─ system
  │     │  ├─ setting
  │     │  │  └─ index.vue
  │     │  └─ user
  │     │     └─ index.vue
  │     ├─ test
  │     │  ├─ software
  │     │  │  └─ index.vue
  │     │  └─ test1
  │     │     ├─ index.vue
  │     │     └─ worker.js
  │     └─ third-party
  │        ├─ cropper
  │        │  └─ index.vue
  │        ├─ draggable
  │        │  └─ index.vue
  │        ├─ echarts
  │        │  └─ index.vue
  │        ├─ img-lazy
  │        │  └─ index.vue
  │        ├─ virtual-scroller
  │        │  └─ index.vue
  │        └─ vueuse
  │           └─ index.vue
  ├─ updateVersion.js
  └─ vite.config.js

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Шаблон для среды разработки и back-end на Vue3, Vite, ElementPlus, Pinia, VueUse и другие современные технологии. Включает часто используемые функции и хуки, а также подходы к их реализации. Использует последнюю стек технологий фронтенда, имеет соответствующие кодовые и правила коммитов, готов к использованию из коробки и может служить для обуче... Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ch-ke-my-helper.git
git@api.gitlife.ru:oschina-mirror/ch-ke-my-helper.git
oschina-mirror
ch-ke-my-helper
ch-ke-my-helper
master