【前端项目笔记】10 项目优化上线

项目优化上线

目标:优化Vue项目+部署Vue项目(上线提供使用)

项目优化

项目优化策略:

  1. 生成打包报告:根据生成的报告发现问题并解决
  2. 第三方库启用CDN:提高首屏页面的加载效率
  3. Element-UI组件按需加载
  4. 路由懒加载
  5. 首页内容定制

为项目添加进度条效果

会用到第三方的包nprogress,添加loading效果

  1. 安装:
npm install --save nprogress
  1. 导入nprogress包
  2. 需要配置两个拦截器request(请求拦截器)和response(响应拦截器)
    在请求拦截器request中调用NProgress.start()展示进度条
    在请求拦截器response中调用NProgress.done()隐藏进度条
    在这里插入图片描述
    在这里插入图片描述

build 编译并压缩(用于生产环境)
在build时报错:
在这里插入图片描述

解决方法:解决Error: error:0308010C:digital envelope routines::unsupported的四种解决方案
使用方案4解决报错:
在这里插入图片描述
在这里插入图片描述

解决build警告

使用babel插件在项目build阶段把所有console移除
安装babel-plugin-transform-remove-console:

npm install babel-plugin-transform-remove-console --save-dev

在这里插入图片描述
但由于此插件的配置全局生效,意味着项目开发、测试、发布阶段都会移除console.log,不方便测试。需要将其设置为仅在发布阶段生效:
在这里插入图片描述

生成打包报告

为了直观看到项目中存在的问题
在这里插入图片描述
在这里插入图片描述

看到有哪些文件体积扩大,需要将其优化
如何优化项目的打开速度

通过vue.config.js修改webpack的默认配置

Webpack是一个模块打包工具,它的主要功能是分析项目结构,找到JavaScript模块以及其他浏览器不能直接运行的扩展语言(如SCSS、TypeScript等),并将它们打包为合适的格式以供浏览器使用。Webpack通过依赖关系图来管理非代码资源,如images或web字体等,并会把它们作为依赖提供给应用程序。每个模块都可以明确表述它自身的依赖,在打包时可根据依赖进行打包,避免打包未使用的模块。Webpack的优点包括拥有依赖管理、动态打包、代码分离、按需加载、代码压缩、静态资源压缩、缓存等配置,扩展性强,插件机制完善,社区庞大,更新速度快,轮子丰富。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为开发模式与发布模式指定不同的打包入口

在这里插入图片描述

configWebpack和chainWebpack

在这里插入图片描述

通过chainWebpack自定义打包入口

在这里插入图片描述
在这里插入图片描述

通过externals加载外部CDN资源

内容分发网络(Content Delivery Network,CDN)是建立并覆盖在因特网之上的一层特殊网络,专门用于通过因特网高效传递丰富的多媒体内容,对因特网中的信息流进行优化,从而提高网络的使用效率。
在这里插入图片描述

externals排除某些包让它们不被打包到最终的文件里面去,而是去windows全局查找这些对象直接使用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
大大减少了依赖项占用内存:
之前:
在这里插入图片描述
之后:
在这里插入图片描述

通过CDN优化ElementUI的打包

在这里插入图片描述
在这里插入图片描述

首页内容定制

在vue.config.js中声明一个参数isProd,根据这个参数来自定制页面如何渲染
<%= %>代表输出
<% %>代表写正常的语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bulid发布成功后,多了一个dist文件夹,dist就是发布的产品
在这里插入图片描述

路由懒加载

打包构建项目时,JS包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,当路由被访问时才加载对应组件,可以提高页面加载效率。

  1. 安装@babel/plugin-syntax-dynamic-import
npm install --save-dev @babel/plugin-syntax-dynamic-import
  1. 在babel.config.js配置文件中声明该插件
    在这里插入图片描述

  2. 将路由改为按需加载的形式
    示例代码:
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

项目上线

在这里插入图片描述

通过node创建web服务器

创建node项目,并安装express,通过express快速创建web服务器,将vue打包生成的dist文件夹,托管静态资源即可。
npm init -y 初始化一个包管理配置文件
npm i express -S 安装一个第三方的包express
把vue_shop的发布文件夹dist复制到vue_shop_server中
创建app.js入口文件
在这里插入图片描述
打开网址 http://127.0.0.1显示空白页
根据报错进行修改:
在这里插入图片描述

  1. 修改引入的echarts CDN资源版本(最高5.4.3,没有5.5.1)
    在这里插入图片描述
  2. 将原来的externals中的vue、vueRouter、vueQuillEditor全部改成首字母大写
    在这里插入图片描述
  3. 在vue_shop中重新build得到dist文件,再复制到vue_shop_server中成功运行项目
    在这里插入图片描述

开启gzip配置

使用gzip可以减少文件体积,使传输速度更快。
可以通过服务器端使用Express做gzip压缩
npm i compression -S 安装相应包
在这里插入图片描述

