成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用backbone.js、zepto.js和trigger.io開發HTML5 App

譯文
移動開發
上周,在51CTO上我們討論了是否有其他一些跨平臺移動框架的運行速度比PhoneGap更快。本周,我們想探討讓你的應用程序代碼運行起來一樣快的一些技巧和方法。

為了力求運行速度快、響應迅即,我們推薦使用backbone.js和zepto.js。

為了讓這個過程更有意思,我們開發了一個小小的示例項目,使用CSS重置樣式、Backbone.js和帶轉場效果的幾個頁面。我們的項目會顯示Trigger推特更新內容和單個的推特消息。與往常一樣,我們將使用同一個HTML5代碼庫創建安卓和iOS應用程序。在這個過程中,我們將介紹如何:

  • 把你的JavaScript文件添加到應用程序中
  • 使用Backbone.js來顯示響應迅即的界面
  • 使用CSS重置樣式,減少跨平臺出現的不一致性
  • 在應用程序中的視圖之間實現示例轉場效果

你可以在此基礎上隨意開發自己的項目——這是開發新項目的良好基礎!代碼放在github上,詳見:https://github.com/trigger-corp/Forge-Bootstrap

添加的文件

  • Backbone.js,負責處理歷史記錄、用戶操作以及為整個JavaScript框定結構
  • HTML5Boilerplate,旨在減少不同平臺上不一致的渲染默認值帶來的影響
  • Zepto,這個面向移動設備的輕型框架是jQuery的替代方案,可用于DOM(文檔對象模型)處理。

開始上手

想處理應用程序中的JavaScripts和CSS,只要把它們添加到你的index.html中,就像你在普通網站中進行操作那樣:

  1. <link rel="stylesheet" href="css/reset.css"> 
  2. <link rel="stylesheet" href="css/demo.css"> 
  3. <script type="text/javascript" src="js/lib/zepto.min.js"></script> 
  4. <script type="text/javascript" src="js/lib/underscore-min.js"></script> 
  5. <script type="text/javascript" src="js/lib/backbone-min.js"></script> 
  6. <script type="text/javascript" src="js/demo.js"></script> 

里,我們只使用了HTML5樣板重置樣式(reset.css)、JavaScript庫和我們自己的兩個文件:demo.cssdemo.js

使用Backbone時,你的入口點應該設置好應用程序正常運行所需要的各方面,然后開始運行Backbone的歷史系統。

