详解angularjs4部署文件过大解决过程


Posted in Javascript onDecember 05, 2018

这是我人生的第一篇文章,写得不好,请见谅!

本人是一个java web开发工程师,对angularjs4小有接触,最近看到一个漂亮的angularjs4的后台模板?angle,于是就在CSDN下载来测试一下,点击这里下载

模板的一些照片

详解angularjs4部署文件过大解决过程 

详解angularjs4部署文件过大解决过程

相信有经验的都知道,要运行先安装nodejs,配置nodejs环境等等,这里就不细说了,网上有很多这样的文章,而我参考的文章是,点击这里

所有东西都搞掂了,然后就是打包部署,放在服务器玩玩了, 

下面就是我遇到的问题和解决办法:

1、ng build 打包,加载的js文件高达8.6M

ng build

在本地nginx或者tomcat直接运行,感觉还不错,还以为就这么的搞掂了,真的很开心!直接就把它用winFcp复制到自己阿里云上,打开主页,瞬间懵逼了。好慢好慢,等了2分多钟才打开了这个页面。

详解angularjs4部署文件过大解决过程 

详解angularjs4部署文件过大解决过程

肯定我这里出问题,因为我上angle页面demo是这样子,看下面的图

详解angularjs4部署文件过大解决过程 

详解angularjs4部署文件过大解决过程

于是我百度了一下,发现ng build是有模式选择的,打包是用生产模式(?prod)

2、ng build ?prod打包,这次优了点js 4.1M

ng build --prod
ng build --prod --aot

这两个代码是一样,我也不知道开始?prod就默认开启aot了

这里,?prod参数后,angular-cli会把用不到的包都删掉,而?aot参数是让angular-cli启动预编译特性

在命令行中输入这个代码,出现了问题了,报错:Module not found: Error: Can't resolve ‘./$$_gendir/app/app.module.ngfactory'

很多我找了到问题的解决办法

是因为angular-cli 的版本有点低了,通过下面的代码来升到最新的版本

npm install --save-dev @angular/cli@latest

终于可以,看看效果如何,
详解angularjs4部署文件过大解决过程 ‘

详解angularjs4部署文件过大解决过程 

少是少了很多,但远远不够,问题出在哪呢?

能有什么办法?也只能继续百度了,我发现了ng serve这段代码,ng serve是启动一个小型web服务器,用于托管应用。

ng serve --prod --aot

惊奇发现,js文件只有1.1M比官网略优啊

详解angularjs4部署文件过大解决过程 

详解angularjs4部署文件过大解决过程

那疑问就来了,难道我要在服务器上架开发环境,好像不太现实吧。

3、nginx开启gzip优化,这次js是1.2M

又开始了我的百度之旅,我发现了一个东西 — gzip,是在nginx上开启gzip,优化访问速度

于是,我就在nginx上加了这段代码

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";

文章中没说这段东西放在哪,这里说以下,放在server括号里面就可以了。

最后的结果,如下

详解angularjs4部署文件过大解决过程 

详解angularjs4部署文件过大解决过程

但是,这好像和官网的demo还是有点差距啊,可能改以下gzip会有更好的效果,同时我还发现了一个问题,这个模板是把所有的东西都加载完才打开页面,其实有的东西是可以后面再加载的,所以接下来我就要在模板自身来优化了。

等我找到更好的优化方法会及时更新,谢谢大家,如有错误,请指出

2017年9月15日晚上更新

在上个星期,我已经优化了不少了,

详解angularjs4部署文件过大解决过程 

详解angularjs4部署文件过大解决过程 

自从上次写完这贴后,我就继续上网搜一下优化方法,我找到一天文章说,先gzip压缩到,然后再上传到服务器会快很多,我尝试过,并没有得到这样的结论,在nginx上是可以开启缓存的功能的,它把项目gzip压缩后,然后缓存在服务器上,每次打开网站时,取的是gzip后的文件,说明你压缩再上传和上传后再配置压缩是一样的,并没有得到优化。
有VPN的我,转战了google,

我找到了一个比我还努力的哥们,地址

这位哥们从7.07s优化到732ms,从4.5M优化到317.5kb全过程,测试网址是点击跳转

其中有的是重复了,有的是不错的做法,如下

(1)实现缓存,实际操作过程,是在nginx中server上,添加了这段东西

location ~* \.(gif|jpe?g|png|ico|swf)$ {
 # d - 天
 # h - 小时
 # m - 分钟
 expires 168h;
 add_header Pragma public;
 add_header Cache-Control "public, must-revalidate, proxy-revalidate";
 }

 # 由于js和css文件需要改动,设置的时间为5分钟
 location ~* \.(css|js)$ {
   expires 5m;
   add_header Pragma public;
   add_header Cache-Control "public, must-revalidate, proxy-revalidate";
 }

(2)更改了gzip压缩参数,地址(可能是官网吧,反正做得很漂亮),gzip的压缩变成如下

gzip on;
 gzip_static on;
 gzip_comp_level 2;
 gzip_http_version 1.0;
 gzip_proxied any;
 gzip_min_length 1100;
 gzip_buffers 16 8k;
 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

 # Disable for IE < 6 because there are some known problems
 gzip_disable "MSIE [1-6].(?!.*SV1)";

 # Add a vary header for downstream proxies to avoid sending cached gzipped files to IE6
 gzip_vary on;

(3)我发现项目打包的时候出错了,我把?AOT打成-AOT,一个一个符号只差就使得script.js这个文件少了一半

现在这次网页优化得比官网的还好了,如果还要弄的话,剩下的应该是减少了一下项目中没用的公共模块,可能又可以 减少一半,那就非常满意了,这个帖子算是终结了,主要是介绍了一下,我部署的全过程。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 对话框和状态栏使用说明
Oct 25 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
详解如何实现一个简单的 vuex
Feb 10 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
layui table 获取分页 limit的方法
Sep 20 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 #jQuery
关于RxJS Subject的学习笔记
Dec 05 #Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
Dec 05 #Javascript
详解如何在Angular优雅编写HTTP请求
Dec 05 #Javascript
JS+HTML5 canvas绘制验证码示例
Dec 05 #Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
Dec 05 #Javascript
JS实现简单的点赞与踩功能示例
Dec 05 #Javascript
You might like
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python之批量创建文件的实例讲解
2018/05/10 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
python微信公众号之关键词自动回复
2018/06/15 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
python Pexpect模块的使用
2020/12/25 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
消防安全管理制度
2014/02/01 职场文书
促销活动总结模板
2014/07/01 职场文书
调研座谈会发言材料
2014/08/23 职场文书
民事纠纷协议书
2016/03/23 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python