Angular项目的首页打开速度很慢,有时候会有几秒的加载时间。如果在手机端访问的话,怕是要等待十多秒,这对用户体验很差。下面参考http://www.cnblogs.com/feiyu159/p/8473790.html   介绍一下我自己的Angular优化之旅。

一、静态图片加载:

  项目中存在很多图片资源,有的图片资源很大。如果和项目放在一起的话,项目启动时既要加载项目的html,css等静态文件,对服务器的响应互有影响。考虑把图片单独存放,并使用nginx做映射。当请求页面的图片时,css和图片就从两个地方加载出来。这个好像大多数大型的网站都有,譬如百度官网地址:https://www.baidu.com,如果查看项目的源代码就会发现,百度首页的图片时放在baidu.com下边的一个子域名的文件夹下。那就暂且尝试这样实现一下好了。

  1)创建图片资源的服务器。

  2)配置nginx

#图片服务器 // 这是一个单独的Server
server {
listen ;
server_name “域名或IP”;
location / {
root D:/project/images; // 服务器上图片资源存放的位置
autoindex on;
}
}

  3)设置nginx的压缩

// 这个一般在nginx.conf中进行配置,
gzip on;
gzip_min_length 1k;
gzip_buffers 16k;
gzip_comp_level ;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\."

二、Angular懒加载路由

  懒加载,也就是按需加载。页面启动的时候,并不是将全部的component全部加载进来,否则初始化启动会以为加载太多文件,网站访问会超级慢。只有当访问该模块的时候才去加载,否则不加载。如下:

如上图,只有访问登录(Login)模块的时候,项目才会去加载Login模块的component。

该项目可以参考我的一个关于angular4快速启动项目,github地址:https://github.com/JinGangRed/angular-my-quickly-start

三、与微信网页授权相关

微信网页授权过程中,需要为微信提供一个redirectURL。在angular项目中的这个地方就会有个分歧,这个redirect_url是放当前页面的地址(login)呢,还是登录后的跳转的地址?

其实我们可以采用后一种方式,直接赋值redirect_url为登录后跳转的地址。

具体实现思路是这样的:

  1.访问某个页面(sell.component),添加一个路由守卫canActivate: [AuthloadService] (请忽略这个名字的含义,因为这个AuthLoad会和路由守卫的是否加载子模块的AuthLoad产生混淆,你可以认为他是一个判断是否激活该组件的拦截器)在AuthLoadService中,

// 如果是微信跳转请求该组件,会携带上code信息,这个时候获取code,然后将这个code返回给后台,让后台根据这个code,去获取AccessToken和OpenId的信息
const code = route.queryParamMap.get('code');
if (code) {
alert('存在code ' + code);
this.auth.getAccessTokenByWechat(code);
this.auth.isLoggedIn = true;
}
return this.checkLogin(state.url);

  2.在该路由守卫中,canActivate中 如果没有访问凭据的话,则设置NavigationExtras,配置参数targetURL,然后跳转到登录页面。

  3.在登录页面上,设置网页授权连接上的redirect_url地址为上一步骤配置的targetURL(这一步我已经实现)。

  4.其实第三步,是否真的需要?应该可以不需要登录页面这个组件,直接在第二个步骤中设置redirect_url为当前地址不就可以了吗?这个我还没实现,不敢妄下结论,待后期更新。

大家有什么关于angular项目优化的好方法,请不吝赐教

非常感谢:http://www.cnblogs.com/feiyu159/p/8473790.html 受益颇深

