<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      Omi官方插件系列 - omi-transform介紹

      2017-04-05 11:02  【當耐特】  閱讀(2117)  評論(1)    收藏  舉報

      原文鏈接 - https://github.com/AlloyTeam/omi/tree/master/tutorial

      寫在前面

      Omi框架正式發布了omi-transform作為Omi組件化開發特效運動解決方案,讓你輕松在Omi項目里快速簡便支持CSS3 Transform設置。先說說 transform.js (npm上的名字是 css3transform)。transform.js作為移動Web特效解決方案,在手Q興趣部落、日跡、QQ群、QQ附近等項目中廣泛使用,以激進的修改DOM屬性為代價,帶來極為便利的可編程性。

      你可以通過http://alloyteam.github.io/AlloyTouch/transformjs/快速了解它。

      上面官網的例子都是原聲js的,transformjs也擁有react版本,你也可以在react中以聲明式的方式使用transformjs:

      render() {
          return (
              <Transform
                translateX={100}
                scaleX={0.5}
                originX={0.5}>
                <div>sth</div>
              </Transform>
          );
      }
      

      3分鐘掌握omi-transform

      演示

      http://alloyteam.github.io/omi/plugins/omi-transform/example/simple/

      通過npm安裝

      npm install omi-transform
      

      使用

      import Omi from 'omi';
      import OmiTransform from '../../omi-transform.js';
      
      OmiTransform.init();
      
      class App extends Omi.Component {
          constructor(data) {
              super(data);
          }
      
          installed(){
              setInterval(function(){
                  this.refs.test.rotateZ += 0.1;
              }.bind(this));
          }
      
          render() {
              return  `
                  <div omi-transform class="test" ref="test" rotateZ="45" translateX="100" perspective="400">
                      omi-transform
                  </div>
      
              `;
          }
      }
      
      Omi.render(new App(),"#container");
      
      • 在需要使用transformjs的DOM上標記 omi-transform 和 ref="xxx"
      • 在組件函數里便可以使用 this.refs.xxx 來讀取或者設置 css transform屬性
      • this.refs.xxx 支持 "translateX", "translateY", "translateZ", "scaleX", "scaleY", "scaleZ", "rotateX", "rotateY", "rotateZ", "skewX", "skewY", "originX", "originY", "originZ", "perspective"這些屬性設置和讀取
      • 沒有標記perspective的話代碼沒有透視投影

      性能對比

      因為react版本會有diff過程,然后apply diff to dom的過程,state改變不會整個innerHTML全部替換,所以對瀏覽器渲染來說還是很便宜,但是在js里diff的過程的耗時還是需要去profiles一把,如果耗時嚴重,不在webworker里跑還是會卡住UI線程導致卡頓,交互延緩等。所以要看一看CPU的耗時還是很有必要的。

      下面數據是對比omi-transform和react-transform,兩種方式使用chrome profiles了一把。

      先看總耗時對比

      react-transform:

      omi-transform:

      • react在8739秒內CPU耗時花費了近似1686ms
      • Omi方式在9254ms秒內CPU耗時花費近似700ms

      在不進行profiles就能想象到react是一定會更慢一些,因為state的改變要走把react生命周期走一遍,但是可以看到react的耗時還是在可以接受的范圍,沒有慢到難以接受。

      而Omi的方式則和傳統的原生js的耗時一模一樣。以為運動過程不進行DOMI Diff!!

      慢著?不進行Diff?意思就是組件不進行update?
      意思就是萬一組件update,所有運動的狀態都會丟失?Omi怎么解決這個問題?

      狀態保存

      組件里的某個DOM在運動過程中,可能會由于其他邏輯,進行update。有可能是用戶交互,有可能是數據返回的回調。所以,update前后,DOM的狀態的保留顯得尤其重要,不然的話就會有閃爍、跳躍的效果或者其他顯示邏輯錯誤。

      	...
          constructor(data) {
              super(data);
      		//初始狀態
              this.rotateZ  = 45;
          }
      
          installed(){
              setInterval(() =>{
                  //sync for update 記錄同步到this.rotateZ
                  this.rotateZ = this.refs.test.rotateZ += 0.1;
              });
          }
      
          render() {
          	//通過 ${this.rotateZ} 設置rotateZ
              return  `
                  <div omi-transform class="test" ref="test" rotateZ="${this.rotateZ}" translateX="100" perspective="400" >
                      omi-transform
                  </div>
      
              `;
          }
          ...
      

      上面的所有例子和代碼可以在這里找到。

      Omi相關

      主站蜘蛛池模板: 亚洲综合欧美在线…| 色综合视频一区二区三区| 极品少妇无套内射视频| 秋霞人妻无码中文字幕| 好吊妞无缓冲视频观看| 国产精品永久免费成人av| 亚洲精品一区二区美女| 国产最新精品系列第三页| 国内精品一区二区不卡| 成人爽A毛片在线视频淮北| 亚洲天天堂天堂激情性色| 亚洲精品日本久久一区二区三区| 网友偷拍视频一区二区三区| 日韩中文字幕高清有码| 久久久精品94久久精品| 久久天天躁夜夜躁狠狠| 国产精品女同性一区二区| 翘臀少妇被扒开屁股日出水爆乳| 亚洲欧洲日韩精品在线| 亚洲精品一区二区美女| 换着玩人妻中文字幕| 欧美片内射欧美美美妇| 亚洲少妇人妻无码视频| 精品人妻少妇一区二区三区| 精品伊人久久久香线蕉| 深夜福利啪啪片| 精品国产乱来一区二区三区| 中文字幕无码av激情不卡| 男人和女人高潮做爰视频| 国产一区二区三区韩国| 好吊妞人成视频在线观看| 精品国产中文字幕av| 日韩中文字幕一二三视频| 国产精品一二三区蜜臀av| 精品国产福利一区二区在线| 夜夜夜高潮夜夜爽夜夜爰爰 | 国产欧美国日产高清| 日韩卡一卡2卡3卡4卡| 四虎国产精品永久在线| 嫩草成人AV影院在线观看| 亚洲精品成人片在线观看精品字幕 |