Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置
Node.js简介
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用。Node.js的包管理器npm,是全球最大的开源库生态系统。Node.js的典型应用场景包括:
- 实时应用:如在线聊天,实时通知推送等等(例如socket.io)。
- 分布式应用:通过高效的并行I/O使用已有的数据。
- 工具类应用:海量的工具,小到前端压缩部署(例如grunt),大到桌面图形界面应用程序。
- 游戏类应用:游戏领域对实时和并发有很高的要求(例如网易的pomelo框架)。
- 利用稳定接口提升Web渲染能力
- 前后端编程语言环境统一:前端开发人员可以非常快速地切入到服务器端的开发(例如著名的纯Javascript全栈式MEAN架构)。
部署Node.js环境
二进制安装
该部署过程使用的安装包是已编译好的二进制文件,解压之后,在bin文件夹就已存在node和npm,无需重复编译.
下载解压node.js安装包
wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz
tar xf node-v6.9.5-linux-x64.tar.xz
ln -s /root/node-v6.9.5-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v6.9.5-linux-x64/bin/npm /usr/local/bin/npm
# 查看版本
npm -v
3.10.10
node -v
v6.9.5
# 至此,Node.js环境已安装完毕。软件默认安装在/root/node-v6.9.5-linux-x64/目录下。
# 如果需要将软件安装到其他目录(例如: /opt/node/下),执行下卖弄步骤
mkdir -p /opt/node/
mv /root/node-v6.9.5-linux-x64/* /opt/node/
rm -f /usr/local/bin/node
rm -f /usr/local/bin/npm
ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm
使用NVM安装多版本
NVM(Node Version Manager)是Node.js的版本管理软件,使您可以轻松在Node.js各个版本间进行切换。适用于长期做node开发的人员或有快速更新node版本、快速切换node版本的场景。
完成以下操作,使用NVM安装多个Node.js版本
使用git将远吗克隆到~/.nvm目录下,并检查最新版本
yum install git
git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
# 激活NVM
echo ". ~/.nvm/nvm.sh" >> /etc/profile
source /etc/profile
# 列出Node.js所有版本
nvm list-remote
# 安装多个Node.js版本
nvm install v6.9.5
nvm install v7.4.0
# 运行nvm 1s查看已安装的Node.js版本,当前使用的版本为v7.4.0。返回结果如下所示
nvm ls
-> v6.9.5
system
unstable -> 6.9 (-> v6.9.5) (default)
部署测试项目
1 . 新建项目文件example.js
cd ~
vim example.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
2 . 运行项目
node ~/example.js &
# 一般会将写好的nodejs项目进行如下编译
cd admin-web
npm install --registry=https://registry.npm.taobao.org
npm run build:prod
# 查看是否监听项目端口,如果返回3000代表OK
ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 *:3000 *:*
项目优化策略
/*
1. 生成项目报告
2. 第三库启用CDN
3. Element-UI组件按需加载
4. 路由懒加载
5. 首页内容定制
*/
生成打包报告
打包时,为了直观地发现项目中存在的问题,可以在打包时生成报告,生成报告的方式有两种:
1.通过命令行参数的形式生成报告
// 通过 vue-cli的命令选项可以生成打包报告
// --report选项可以生成report.html以分析包内容
vue-cli-service build --report
// 通过可视化的UI面板直接查看报告(推荐)
在可视化的UI面板,通过控制台和分析面板,可以方便的查看项目中所存在的问题
项目上线相关配置
安装环境需要包
npm i express -S
上线环境配置
创建node项目,并安装express,通过express快速创建web服务器,将vue打包生成的dist文件夹,托管为静态资源即可
1.将打包好的dist目录复制到你要部署的目录,项目同级目录创建app.js文件
const express = require('express')
// 创建web服务器
const app = express()
// 托管静态资源
app.use(express.static('./dist'))
// 启动web服务器
app.listen(8080,() =>{
console.log('web server running at http://127.0.0.1')
})
node app.js
gzip压缩
安装对应包
npm install compression -D
使用pm2管理应用
npm i pm2 -g
// 启动项目
pm2 start脚本 --name 自定义名称
pm2 start ./app.js --name web_vuedemo
[PM2] Spawning PM2 daemon with pm2_home=/Users/youmen/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /Users/youmen/Music/vue-template/app.js in fork_mode (1 instance)
[PM2] Done.
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0 │ web_vuedemo │ fork │ 0 │ online │ 0% │ 12.6mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
// 查看运行项目
pm2 ls
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0 │ web_vuedemo │ fork │ 0 │ online │ 0% │ 34.5mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
// 重启项目
pm2 restart 自定义名称
// 停止项目
pm2 stop 自定义名称(或者id)
// 删除项目
pm2
方式2 server
// 一般做预览使用
npm install -g serve
serve -s dist
┌───────────────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:5000 │
│ - On Your Network: http://192.168.43.84:5000 │
│ │
│ Copied local address to clipboard! │
│ │
└───────────────────────────────────────────────────┘
Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置的更多相关文章
- django项目上线环境部署
django项目上线环境部署 第一步 安装python虚拟环境 1 安装虚拟环境virtualenv 2 安装virtualenvwrapper工具 3 确认virtualenvwrapper.sh脚 ...
- ubuntu环境部署项目
安装python3.6 第一步:sudo add-apt-repository ppa:jonathonf/python-3.6 如果报错为:sudo: add-apt-repository: com ...
- django+vue+nginx生产环境部署配置
部署环境: 1. linux redhat 7.1 2.python 3.6.3 3. vue 4. nginx 5. gunicorn 6. supervisord 安装: 一. 基础环境安装 1. ...
- PMP备考-第二章-项目运行环境与项目经理
组织系统的三大因素:组织治理框架,管理要素和组织结构 组织治理和项目治理 组织治理 :组织中的重要决策制定框架,谁有权在什么时候用什么发放做出并推行什么重要决策. 项目治理 :组织为项目建立的高级别的 ...
- spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)
一.spring boot 内置tomcat配置https: 关于自签名证书可以看下上一篇 spring boot1 更详细的可以看转载 https://www.jianshu.com/p/8d4ab ...
- 【Tomcat】使用tomcat manager 管理和部署项目,本地部署项目到服务器
在部署tomcat项目的时候,除了把war文件直接拷贝到tomcat的webapp目录下,还有一种方法可以浏览器中管理和部署项目,那就是使用tomcat manager. 默认情况下,tomcat m ...
- Linux环境部署项目引起Out of Memory Error: PermGen Space的解决方案
1. 背景 前几天,在搭建项目时遇到到一些问题,现在整理记录一下. Linux环境:Red Hat Enterprise Linux Server release 6.4: # 查看命令cat /et ...
- workermanPHP聊天框架项目windows环境部署实践
一.官方下载地址: https://www.workerman.net/workerman-chat 二.下载后解压至任意目录,如下图: 三.windows需配置PHP环境变量,如下图: 四.双击st ...
- Windows使用Node.js自动生成Vue.js模版环境部署步骤-----记录
node.js官网下载并安装node 进入node文档目录下,运行cmd 输入 node -v 查看node版本 出现表示安装完成 输入 npm -v 显示npm版本信息 安装cnpm 输入 npm ...
随机推荐
- CSS z-index应用靠近用户的框
1.z-index (1)z轴.数值越大,越靠近你 (2)只能作用于定位过的标签元素 应用示例 <!DOCTYPE html> <html lang="zh-CN" ...
- classmethod、staticclassmethod内置装饰器函数
# method 英文是方法的意思 # classmethod 类方法 # 当一个类中的方法中只涉及操作类的静态属性时,此时在逻辑上,我们想要直接通过类名就可以调用这个方法去修改类的静态属性,此时可以 ...
- Android 滑动删除控件推荐
implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0' <?xml version="1.0" enc ...
- ABBYY FineReader 15 PDF文档查看功能
PDF文档查看功能是ABBYY FineReader 15(Windows系统)OCR文字识别软件中PDF编辑器的一项基础功能,可供用户查看,搜索PDF文档,无需进入编辑模式,也可复制其中的文本,图片 ...
- IntelliJ IDEA 行注释的缩进设置(不自动添加注释到行首)
目录 现状 修改对比 最后 现状 想注释一行或一个方法,//注释总是生成在行首: 修改对比 要修改的配置在这: 我们可以在注释后添加一个空格,就变成了: 最后 设置完了看下注释效果: 这看起来才舒服.
- MarkDown使用之LaTeX表示数学公式
对于文本排版格式,对于\(Microsoft\,Word\)来说,功能尽全,可调的参数十分多,人们可能会将不少的时间放在具体的文字大小.实现样式.而\(markdown\)语法能够让人们通过符号去替代 ...
- Java集合【7】--List接口超级详细解析
目录 1.List接口的特性 2.List接口的源码解析 3.相关子类介绍 3.1 ArrayList 3.1.1 成员变量 3.1.2 构造方法 3.1.3 常用增删改查方法 添加元素 查询元素 更 ...
- C语言项目(一):学生信息管理系统
实现方式:链表 结构定义 1 typedef struct MyStu MyStudent; 2 typedef struct node Node; 3 typedef Node *pNode; 4 ...
- 去除openwrite.cn博客验证码限制
相信有的小伙伴肯定遇到过如下这种情况,但是作为老白嫖党肯定是 「下次一定」 了,所以今天我们来看看如何不关注公众号实现 「阅读原文」. 如何解决呢? 1.通过 F12 打开控制台,切换至 Elemen ...
- 基于React.js网页版弹窗|react pc端自定义对话框组件RLayer
基于React.js实现PC桌面端自定义弹窗组件RLayer. 前几天有分享一个Vue网页版弹框组件,今天分享一个最新开发的React PC桌面端自定义对话框组件. RLayer 一款基于react. ...