angular 项目迭代+记录采坑
年中的时候 正在做的项目来了新的领导 给我们的NG4项目来了一次大整顿。
我们公司项目基本都是敏捷开发-->
开发出一个成熟的shared目录(里面有所有的公用组件 公用服务 公用工具类) 然后所有项目都可以用
因此每起一个项目 直接把shared目录拿过来 然后不论是画页面 还是写功能都方便了很多
但是凡事有利就有弊-->
由于这个shared目录在开发的时候 是一个后台去研究完NG4然后打的底 后面几乎所有的开发人员也可以在里面去进行二次开发
就导致shared目录特别乱 除了耦合性很高【明明已经拿来做B项目了 但是里面还有A项目的残余逻辑代码】
还有资源打包问题 / shared目录版本管理问题 / 插件引入问题 / 缓存问题 / 项目配置问题都一一浮现
领导花了几天看了NG4的英文原版文档 就开始弄了 然后给我们整理出了一个问题LIST:
1. 项目的默认路由配置的是/home 也就是首页
因此在走/login的时候也会先去走一遍/home 加载完资源再去走login 这样会引起浪费时长【home加载资源较多】
Solution:
在app.component中拦截url,增加鉴权判断
this.router.events.filter(event=>event.instanceof NavigationStart)
.subscribe((event:NavigationStart)=>{
if(event.url.includes('login')){
//直接进login模块
}else{
//鉴权如果不通过跳login模块
}
})
2. 大量css和js从style.default.css / styles.scss /.angular.json 引入,导致2个问题
i:打包后的js和css过大 且没必要 占带宽
ii:插件版本管理困难
Solution:
修改配置: 删掉.angular-cli.json中的scripts和styles(在index.html中以CDN的形式引入)
删掉src/styles.scss中可以以CND形式引入的css文件引入
删掉src/assets/libs/framework/css/style.default.css中可以以CDN形式引入的css文件引入
以下是修改后的index.html文件中的部分css和js直接从CDN引入
3 新版本发布后 打包后的index.html没有产生代码上的改变(即使内部css/js发生变化) 因此不会自动拉取最新代码而产生缓存问题
客户端需要清空缓存重新加载才能生效
Solution:
给index.html文件增加禁用缓存代码
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control content="no-cache"">
<meta http-equiv="Cache" content="no-cahce">
Nginx缓存优化
//html页面不缓存
location / {
add_header Cache-Control "private,no-store,no-cache,must-revalidate,proxy-revalidate";
root /**/euicc-portal/;
index index.html index.htm;
}
4.打的包过大且SourceMap没有禁止 代码规范未知
最新文章
- 重定向Http status code 303 和 302
- opencv 比较直方图方式 进行人脸检测对比
- 本地测试SMTP服务器
- 关于checkbox的一些问题(全选,反选,以及取值)
- 关于用phonegap+jquery moblie开发 白屏闪屏的解决方法
- 对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结
- postgres create table default now
- 【Android纳米学位】project 0 - 问题汇总
- vs2010中看不见类视图和资源视图的解决方法
- Android中集成第三方库的方法和问题
- 使用float和display:block将内联元素转换成块元素的不同点
- css3弹性盒模型flex快速入门与上手(align-content与align-items)
- IIS与Apache禁止IP地址直接访问网站
- Rweibo , wordcloud
- xcode进行代码覆盖率测试
- 【网络流】【BZOJ1221】【HNOI2001】软件开发
- 一个handle使用更新线程的实例
- 005.Ceph文件系统基础使用
- Spark jdbc postgresql数据库连接和写入操作源码解读
- RzPageControl 关闭按钮
热门文章
- 查看java资源的占用
- ThinkPHP支持模型的分层
- Taro踩坑记录一: swiper组件pagestate定制,swiperChange中setState导致组件不能滚动。
- gulpfile.js demo
- 玩转大数据系列之Apache Pig高级技能之函数编程(六)
- springboot整合rabbitMQ时遇到的消息无法入列问题
- 8种nosql数据库对比
- windows 常用的快捷键
- Luogu P4932 浏览器(二进制)
- Windows API 第19篇 FindFirstVolumeMountPoint FindNextVolumeMountPoint