外链论坛

 找回密码
 立即注册
搜索
查看: 29|回复: 1

前端框架搭建——从零到一搭建一个高颜值Vue3后台管理系统(一)

[复制链接]

2946

主题

3万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979425
发表于 2024-10-10 05:19:48 | 显示全部楼层 |阅读模式

项目展示

登录

首页

列表

深色侧边栏

暗黑主题

移动端

关于

为何我要写这个项目呢,后台业务在项目中是很平常的,而市面上的后台框架其实都很好,然则非常多时候感觉封装的很深,因此是想要自己搭建一个框架方便后面自己运用能够经过这种方式分享下经验和心得,日前的话这个项目不是一个赶工的项目,预计会连续更新产出。

技术栈

此项目触及的技术栈重点

Vue3Element PlusPiniaUnocssAxiosTypeScript├── public # 不参与编译的资源文件 ├── build # 构建时的有些插件配置 ├── src # 主程序目录 │ ├── api # api请求 │ ├── assets # 资源文件│ │ ├── svg# svg图标 │ │ └── images # 照片资源 │ ├── components # 全局公共组件 │ ├── config # 主题关联配置 │ ├── directives # 自定义指令 │ ├── hooks # hooks │ ├── layout # 页面结构组件│ ├── locales# 国际化 │ ├── plugins # 加载插件与静态 │ ├── router # 路由目录 │ ├── store # pinia 配置 │ ├── style # 样式目录 │ ├── utils # 工具类 │ ├── views # 页面 │ ├── APP.vue # App.vue │ └── main.ts # main.ts ├── types # 全局类型 ├── .editorconfig # 代码规范 ├── .prettierrc.js # 代码规范 ├── .eslintrc # 代码规范 ├── tsconfig.json # ts配置 ├── uno.config.ts # unocss配置├── commitlint.config.js# 提交信息 ├── vite.config.ts # vite配置

初始化配置

初始化项目

jspnpm create vite vite-demo cd vite-demo pnpm install pnpm dev

editorconfig

在项目根目录下新建一个 .editorconfig 文件,重点功效掌控编辑器行径(需要安装EditorConfig for VS Code插件)root = true [*] # 暗示所有文件适用 charset = utf-8 # 设置文件字符集为 utf-8 indent_style = space # 缩进风格(tab | space) indent_size = 2 # 缩进体积 end_of_line = lf # 掌控换行类型(lf | cr | crlf) trim_trailing_whitespace = true # 去除行首的任意空白字符 insert_final_newline = true # 始终在文件末尾插进一个新行 [*.md] # 暗示仅 md 文件适用以下规则 max_line_length = off trim_trailing_whitespace = false

prettier

在项目根目录下新建一个 .prettierrc.js 文件,重点功效为格式化代码pnpm i prettier -Dmodule.exports = { singleQuote: true, printWidth: 100, tabWidth: 2, useTabs: false, semi: true, trailingComma: none, endOfLine: auto }

ESLint