比如說,在該項目中,我們使用$(Demo.init),在應用程序啟動時運行下列函數,只運行一次:

  1. // 應用程序啟動時,只調用一次 
  2. init: function () { 
  3.     // 獲取Trigger推特更新內容 
  4.     forge.request.ajax({ 
  5.         url: "https://twitter.com/statuses/user_timeline/14972793.json"
  6.         dataType: "json"
  7.         success: showIndex 
  8.     }); 
  9. // 一旦我們有了Trigger推特更新內容,就調用 
  10.     function showIndex(data) { 
  11.         // 把初始數據保存起來 
  12.         Demo.items = new Demo.Collections.Items(data); 
  13.         // 建立Backbone 
  14.         Demo.router = new Demo.Router(); 
  15.         Backbone.history.start(); 
  16.     } 

這里,我們使用request.ajax函數來檢索我們的推特消息,并將數據存儲在一個集合中,然后開始運行Backbone。

使用Backbone.js

Backbone.history.start()啟動Backbone的window.onhashchange事件訂閱。當URL的某片段變化時,就使用routes.js中定義的路由:

  1. routes: { 
  2.     "" : "index",          // 入口點:沒有哈希分片或# 
  3.     "item/:item_id":"item"  // #item/id 
  4. }, 

路由將URL映射到函數。我們在這里定義了兩個路由:一個對應#index(),另一個對應#item/[item_id]。然后,將item_id作為一個參數傳遞到item()。路由負責為你整個應用程序安排好URL。

使用Backbone來管理Forge應用程序里面的視圖是個好辦法:我們不僅在歷史堆棧里面構建URL(比如說,這意味著“后退”按鈕在安卓平臺上可以按預期的方式工作),我們還能夠全面控制在應用程序中顯示的內容,又不必借助慢騰騰的頁面裝入機制。

不過,特別是在移動平臺上,你的用戶期望以某種動態轉場效果從一個視圖切換到下一個視圖;為此,你可以把Backbone視圖組織成頁面。

頁面視圖

該代碼片段顯示了我們如何在這個項目中實現頁面,當一個頁面變得活躍時,就使用動畫轉場效果。你還可以在此看到我們使用Zepto用于DOM處理。

  1. Demo.Views.Page = Backbone.View.extend({ 
  2.     className: "page"
  3.     initialize: function () { 
  4.         this.render(); 
  5.     }, 
  6.     show: function () { 
  7.         $('.page').css({"position""absolute"}); 
  8.         var direction_coefficient = this.options.back ? 1 : -1; 
  9.         if ($('.page').length) { 
  10.             var $old = $('.page').not(this.el); 
  11.             // 這個解決辦法來之不易- 
  12.             // 僅僅使用.css(property, '')不管用! 
  13.             $old.get(0).style["margin-left"] = "" 
  14.             $old.get(0).style["-webkit-transform"] = "" 
  15.             this.$el.appendTo('body').hide(); 
  16.             this.$el.show().css( 
  17.                 {"margin-left": 320 * direction_coefficient}); 
  18.             this.$el.anim( 
  19.                 {translate3d: -320 * direction_coefficient +'px,0,0'}, 
  20.                 0.3, 'linear'); 
  21.             $old.anim( 
  22.                 {translate3d: -320 * direction_coefficient + 'px,0,0'}, 
  23.                 0.3, 'linear'function() { 
  24.                     $old.remove(); 
  25.                     $('.page').css({"position""static"}); 
  26.             }); 
  27.         } else { 
  28.             this.$el.appendTo('body').hide(); 
  29.             this.$el.show(); 
  30.         } 
  31.         window.scrollTo(0, 0); 
  32.     } 
  33. }); 

如果你希望,可以在你自己的視圖中實現這個頁面,并使用show()方法從一個頁面切換到另一個頁面。

比如說,在該項目中,我們為所有推特消息的初始視圖創建了一個頁面,并且當用戶選擇每一單個的推特消息時也為它創建一個頁面。

使用Forge API的其他部分

我們已經看到了使用forge.request.ajax來請求遠程服務器。該項目還充分利用了另外一些Forge API。

在expand_item()中,我們使用forge.tabs.open(),以一種跨平臺的方式打開外部頁面新標簽頁。open()的說明文檔在此

最后,我們使用了click_or_tap()函數中的forge.is,以便我們能夠監聽移動設備上的輕觸事件(tap event),以及其他設備上的點擊事件(click event)。易于檢測平臺的說明文檔在此

  1. click_or_tap: function(obj) { 
  2. // 至于對象屬性,為屬性添加“點擊”,并使用原始值 
  3.     var new_obj = {}; 
  4.     for(var property in obj) { 
  5.         if (obj.hasOwnProperty(property)) { 
  6.             if (forge.is.mobile()) { 
  7.                 new_obj["tap " + property] = obj[property]; 
  8.             } 
  9.             else { 
  10.                 new_obj["click " + property] = obj[property]; 
  11.             } 
  12.         } 
  13.     } 
  14.     return new_obj 

這很重要,因為點擊事件的反應在移動設備上不如輕觸來得迅即。

構建和運行應用程序

為了自行構建和運行應用程序,請先取我們網站上注冊(https://trigger.io/);如果你還沒有Trigger.io Forge框架,就安裝該框架,開始建立Forge環境(操作步驟詳見http://docs.trigger.io/en/v1.3/forge/index.html)。

然后,

  • 為你的應用程序創建一個新的目錄,使用cd命令進入到該目錄,運行“forgecreate -n Demo”,在你的帳戶中創建Demo(演示)應用程序。

  • 把教程代碼拷貝到src目錄中,覆蓋forge之前創建的樣板代碼。

  • 運行forge build,構建應用程序的每個版本(這步操作第一次速度很慢——但隨后的構建過程快若閃電!)

  • 運行forge run android或forge run ios,查看應用程序(你需要先安裝安卓模擬器或iPhone模擬器——欲知詳情,請參閱我們的說明文檔:http://docs.trigger.io/en/v1.3/android/getting-started.html)。

  • 如果你連接上了安卓手機,forge run android會將該應用程序部署到你的手機上,進行測試(確保打開了USB調試模式)。

  • 盡情享受吧!

就是這樣

你可以隨意處理源代碼。我們希望一切都很清楚。

責任編輯:佚名 來源: 51CTO.com
相關推薦

2013-08-23 10:26:20

Backbone.jsJavaScriptWeb

2012-02-09 16:09:17

JavaScript

2013-04-08 16:16:59

Backbone.jsCRUD

2012-06-01 09:29:56

HTML5

2013-04-08 15:42:38

Backbone.js入門

2013-03-21 09:32:41

2015-10-23 13:44:14

巴巴獵

2012-06-12 13:58:07

HTML5

2016-10-19 10:49:43

Linux

2012-05-30 09:22:56

Hybrid App助HTML5JavaScript

2011-12-16 10:08:36

Node.js

2013-08-15 09:14:55

2022-06-27 10:52:54

谷歌量子

2013-01-22 10:54:51

HTML5App移動應用

2016-10-25 14:49:49

javascriptmaterial-uidatepicker

2015-04-30 11:26:38

HTML5與APP的抉

2012-05-09 10:32:28

HTML5

2013-03-21 13:56:21

JavaScriptBackBone

2014-07-21 17:48:09

PhoneGapCordovaHtml5

2011-12-15 01:01:16

ibmdw
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区在线观看免费视频 | 婷婷中文字幕 | 欧美日韩在线一区二区 | 久草免费在线视频 | 国产中文一区二区三区 | 亚洲国产精品视频一区 | 午夜欧美 | 免费观看成人鲁鲁鲁鲁鲁视频 | 羞羞色在线观看 | 久久久久久色 | 国产精品成人一区二区 | 欧美一级久久精品 | 免费在线国产视频 | 成人中文字幕在线 | 精品国产一区二区国模嫣然 | 欧美日韩国产一区二区三区不卡 | 91精品国产日韩91久久久久久 | 欧洲免费视频 | 久久精品久久精品久久精品 | 在线看片福利 | 国产一区二 | 欧美久久久| 久久久久免费精品国产 | 日韩a| wwww.xxxx免费 | 天天拍夜夜爽 | 精品91久久 | 久久精品视频99 | 激情五月激情综合网 | 国产精品自产拍 | 先锋av资源在线 | 亚洲精视频 | 欧美日韩在线一区二区三区 | 亚洲精品日韩精品 | 久久中文字幕一区 | 久久亚洲一区二区三区四区 | 91天堂网 | 亚洲一区二区不卡在线观看 | 日韩美女一区二区三区在线观看 | 99pao成人国产永久免费视频 | 亚洲激情视频在线 |