nuxt的generate和build的分别打包方式
generate打包
- 使用generate打包后每个对应的页面都会生成一个html,你在打包的时候不能关闭后台,他会请求后台数据生成首屏的数据
- 这样打包有一个弊端,当你首屏的数据发生更改的时候,他还是显示的是之前的数据,要想改变的话,需要重新打包发布才行。
- 所以,如果你的首屏是动态的就不建议使用这种打包方式了。
- 打包之后每个页面都生成了HTML页面,只有首屏的数据是之前渲染好了,但是其它数据还是从后台获取,比如翻页,第二页数据是重新请求后台的,你再次返回第一页也是再次请求的。
build打包
- build打包生成的是动态页面,当然是同样具有SEO功能。 发布的区别:
generate
打包方式简单,执行npm run dev会生成dist文件夹,放到服务器就好了。
build
- build打包方式比较复杂,执行npm run build命令。
- 服务器需要安装node,但node版本还不能过高,过高会有问题。我安装的是12.18.1
- 执行命令之后需要把下面这几个文件/文件夹放到服务器上 .nuxt / static / nuxt.config.js /package.json,如下图:
- 放到服务器上面之后执行npm i,把需要安装的包给安装了。我见有博客说如果直接执行npm i的话可能会有scss-loader啥的装不了,我也没试过,我直接用的淘宝镜像装的,这样也比较快。
- 然后执行命令npm start项目就可以运行了
- 但是服务器上不可能用命令窗口来启动项目的,万一命令窗口关闭的话我们的项目就跑不起来了,然后就要使用pm2进行进程托管了。这样命令窗口关闭也不会影响项目运行。
pm2的安装与使用 (我的服务器是windows系统)
- 安装pm2
npm i -g pm2
- 安装并配置 pm2-windows-service
npm i -g pm2-windows-service
- 添加pm2环境变量
添加系统环境变量 PM2_HOME=C:\Users\Administrator.pm2
右键 [我的电脑] - [属性] - [高级系统设置] - [环境变量] - 新建 [系统变量]
名称PM2_HOME
路径D:C:\Users\Administrator.PD-1.pm2(这路径根据自己需要定)
- 安装服务
以管理员权限打开新的命令行窗口,执行以下命令来安装服务
pm2-service-install
Perform environment setup ? 选 n, 继续
此时, PM2服务已安装成功并已启动, 可以通过 Wn+R来查看,输入services.msc即可看到服务
- 启动node程序
pm2 start npm --name "my-nuxt" -- run start
应该可以看到处于online状态
- 执行pm2 save
是进程状态进行保持,此时就可以关闭命令窗口了。
(ps)pm2常见问题
说实话可能是我能力不行,我使用pm2下来的感觉就是它很坑,一般不是一帆风顺的,可能你项目是online状态,但是用pm2 list命令时他就是error状态了,此时可以执行pm2 logs查看错误,一般都会有错误显示。
我查的一般的解决方法就是:
安装:node-cmd
npm install node-cmd --save
- 在之前的这 .nuxt / static / nuxt.config.js /package.json四个文件下新
- 新建个server.js
in server.js:
var cmd=require(‘node-cmd’); cmd.run(‘npm start’);
- 然后执行:
pm2 start server.js
下面是我做项目时参考文章,第三篇是pm2常见问题,有问题的话可以对号入座,看看能不能帮你解决问题。第二篇博客,写的不好的话勿喷,欢迎指点。
————————————————
参考链接:https://blog.csdn.net/Tomwildboar/article/details/102744630
https://www.jianshu.com/p/6cb523c0ced8
https://github.com/Unitech/pm2/issues/2808