Angular4--提速--提升Angular项目的首页打开速度(包含微信登录优化)的更多相关文章

  1. Cocos Creator—优化首页打开速度

    Cocos Creator是一个优秀的游戏引擎开发工具,很多地方都针对H5游戏做了专门的优化,这是我比较喜欢Cocos Creator的一点原因. 其中一个优化点是首页的加载速度,开发组为了加快首页的 ...

  2. 记一次cocos项目的加载速度优化

    半个月前,我们用cosos creator做了一个简单的小游戏,也许算不上小游戏吧..一边学cocos,一边做,几经波折后终于上线了.然鹅,功能是实现了,但是加载速度十分感人(毕竟没经验嘛,无辜脸). ...

  3. 进一步优化SPA的首屏打开速度(模块化与懒载入) by 嗡

    前言 单页应用的优点在于一次载入全部页面资源,利用本地计算能力渲染页面.提高页面切换速度与用户体验.但缺点在于全部页面资源将被一次性下载完,此时封装出来的静态资源包体积较大,使得第一次打开SPA页面时 ...

  4. Angular4.x 安装|创建项目|目录结构|创建组件

    Angular4.x 安装|创建项目|目录结构|创建组件 安装最新版本的 nodejs node.js 官网:https://nodejs.org/zh-cn/ 去官网下载 node.js,下一步下一 ...

  5. 用Angule Cli创建Angular项目

    Angular4.0来了,更小,更快,改动少 接下来为Angular4.0准备环境和学会使用Angular cli项目 1.环境准备: 1)在开始工作之前我们必须设置好开发环境 如果你的机器上还没有安 ...

  6. Angular20 nginx安装,angular项目部署

    1 nginx安装(Windows版本) 1.1 下载安装包 到官网下载Windows版本的nginx安装包 技巧01:下载好的压缩包解压即可,无需安装 1.2 启动nginx 进入到解压目录,点击 ...

  7. 网站开发进阶(二十一)Angular项目信息错位显示问题解决

    Angular项目信息错位显示问题解决 绪 最近在项目开发过程中遇到这样一个棘手的问题:查询出所有订单信息后,点击选择某一个订单,查询出的结果是上一次查询所得的结果.而且会出现点击两次才可以显示订单详 ...

  8. angular项目国际化配置(ngx-translate)

    原文 https://www.jianshu.com/p/7d1da3098625 大纲 1.认识ngx-translate 2.ngx-translate的配置步骤 3.ngx-translate的 ...

  9. 使用xampp将angular项目运行在web服务器

    需求 在开发angular项目时,因为需要做自适配以适应不同的屏幕,而我的电脑只有1366的.所以我现在需要在本地将angular项目运行在xampp上,然后用手机开热点,给本机和另一台大屏电脑或手机 ...

随机推荐

  1. windows 下 Symfony的下载与安装

    初始化项目 本篇教程我尽量按照Windows/*nix都可以运行的方式来讲解. 得益于Symfony installer,我们目前可以很方便的初始化一个Symfony2项目.不过首先,你得有一个Sym ...

  2. UESTC 251 最长上升子序列O(nlgn)

    O(n^2)过不了.必须要用一个额外的数组保存当前长度最小值,然后lgn查表 AC代码 #include<cstdio> #include<algorithm> using n ...

  3. 如何架构一个合适的企业API网关

    API Gateway(API GW / API 网关),顾名思义,是出现在系统边界上的一个面向API的.串行集中式的强管控服务,这里的边界是企业IT系统的边界,主要起到隔离外部访问与内部系统的作用. ...

  4. Mapreuduce实现网络数据包的清洗工作

    处理后的数据可直接放到hive或者mapreduce程序来统计网络数据流的信息,比如当前实现的是比较简单的http的Get请求的统计 第一个mapreduce:将时间.十六进制包头信息提取出来,并放在 ...

  5. hbase 命令

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服 ...

  6. sqlserver中select造成死锁

    死锁过程: select语句使用非聚族索引查询产量信息,会对非聚族索引添加共享锁,由于非聚族索引上没有select的全部数据列,(所以会有书签查找出现,)需要查询产量表.查询产量表时,需要对产量表数据 ...

  7. Java StringBuilder 和 StringBuffer 源码分析

    简介 StringBuilder与StringBuffer是两个常用的操作字符串的类.大家都知道,StringBuilder是线程不安全的,而StringBuffer是线程安全的.前者是JDK1.5加 ...

  8. Win7/8出现An error occurred on the server when processing the URL解决办法

    使用的是win8系统搭建的本地服务器,win7使用的方法是相同的.如果你的系统是精简版的Win7/8,那么安装IIS7也有可能出现这问题.下面SJY带领大家来解决这个错误. 解决方法 打开控制面板→管 ...

  9. 安装sphinx和coreseek

    sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数 ...

  10. linux中mysql命令方式备份数据的问题

    这几天公司新出了个组件化的项目,里面需要用到mysql数据库相关的技术,由于之前一直用的mongodb,所以mysql几乎忘光了,于是只能在linux虚拟机中重新开始学习. 基本的增删改查还好,但是在 ...