Angular 角2初始加载进度
我已经尽了最大努力降低Angular 2的捆绑包大小,并使用Angular 角2初始加载进度,angular,Angular,我已经尽了最大努力降低Angular 2的捆绑包大小,并使用Browserify+Rollup+Minify+GZIP将其大小相对成功地减小到约300kb(Angular 2+jquery+bootstrap+一些其他小型第三方库),下载捆绑包仍然需要一段时间,然后需要考虑reflect和zone.js的初始加载时间,这意味着在速度较慢的设备(手机)上加载站点最多需要4-5秒 虽然我知道这是不可避免的(至少现在是这样),但有没有办法以下载+反射/zone.js初始化的百分比来显示初始加载的加载进
Browserify
+Rollup
+Minify
+GZIP
将其大小相对成功地减小到约300kb(Angular 2+jquery+bootstrap+一些其他小型第三方库),下载捆绑包仍然需要一段时间,然后需要考虑reflect和zone.js的初始加载时间,这意味着在速度较慢的设备(手机)上加载站点最多需要4-5秒
虽然我知道这是不可避免的(至少现在是这样),但有没有办法以下载+反射/zone.js初始化的百分比来显示初始加载的加载进度
大多数例子如下所示:
<body>
<my-app>Loading...</my-app>
</body>
加载。。。
哪个正在工作,加载…
可以用微调器或任何自定义模板替换,但是有没有办法以有意义的方式获得实际进度
我要找的是类似于Gmail的加载进度,这是一个实际的进度条,带有最小/最大值,而不是一些不确定的微调器,这样用户就可以有某种形式的指示,表明他们需要等待站点加载多长时间
多谢各位
更新(2016年10月24日)
我已经开始使用NGC
进行提前编译(),这大大加快了速度(尽管包大小已增加到~500kb压缩),但在下载完所有内容后,仍然需要~300ms才能加载网站
理想情况下,我希望能够截获下载和加载过程,调查它们的状态(例如,下载230kb/500kb或模块构建完成的10%),然后加载一个进度条和一个状态条,该进度条和状态条实际上会向用户显示他们在等待什么
我现在要做的是为进度条加载一个最小CSS,显示它,然后在
onLoad
函数中按顺序加载所有角度的东西,虽然它比以前平滑得多,现在还不清楚用户需要等待多长时间,可能是半秒到几秒,这取决于互联网连接和设备的性能。我不确定reflect/zone.js,但下载时我们可以遵循这一点
<body onload="showApp()">
<div class="progress-bar" id="loadingContainer"></div>
<my-app style="display: none"><my-app>
</body>
showApp() {
document.getElementById('loadingContainer').style.display = "none";
document.getElementsByTagName('my-app')[0].style.display = null;
}
showApp(){
document.getElementById('loadingContainer').style.display=“无”;
document.getElementsByTagName('my-app')[0].style.display=null;
}
您可以尝试在index.html
中添加第二个脚本,然后加载所有其他文件(就像index.html
现在所做的那样)。
然后,您将有一堆AJAX文件请求,并可以将它们添加到DOM中。要跟踪进度,您可以尝试使用HTTP HEAD请求和
内容长度
头。以下是一些可以减少静态资源加载时间的其他方法
- 尝试CDN支持的托管解决方案,如firebase托管-
- 使你的应用程序成为一个进步的web应用程序。Progressive web apps使用服务工作者缓存用户设备中的静态资源,因此只有在发布应用程序的新版本时,才需要更新这些资源-
好问题,但我认为通用解决方案(您可能使用汇总,其他人可能使用webpack等)很棘手?可能需要一些帮助/api/hook才能让它工作。您尝试过AOT编译吗?(用于速度优化)@redaigbaria我有。它肯定更快,但还是希望在较慢的设备上有一个进度条,在2秒钟左右的时间内具有有意义的状态。看起来您必须手动加载脚本才能显示实际进度:您是否尝试过SSR(服务器端渲染)?