前期接了个私人项目,作个官网,想到在公司都是使用vue
技术栈,而官网恰好可使用nuxt来作。前端
nuxt
安装能够按照官网的步骤来vue
// 默认安装 create-nuxt-app yarn create nuxt-app <project-name> cd <project-name> yarn dev
项目下直接安装对应的预处理器node
yarn add less less-loader
在plugins
文件夹下建立lib-components.js
文件ios
import Vue from 'vue'; import LoadImage from "../components/LoadImage"; const components = { LoadImage }; Object.entries(components).forEach(([name, component]) => { Vue.component(name, component) });
在nuxt.config.js
文件中配置nginx
... plugins: [ ... '@/plugins/lib-components' ], ...
若是咱们想在全局来作请求,在传统的vue
项目中,咱们能够在main.js
中挂载到原型上,而在nuxt
项目上仍是经过plugins
目录。npm
// 在plugins目录中创建request.js // axios 配置可自定义 Vue.use({ install: function(Vue) { Vue.prototype.$http = http; } });
在nuxt.config.js
文件中配置json
... plugins: [ ... '@/plugins/request' ], ...
其余的配置与问题其实均可以在官网中查到,语法与vue
彻底无缝对接。axios
项目编写完成后要部署到线上,由于这个项目仍是一个先后端分离的项目,且前端仍是使用nginx
来作代理。后端
服务器使用的是centos
系统,可使用yum
安装centos
curl -sL https://rpm.nodesource.com/setup_10.x | bash - yum install -y nodejs node -v
yarn build
命令/opt/deploy/front
进入目录执行
cd /opt/deploy/front npm install -production npm run start
server { listen 80; server_name www.test.com; location / { root /opt/deploy/front; # 前端文件目录 proxy_pass http://127.0.0.1:3000; } }
启动nginx
后能够访问域名看到项目。
对于线上项目,若是直接经过 node app
来启动,若是报错了可能直接中止致使整个服务崩溃,咱们可使用pm2
对node
进程管理
npm install pm2 -g
pm2.json
[ { "name": "demo", "script": "npm run start", "env_dev": { "NODE_ENV": "development" }, "env_production": { "NODE_ENV": "production" } } ]
pm2
cd /opt/deploy/front pm2 start pm2.json
pm2
指令pm2 start app.js # 启动app.js应用程序 pm2 start app.js --name="demo" # 启动应用程序并命名为 "demo" pm2 start app.js --watch # 当文件变化时自动重启应用 pm2 start script.sh # 启动 bash 脚本 pm2 list # 列表 PM2 启动的全部的应用程序 pm2 show [app-name] # 显示应用程序的全部信息 pm2 logs # 显示全部应用程序的日志 pm2 logs [app-name] # 显示指定应用程序的日志 pm2 stop all # 中止全部的应用程序 pm2 stop 0 # 中止 id为 0的指定应用程序 pm2 restart all # 重启全部应用 pm2 restart 0 # 重启id为0 的应用程序 pm2 delete all # 关闭并删除全部应用 pm2 delete 0 # 删除指定应用 id 0 pm2 startup # 建立开机自启动命令 pm2 save # 保存当前应用列表
整个项目从开始安装到部署上线仍是很平滑的,毕竟都是使用的vue
技术栈;可是仍是有能够优化的空间,该项目不是一个完整的ssr
项目,没有很好的运用nuxt
特性。