配置HTTPS服务(一般由后台开发人员进行,前端了解即可)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用pm2管理应用

后台node server服务器被关掉,那么网站服务就停止了,再通过浏览器访问项目打不开

保留很多终端窗口可能难以管理,关闭终端窗口网站能够正常运行

PM2是常用的node进程管理工具,它可以提供node.js应用管理,如自动重载、性能监控、负载均衡等。同类工具有Supervisor、Forever等。

pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能。pm2基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。

  1. 在服务器中安装pm2:
    踩坑:安装成功,但是无法正常使用。
    搜索后发现需要手动配置系统环境变量,一定要重启,另外这里也需要注意:
    首先搜索全局安装位置npm root -g
C:\Windows\System32>npm root -g
D:\Program Files\nodejs\node_global\node_modules

然后把D:\Program Files\nodejs\node_global\添加到系统环境变量Path,多写一点都不会生效!
在这里插入图片描述

npm i pm2 -g

在这里插入图片描述

PS:谁懂我看到这里有多激动,整了快两天终于用上了pm2

  1. 启动项目命令:
pm2 start 脚本 --name 自定义名称

在这里插入图片描述
关掉终端后127.0.0.1能正常运行

  1. 查看运行项目:
pm2 ls

在这里插入图片描述

  1. 停止项目:
pm2 stop 自定义名称

在这里插入图片描述
网站就打不开了

  1. 重启项目:
pm2 restart 自定义名称

在这里插入图片描述
6. 删除项目:

pm2 delete 自定义名称

在这里插入图片描述

上传代码

git branch 查看当前所处分支 是master
git status 查看所有文件状态
git add . 把所有文件添加到暂存区
git commit -m "项目优化和上线" 提交代码,本地更新
git push 本地上传到云端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/375249.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java算法day12

java算法day12 199二叉树的右视图637二叉树的层平均值515 在每个树行中找最大值429 N叉树的层序遍历116 填充每个节点的下一个右侧节点指针 199 二叉树的右视图 这题还是层序遍历的板子&#xff0c;但是在处理上略有差异 这个题我一开始的想法就有误&#xff0c;因为我一开始…

通过手机供网、可修改WIFI_MAC的网络设备

一、修改WIFI mac&#xff08;bssid&#xff09; 取一根网线&#xff0c;一头连着设备黄色网口、一头连着电脑按住设备reset按键&#xff0c;插入电源线&#xff0c;观察到蓝灯闪烁后再松开reset按键 打开电脑浏览器&#xff0c;进入192.168.1.1&#xff0c;选择“MAC 地址修改…

彻底开源,免费商用,上海AI实验室把大模型门槛打下来

终于&#xff0c;业内迎来了首个全链条大模型开源体系。 大模型领域&#xff0c;有人探索前沿技术&#xff0c;有人在加速落地&#xff0c;也有人正在推动整个社区进步。 就在近日&#xff0c;AI 社区迎来首个统一的全链条贯穿的大模型开源体系。 虽然社区有LLaMA等影响力较大…

uniapp实现光标闪烁(配合自己的键盘)

前言 因为公司业务需要&#xff0c;所以我们... 演示 其实就是Chat自动打字效果 代码 键盘请看这篇文件 <template> <view class"list"><view class"title"><text>手机号码</text></view><view class"ty…

C#使用异步方式调用同步方法的实现方法

使用异步方式调用同步方法&#xff0c;在此我们使用异步编程模型&#xff08;APM&#xff09;实现 1、定义异步委托和测试方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Task…

centos安装数据库同步工具sqoop并导入数据,导出数据,添加定时任务

目录 1.安装jdk 1.1上传jdk安装包到/opt目录下并解压 1.2解压 1.3配置环境变量 2.安装hadoop 2.1.下载hadoop 2.2.解压hadoop 2.3配置环境变量 3.安装sqoop 3.1下载 3.2解压 3.3下载依赖包并复制到指定位置 3.3.1下载commons-lang-2.6-bin.tar.gz 3.3.2将mysql-c…

STM32 - 内存分区与OTA

最近搞MCU&#xff0c;发现它与SOC之间存在诸多差异&#xff0c;不能沿用SOC上一些技术理论。本文以STM L4为例&#xff0c;总结了一些STM32 小白入门指南。 标题MCU没有DDR&#xff1f; 是的。MCU并没有DDR&#xff0c;而是让代码存储在nor flash上&#xff0c;临时变量和栈…

Windows环境安装Redis和Redis Desktop Manager图文详解教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Redis概述 Redis是一个开源的高性能键值对数据库&#xff0c;以其卓越的读写速度而著称&#xff0c;广泛用于数据库、缓存和消息代理。它主要将数据存储在内存中&#xff0…

Codeforces Round #956 (Div. 2) and ByteRace 2024(A~D题解)

