Skip to content

JackTam1993/myApp

Repository files navigation

myApp

This project is to test the performance improvement that bindonce brings. And it just an ionic-init project.

OK,let us use Chinese.

https://github.com/Pasvaz/bindonce 中提到,当我们滥用Angular中方便的数据绑定的功能时,可能会导致一些性能问题。在我们的SPA中,Angular令我们很方便地实现视图和数据同步更新的功能,但是我们稍不小心就会导致加载过多watcher的情况,而当watcher的数量超过2000时很可能会导致页面的加载的滞后,而bind once提供了方法,以指令的方式去除视图中不需监视的的元素,从而提高页面的性能。由于ng-和bo-的指令基本上能够对应得上,所以使用起来也没有太大的难度,如果想定量地观察watcher的变化的话可以使用Chrome里面的Batarang工具。

下图为未使用bind once前的情况,当经过一段时间的操作后峰值能达到2800个watcher左右,而且产生的watcher会一直存留直到页面刷新才会被回收。 image

下图为使用bind once后的情况,可以发现一开始加载的watcher数大概只有原来的10分之1,在经过一段时间的操作后watcher数峰值大概为340个左右,而且会在达到峰值后回落。虽然优化效果也比较明显,但是与作者的说法还是不太一致,之后会继续参考作者的思路看看能不能做到作者所说的优化效果。

部分代码片段:

<ion-slide>
        <ion-list>
          <div style="text-align: center">
            <ion-item>{{tabs.tabs.saicheng1}}</ion-item>
          </div>
          <ion-item bindonce ng-repeat="tab in tabs.views.saicheng1">
            <div style="text-align: center">
              <span bo-bind="tab.c2"></span><span bo-bind="tab.c3"></span><br><span bo-bind="tab.c4T1"></span><span bo-bind="tab.c4R"></span><span bo-bind="tab.c4T2"></span>
            </div>
          </ion-item>
        </ion-list>
</ion-slide>
<ion-slide>
        <ion-list>
          <div style="text-align: center">
            <ion-item>{{tabs.tabs.sheshoubang}}</ion-item>
            <div class="row">
              <div class="col">排名</div>
              <div class="col">球员</div>
              <div class="col">所属球队</div>
              <div class="col">进球</div>
              <div class="col">助攻</div>
            </div>
          </div>
          <ion-item bindonce ng-repeat="tab in tabs.views.sheshoubang">
            <div class="row" style="text-align: center">
              <div class="col"><span bo-html="tab.c1"></span></div>
              <div class="col"><span bo-html="tab.c2"></span></div>
              <div class="col"><span bo-html="tab.c3"></span></div>
              <div class="col"><span bo-html="tab.c4"></span></div>
              <div class="col"><span bo-html="tab.c5"></span></div>
            </div>
          </ion-item>
        </ion-list>
      </ion-slide>

image

install dependencies : npm install & bower install & npm ionic cordova -g.

run on browser : ionic serve.

And this is a cordova based project, so you can build it in a cordova way.

Thank you for watching.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published