# by-vue3-blog **Repository Path**: baymaxsjj/by-vue3-blog ## Basic Information - **Project Name**: by-vue3-blog - **Description**: 使用Vue 3.0重构博客前端!不依赖第三方UI框架。 - **Primary Language**: JavaScript - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://baymaxsjj.github.io/blog/index.html#/ - **GVP Project**: No ## Statistics - **Stars**: 68 - **Forks**: 16 - **Created**: 2020-12-07 - **Last Updated**: 2025-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, 博客 ## README ### Vue 3个人博客前端介绍 > 使用vite开发,更改多页面配置和架构,更新部分插件版本,修复图片加载失败,修复element-plus版本升级bug 本次去除Element UI,自己编写所需功能组件。编写了导航栏、全局提示、通知提醒框、空状态、无限滚动、按钮、头像、回到顶部、评论、音乐播放器、分页器、滑动条、Markdown预览、图片。其中图片样式来自Element,音乐播放器样式来自APlayer.其余的组件样式来自Ant Design of Vue。 也因为如此!本次前台打包后大小从1.3M降到0.9M左右。去除了注册,登录,用户信息功能!采用第三方登录!全站响应式布局,采用更简洁的设计!统一的设计风格,后台现在升级到Vue 3+Element Plus,添加数据统计。 ### 项目演示 本次重构分为两个部分,(只重构前台,后台升级为Vue 3+Element Plus) 一:编写博客前台所需的功能组件 二:重新设计博客前台及功能 Vue3前端源码:[https://gitee.com/baymaxsjj/by-vue3-blog](https://gitee.com/baymaxsjj/by-vue3-blog) Vue3UI组件源码:[https://gitee.com/baymaxsjj/by-vue3-ui](https://gitee.com/baymaxsjj/by-vue3-ui) Vue2前端源码:[https://gitee.com/baymaxsjj/by-vue-blog](https://gitee.com/baymaxsjj/by-vue-blog)
### 项目介绍 Vue版本:3.0.3,Laravel版本:7.0 1.Vue 多页面配置,一个项目包括前后端, 2.采用Element UI编写前后台 3.完成模块: 前台:首页介绍,文章展示,标签展示,分类展示,文章解析,生成目录,运行demo,模块显示,留言评论,友情链接,第三方登录(QQ,GITEE,GITHUB),(登录,注册,找回密码,个人信息已移除) 后台:数据统计,发表文章(模块管理,多平台发布,提交百度收录),文章列表,用户管理,友情链接,项目管理,成长路线,留言管理,网站公告,首页轮播,音乐管理, 4.项目配置:前后台分开打包,按需加载,动态路由,gizp压缩,去除生产环境的console.log,反向代理,cdn引入,服务器自动拉取代码打包编译脚本 ## 安装依赖 ``` pnpm install ``` ### 运行项目 ``` //运行网站前台 pnpm run dev_home //运行网站后台 pnpm run dev_admin ``` ### 打包 ``` //编译网站前台 pnpm run build_home //编译网站后台 pnpm run build_admin ``` ### vue cli配置参考 See [Configuration Reference](https://cli.vuejs.org/config/). ### 前后台分开打包 在package.json中配置 ```json "scripts": { "dev_home": "vite --mode home_dev", "build_home": "vite build --mode home_pro", "preview_home": "vite preview --mode home_pro", "dev_admin": "vite --mode admin_dev", "build_admin": "vite build --mode admin_pro", "preview_admin": "vite preview --mode admin_pro" }, ``` 在vue.config.js配置 ```js const env=loadEnv(mode, process.cwd()) const app_ip = env.VITE_API_HOST_IP; const isDev=mode=='development' const app_host = `http://${app_ip}`; let pageName = env.VITE_PAGE_NAME let pageRoot=env.VITE_PAGE_ROOT console.log('页面名称',pageName) console.log('页面人口',pageRoot) ``` ### 多页面配置, 采用环境变量方式,进行多页面配置 ```js root:pageRoot, // 项目部署的基础路径 build: { outDir: `./dist/${pageName}`, rollupOptions: { input: { main: resolve(__dirname, `${pageRoot}/index.html`), }, }, }, ``` ### 反向代理配置 由于项目使用到第三方的接口需要反向代理 ```js devServer: { sockHost: "localhost", disableHostCheck: true, port: 8080, // 端口号 host: "0.0.0.0", https: false, // https:{type:Boolean} open: true, //配置自动启动浏览器 proxy: { //后台接口 "/apis": { // target: "http://127.0.0.1:80/api/v1", // 需要请求的地址 target: import.meta.env.VITE_APP_API_URL, // 需要请求的地址 changeOrigin: true, // 是否跨域 pathRewrite: { "^/apis": "" // 替换target中的请求地址,也就是说,在请求的时候,url用'/proxy'代替'http://ip.taobao.com' } }, //音乐接口 "/music": { target: "https://music.liuzhijin.cn", // 需要请求的地址 // target: import.meta.env.VUE_APP_URL, // 需要请求的地址 changeOrigin: true, // 是否跨域 pathRewrite: { "^/music": "" // 替换target中的请求地址,也就是说,在请求的时候,url用'/proxy'代替'http://ip.taobao.com' } }, //每日英语接口 "/english": { target: "http://sentence.iciba.com", // 需要请求的地址 // target: import.meta.env.VUE_APP_URL, // 需要请求的地址 changeOrigin: true, // 是否跨域 pathRewrite: { "^/english": "" // 替换target中的请求地址,也就是说,在请求的时候,url用'/proxy'代替'http://ip.taobao.com' } }, "/loimg": { target: "https://pc-store.lenovomm.cn/wallpapercontent/wallpaper/classify/tag_wallpapers", // 需要请求的地址 // target: import.meta.env.VUE_APP_URL, // 需要请求的地址 changeOrigin: true, // 是否跨域 pathRewrite: { "^/loimg": "" // 替换target中的请求地址,也就是说,在请求的时候,url用'/proxy'代替'http://ip.taobao.com' } } } }, ``` ### nginx配置 ```bash location /apis { proxy_pass 自己后端域名; } location /vendor/sitemap/styles/xml.xsl { proxy_pass https://api.yunmobai.cn/vendor/sitemap/styles/xml.xsl; } location /music { proxy_pass https://music.liuzhijin.cn/; } location /english { proxy_pass http://sentence.iciba.com/; } ``` ### 自动化脚本 ```sh echo 同步远程仓库 git pull echo 编译主页 npm run build_home echo 删除源文件 rm -r ../js ../css ../img ../fonts echo 拷贝主页 cp -rf ../home/. ../ echo 删除编译文件 rm -r ../home ../admin.html echo 完成 ```