在项目根目录下新建一个 .eslintrc.js 文件,重点功效为修复代码格式错误(需要安装ESLint插件)pnpm i eslint eslint-config-prettier eslint-define-config eslint-plugin-prettier eslint-plugin-vue @typescript-eslint/eslint-plugin @typescript-eslint/parser @vue/eslint-config-typescript -Dmodule.exports = { root: true, env: { node: true }, parser: vue-eslint-parser, parserOptions: { parser:@typescript-eslint/parser, ecmaVersion: 2018, sourceType: module, jsxPragma: React, ecmaFeatures: { jsx: true} }, extends: [plugin:vue/vue3-recommended, plugintypescript-eslint/recommended, plugin:prettier/recommended, eslint-config-prettier ], rules: { space-before-function-paren: off, @typescript-eslint/ban-ts-ignore: off, @typescript-eslint/explicit-function-return-type: off, @typescript-eslint/no-explicit-any: off, @typescript-eslint/no-var-requires: off, @typescript-eslint/no-empty-function: off, @typescript-eslint/no-use-before-define: off, @typescript-eslint/ban-ts-comment: off, @typescript-eslint/ban-types: off, @typescript-eslint/no-non-null-assertion: off, @typescript-eslint/explicit-module-boundary-types: off, @typescript-eslint/no-unused-vars: [ error, { argsIgnorePattern: ^_, varsIgnorePattern: ^_ } ], no-use-before-define: off, no-unused-vars: [ error, { argsIgnorePattern:^_, varsIgnorePattern: ^_ } ], vue/comment-directive: off, vue/script-setup-uses-vars: error, vue/multi-word-component-names: off, vue/custom-event-name-casing: off, vue/attributes-order: off, vue/one-component-per-file: off, vue/html-closing-bracket-newline: off, vue/max-attributes-per-line: off, vue/multiline-html-element-content-newline: off, vue/singleline-html-element-content-newline: off, vue/attribute-hyphenation: off, vue/require-default-prop: off, vue/html-self-closing: [ error, { html: { void: always, normal: never, component: always }, svg: always, math: always} ] } }

ts

在项目根目录下新建一个 tsconfig.json 文件{ "compilerOptions": { "baseUrl": ".", "module": "ESNext", "target": "ESNext", "lib": ["DOM", "ESNext"], "strict":true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "jsx": "preserve", "moduleResolution": "node", "isolatedModules": true, "resolveJsonModule":true, "noUnusedLocals": true, "strictNullChecks": true, "forceConsistentCasingInFileNames": true, "paths": { "@/*": ["./src/*"] }, "types": ["vite/client","node"] }, "include": [ "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "types/**/*.d.ts", "types/**/*.ts", "build/**/*.ts", "build/**/*.d.ts", "mock/**/*.ts", "vite.config.ts" ], "exclude": ["node_modules", "dist"] }

husky

重点功效在于提交代码前为咱们有些事情,如格式化、检测提交规范等(需要先初始化git)

1.pnpm install -D husky2.npx husky-init 在.husky/pre-commit下加入下面的代码#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" // 对应的script脚本为"lint": "eslint \"{src,mock,build}/**/*.{vue,ts,tsx}\" --fix" pnpm lint

commitlint

重点功效为提交代码时的规范名叫作检测在项目根目录下新建一个 commitlint.config.js 文件pnpm install -D @commitlint/config-conventional @commitlint/clinpx husky add .husky/commit-msg npx --no -- commitlint --edit ${1}module.exports = { extends: [@commitlint/config-conventional], rules: { body-leading-blank: [2, always], footer-leading-blank: [1, always], header-max-length: [2, always, 108], subject-empty: [2, never], type-empty: [2, never], subject-case: [0], type-enum: [ 2, always, [ feat, // 新功能 fix, // 修复bug perf, // 性能优化 style, // 修改代码格式,不影响代码规律 docs, // 修改文档 test, // 修改测试用例 refactor, // 代码重构 build, // 构建流程、外边依赖变更(如升级 npm 包、修改 webpack 配置等) ci, // 连续集成 chore, // 其它提交 revert, // 代码回滚 types, // ts wip // 功能研发 ] ] } }

约束包管理器

在package.json里新增scripts脚本"preinstall": "npx only-allow pnpm",功效项目里只能运用pnpm

好了,初期的有些工程化咱们就做好了,后面的后面再说吧~

作者:小心海一拳打爆提瓦特

链接:

https://juejin.cn/post/7281185552811917375




上一篇:50 个前端效率工具、网站和书籍整理
下一篇:Django研发网站-5-运用bootstrap模板美化前端页面
回复

使用道具 举报

3072

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158925
发表于 2024-10-31 19:31:22 | 显示全部楼层
软文发布平台 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 10:39 , Processed in 0.114665 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.