# blog-front **Repository Path**: jswgl/blog-front ## Basic Information - **Project Name**: blog-front - **Description**: 博客前端页面 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-10-25 - **Last Updated**: 2024-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 安装vite ``` npm install create-vite-app -g --force 下载全局 强制替换之前的 create-vite-app project-name 第二种: npm init vite-app project-name ``` ## 差异 1.默认采用es模块 (import 语法 在es6默认会发一个请求) 2.默认会给vue模块添加一个前缀 /@modules 3.把.vue文件在后端解析成一个对象(唯一就是编译了.vue 文件) ## vite初始化 npm init @vitejs/app my-vue-app --template vue ## 别名设计 ``` import path from 'path' export default { alias: { "@": path.resolve(__dirname, "src"), "comps": path.resolve(__dirname, "src/components"), }, } ``` ## 支持jsx ``` npm i @vitejs/plugin-vue-jsx -D import vueJsx from "@vitejs/plugin-vue-jsx"; export default { plugins: [vue(), vueJsx()], } ``` ## 代码规范 eslint 通过prettier做代码格式化。 ``` 配置 ESLint : ESLint 官方文档 先 安装 ESLint # npm npm install eslint --save-dev # yarn yarn add eslint --dev 再 初始化 ESLint # npm npx eslint --init 或 # yarn yarn run eslint --init # 安装 npm install eslint --save-dev # 初始化 npx eslint --init # 选择 帮我们找到不规范的语法,并且强制应用代码规范 ? How would you like to use ESLint? … To check syntax only To check syntax and find problems ❯ To check syntax, find problems, and enforce code style # 选择 (import/export)代码规范(ES6 代码规范) ? What type of modules does your project use? … ❯ JavaScript modules (import/export) CommonJS (require/exports) None of these # 选择 项目中使用的前端框架 ? Which framework does your project use? … React ❯ Vue.js None of these # 是否验证 ts 代码规范 ? Does your project use TypeScript? › No / Yes # 代码的运行环境是 浏览器/node ? Where does your code run? … (Press to select, to toggle all, to invert selection) ✔ Browser ✔ Node # 选择一个流行的代码规范 ? How would you like to define a style for your project? … ❯ Use a popular style guide Answer questions about your style Inspect your JavaScript file(s) # 选择 Standard 代码规范 ? Which style guide do you want to follow? … Airbnb: https://github.com/airbnb/javascript ❯ Standard: https://github.com/standard/standard Google: https://github.com/google/eslint-config-google XO: https://github.com/xojs/eslint-config-xo # ESLint配置文件 代码的保存格式 ? What format do you want your config file to be in? … ❯ JavaScript YAML JSON # 是否同意开始安装 ? Would you like to install them now with npm? › No / Yes ... Successfully created .eslintrc.js file # 配置成功 需要 ESLint 对代码进行验证,手动配置验证的脚本文件 编辑package.json文件 // eslint 需要验证 sec 目录下所有的 js、jsx、vue、ts、tsx 后缀的文件资源,对他们进行代码规范验证 // --fix 是指对于不符合要求的代码会自动格式化(简单的自动优化) "scripts": { ... // for mac "lint": "eslint 'src/**/*.{js,jsx,vue,ts,tsx}' --fix" // for window "lint": eslint 'src/**/*.{js,jsx,vue,ts,tsx} --fix" } 验证是否配置成功:编辑main.js文件 import { createApp } from 'vue' // 尾部加上分号,故意设置一个简单的语法错误 import App from './App.vue'; createApp(App).mount('#app') # 终端使用 eslint 进行校验 npm run lint 效果:自动解决了main.js的分号错误,抛出其他错误 The template root requires exactly one element —— 模板只允许存在一个根节点,在 Vue3 中可以使用多个根节点,这是 Vue2 校验规范的遗留问题 所以需要修改 eslint 校验版本:编辑.eslintrc.js文件 寻找 Vue3 校验版本 package.json 中的校验文件是 eslint-plugin-vue 在 node_modules 中寻找 eslint-plugin-vue 文件夹 eslint-plugin-vue/lib/configs 中就是 eslint 的校验版本 essential 为Vue2 校验版本,这里使用 Vue3 强校验 - vue3-strongly-recommended extends: [ ... 'plugin:vue/vue3-strongly-recommended', ], 再次执行 npm run lint ,无报错 Vue3 强校验规定:超过两个属性需要折行 集成 VSCode 插件: 目的: ESLint 配置目的是在代码提交时进行审核 VSCode 插件目的是在编写代码时进行辅助(提醒、格式化) 禁用 Vetur 插件 安装 eslint 插件 设置能够自动格式化代码:扩展设置中勾选 下面这个选项 Eslint>Format:Enable 勾选上 然后 选择格式化方式eslint 以后在配置格式化工具时候,默认为 ESLint 就可以了(之后可以直接使用快捷键) 安装 volar 插件 配置 git commit hook: lint-staged GitHub 官方文档 目的: ESLint 配置目的是在代码提交时进行审核(需要运行 npm run lint) 这里使用 hook 钩子,在提交时候自动对代码 进行校验 安装: npx mrm@2 lint-staged 编辑package.json文件 // 遇到 js,jsx,vue,ts,tsx 文件时,运行 npm run lint ... "lint-staged": { "src/**/*.{js,jsx,vue,ts,tsx}": [ "npm run lint" ] } 验证是否配置成功:编辑main.js文件 import { createApp } from 'vue' // 尾部加上分号,故意设置一个简单的语法错误 import App from './App.vue'; // 添加一个复杂错误 const a = 123 createApp(App).mount('#app') # 终端使用 git commit 进行校验 git status git add . git status git commit -m "config eslint" 会在 git commit 的时候运行 npm run lint,并且抛出报错 位置和原因,错误的代码也不会被提交 在开发和构建的时候进行验证: 目的: ESLint 配置目的是在代码提交时进行审核 VSCode 是编写代码时候辅助校验 开发和构建验证是在 浏览器渲染时候校验并抛出异常 vite-plugin-eslint GitHub 官方文档 ### 安装 # npm npm install vite-plugin-eslint --save-dev # yarn yarn add vite-plugin-eslint --dev 配置:编辑vite.config.ts文件 ... import eslintPlugin from 'vite-plugin-eslint' plugins: [ ... eslintPlugin({ // 配置 }) ] }) 验证是否配置成功:编辑main.js文件 import { createApp } from 'vue' // 尾部加上分号,故意设置一个简单的语法错误 import App from './App.vue'; createApp(App).mount('#app') 效果展示: 现在 已经全局校验,例如 npm run build,当发现错误时,无法继续执行 Git commit 提交规范 Commit message 和 Change log 编写指南 Git 使用规范流程 Git 工作流程 目的:规范化的 Git commit 日志,便于后续代码 review,版本发布以及日志自动化生成等等 commitlint GitHub 官方文档 常用 commit 类型说明: 类型 说明 build 对构建系统或者外部依赖项进行了修改 ci 对 CI 配置文件或脚本进行了修改 chore 构建过程或辅助工具的变动 docs 新增或修改文档 feat 新功能,比如 feat: login fix 修补 bug perf 优化相关,比如提升性能、体验 refactor 重构(即不是新增功能,也不是修改bug的代码变动) revert 回滚到上一个版本 style 不影响代码含义的修改,比如空格、格式化、缺失的分号等,而不是 css 修改 test 增加测试代码或者修改已存在的测试 安装: # For mac: npm install --save-dev @commitlint/{config-conventional,cli} # For Windows: npm install --save-dev @commitlint/config-conventional @commitlint/cli # 自动创建配置文件(小编下面手动来创建) echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js 手动创建配置文件:在根目录创建 commitlint.config.js文件 module.exports = { extends: ['@commitlint/config-conventional'] } 安装 Husky(之前已经安装、激活过 Husky,对添加 hook 进行手动配置): # Install Husky v6 npm install husky --save-dev # or yarn add husky --dev # Activate hooks npx husky install # or yarn husky install # Add hook npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"' 终端执行: # 添加 Husky 文件 npx husky add .husky/commit-msg '' 编辑 husky/commit-msg文件: #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx --no-install commitlint --edit "$1" 验证是否配置成功: # 提交代码 git add . # 查看被上传的文件 git status # 提交日志(故意将日志内容乱写) git commit -m "asdfasdfadsa" 结果展示:无法提交,抛出异常原因 重新提交日志内容: # 构建过程或辅助工具的变动 - 配置了 commitlint git commit -m "chore: 配置 commitlint" # 上传成功... ``` ## typescript整合 npm install --save-dev @types/node ## 配置vite ## 配置GZIP压缩 安装依赖 yarn add vite-plugin-compression -D 修改 vite.config.js import viteCompression from 'vite-plugin-compression' plugins:[ ... viteCompression({ verbose: true, disable: false, threshold: 10240, algorithm: 'gzip', ext: '.gz' }) ] ## 安装sass npm i sass -D ## 安装路由 vue-routers npm i vue-router@next -S ## 安装vuex npm i vuex@next -S ## 初始化样式 npm install --save normalize.css ## 动画 App.vue 使用: import AOS from 'aos' Aos.init() data-aos-offset 是立刻触发动画还是在指定时间之后触发动画 200 120 data-aos-duration 动画持续时间 600 400 data-aos-easing 动画的easing动画效果 ease-in-sine ease data-aos-delay 动画的延迟时间 300 0 data-aos-anchor 锚元素。使用它的偏移来取代实际元素的偏移来触发动画 #selector null data-aos-anchor-placement 锚位置,触发动画时元素位于屏幕的位置 top-center top-bottom data-aos-once动画是否只会触发一次,或者每次上下滚动都会触发 true false ## Todo 1.脚手架 2.vue3组件库 3.低代码平台 4.markdown编辑器