这次比赛也是比较吃亏的&#xff0c;做题顺序出错了&#xff0c;先做的第三个&#xff0c;错在第三个数据点之后&#xff0c;才做的第二个&#xff08;因为当时有个地方没检查出来&#xff09;所以这次比赛还是一如既往地打拉了 那么就来发一下题解吧 A. Array Divisibility …

使用pip或conda离线下载安装包,使用pip或conda安装离线安装包

使用pip或conda离线下载安装包&#xff0c;使用pip或conda安装离线安装包 一、使用pip离线下载安装包1. 在有网络的机器上下载包和依赖2. 传输离线安装包 二、在目标机器上离线安装pip包三、使用conda离线下载安装包1. 在有网络的机器上下载conda包2. 传输conda包或环境包3. 在…

Oracle Record Variables 记录变量

Oracle Record Variables&#xff08;Oracle记录变量&#xff09;是Oracle数据库编程中PL/SQL语言的一个关键特性&#xff0c;它允许开发者将多个相关的、分离的、基本数据类型的变量组合成一个复合数据类型&#xff0c;类似于C语言中的结构体&#xff08;STRUCTURE&#xff09…

Nvidia Isaac Sim跟着教程学习1-加载sim资产包

我是跟着这篇博客学习的&#xff0c;大家可以去他这里面看&#xff0c;下面就是把我认为一些坑的地方提出来&#xff0c;大家借鉴。 学习博客 1.下载sim资产包 注意下载完四个包后&#xff0c;一定要放在Downloads文件夹下&#xff0c;不是默认的中文 下载 文件夹 然后随便在…

旷视AI开源新突破:上传照片即可生成表情包视频!

日前&#xff0c;旷视科技发布了一项新的开源AI人像视频生成框架——MegActor。该框架让用户只需输入一张静态肖像图片和一段视频&#xff08;如演讲、表情包、rap&#xff09;&#xff0c;便可生成一段表情丰富、动作一致的AI人像视频。生成的视频长度取决于输入的视频长度。与…

【深度学习】基于深度学习的模式识别基础

一 模式识别基础 “模式”指的是数据中具有某些相似特征或属性的事物或事件的集合。具体来说&#xff0c;模式可以是以下几种形式&#xff1a; 视觉模式 在图像或视频中&#xff0c;模式可以是某种形状、颜色组合或纹理。例如&#xff0c;人脸、文字字符、手写数字等都可以视…

基于LSTM的局部特征提取网络算法原理

目录 一、LSTM的基本原理与结构 1. LSTM的核心结构 2. LSTM的工作原理 二、基于LSTM的局部特征提取 1. 输入处理与序列表示 2. LSTM层处理与特征提取 3. 特征提取的优势与应用 三、实现细节与注意事项 1. 数据预处理 2. 网络结构与参数选择 3. 训练策略与正则化 4.…

2023Q1 A股市场投资者持股结构(测算值,流通市值口径)

https://pdf.dfcfw.com/pdf/H301_AP202305291587341564_1.pdf A股投资者结构全景图&#xff08;2023Q1&#xff09; 李立峰 SAC NO:S1120520090003 2023年05月29日 请仔细阅读在本报告尾部的重要法律声明 仅供机构投资者使用 证券研究报告 A股投资者结构总览 2 A股投资者结构 个…

数据结构(3.9_1)——特殊矩阵的压缩存储

总览 一维数组的存储结构 如果下标从1开始&#xff0c;则a[i]的存放地址LOC (i-1)*sizeof(ElemType); 二维数组的存储 二维数组也具有随机存储的特性 设起始地址为LOC 在M行N列的二维数组b[M][N]中&#xff0c;若按行优先存储&#xff0c; 则b[i][j]的存储地址的LOC (i*…

【Element-UI 表格表头、内容合并单元格】

一、实现效果&#xff1a; &#x1f970; 表头合并行、合并列 &#x1f970; &#x1f970; 表格内容行、合并列 &#x1f970; thead和tbody分别有单独的合并方法 二、关键代码&#xff1a; <el-table size"mini" class"table-th-F4F6FB" align&qu…

最好的照片恢复软件是什么?您需要了解的十大照片恢复工具

在当今的数字时代&#xff0c;丢失的珍贵照片可能是一件令人心碎的事情。无论是由于意外删除、文件损坏还是意外格式&#xff0c;对专业摄影师和普通拍照爱好者的影响都是巨大的。幸运的是&#xff0c;各种照片恢复软件解决方案可以帮助您恢复这些丢失的记忆。本文根据第一手经…

论文阅读--Simple Baselines for Image Restoration

这篇文章是 2022 ECCV 的一篇文章&#xff0c;是旷视科技的一篇文章&#xff0c;针对图像恢复任务各种网络结构进行了梳理&#xff0c;最后总结出一种非常简单却高效的网络结构&#xff0c;这个网络结构甚至不需要非线性激活函数。 文章一开始就提到&#xff0c;虽然在图像复原…