技术选型
基础框架 & UI库
基于公司前端团队的小伙伴们都是Vuer
,所以毫无质疑,使用Nuxt
作为基础框架,UI
库没有选,因为做的是官网,好多组件的样式都是比较开放的,很多UI库拿来之后,还得再调,太麻烦,自己去写感觉还是比较爽的。当然项目里UI库的开发参考了Element UI
以及 Vant UI
的源码,封装了Input
、Button
、Radio
、Form
等等,学习+实践。
打包工具
Webpack
移动端适配方案
postcss-px-to-viewport
真香
PC & Mobile的切换方案
本身考虑的是做媒体查询,但是奈何优秀的UI同学&产品同学的超高水平,大到整体的布局,小到一个标点符号,都有一定程度的修改,所以如果用媒体查询的话,个人认为:1.开发体验较差 2.可维护性较差 3.工作量大 4. 就很不爽。所以考在考虑多方面因素后,决定做M站
(古老的方法,但是真香),PC站 & M站 之间的切换方案用的是 Nginx
的机型查询。
技术栈归档:
- 项目架构:Nuxt + Webpack + Self UI(自己的UI)+ Element Ui + Vant Ui
- 代码风格:esLint + prettier
- UE:WoW.js + animate.css + page-transition.css + normalize.css
- 伪CI/CD(手动狗头):
ssh
脚本部署 - web服务器:Nginx
- 进程守护: pm2
前端的同学们可能不太涉及到的点
部署
部署这块,因为我们公司的服务器有限,而且项目比较轻量级,所以部署采用了点对点的SSH部署方式
本地新建.deploy.test.sh
npm run build:test #执行打包命令 tar -zcf dist.tar.gz engconfig.js nuxt.config.js package.json static .nuxt #打一个tar包 sudo scp -i ~/.ssh/id_rsa -r $1 abc@11.22.333.444:/data/......... #上传服务器,$1就是本地dist.tar.gz绝对路径 rm -rf dist.tar.gz .nuxt # 用完删了 复制代码
prod、stage等等环境 同理。
web服务器&进程守护
因为是服务端渲染,我也不是用的generate
的打包方式,所以需要在服务器上起一个web server来渲染我的网站,用到了Nginx 和 pm2。
Nginx配置点就是proxy_pass
location / { proxy_pass http://localhost:3030 } 复制代码
pm2启动
pm2 start npm --name "xx" -- run start 复制代码