微信静默授权的条件:关注公众号、已做过授权

公司项目:云学堂合作人

问题:

首先我们在公众号管理员的后台菜单栏里,绑定一个授权引导页,如果其中的回调地址中带有angular路由中的#,页面将不会实现重定向,一直停留在授权引导页。但是这个带有#的授权引导页,如果在公众号以外的地方,就不会出现静默授权,带#的回调地址是可以实现重定向的。

方法:

想办法去掉回调地址里的#。由于我们用的angular的框架,#是用来区分路径是由angular还是webserver来管理。 为了实现#不出现回调地址里,又能实现页面的重定向。最终的解决方案是:与后台运维人员的沟通,通过配置ngix服务,实现在用户访问h5.partner.yxt.com/my会自动请求h5.partner.yxt.com/#/my。这样在回调地址中就不会出现#,也能访问到由angular管理的路由。

参考资料:http://blog.fens.me/angularjs-url/

微信页面的缓存

由于缓存的问题,导致每次的版本更新,用户看到的还是旧的程序,只有清理手机缓存,这是件很糟糕的事,我们希望用户访问的永远是即时最新的程序。

通过对他们的路径加带有带有版本号的后缀,如?v=1001,实现浏览器重新去请求。其中css和js的版本更新很简单,但是html,这个不太一样,我们都知道angular是单页应用,它管理的视图,都是异步加载的分部视图。所以我们需要到路由管理的route.js里去控制,在每个templateUrl的参数里加上带有版本好的后缀。

// index.html
<html data-ver='1001'>
// common.js
var  APP_VERSION = angular.element(document.getElementByTagName(‘html’).attr(‘data-ver’)
// route.js
.state("signIn", {
  url: "/signIn",
  views: {
    "main": {
      templateUrl: "./views/user/signIn.html?v=" + APP_VERSION,
      controller: "UserSignInCtrl"
    }
  }
})

网页性能

  • 减小静态资源的大小
  • 减少B/S之间的往返http请求
  • 合理的利用缓存

利用构建工具Grunt对静态资源进行合并压缩:*.min.js、*.min.css。引用的框架资源可以通过CDN,或者下载到本地,在首页引用压缩版静态资源,不需要额外地压缩合并,这样每次发布,不会去更新这样框架的资源,只需要更新业务的代码,这样可以实现项目代码的最小更新。