为了力求运行速度快、响应迅即,咱们推荐使用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中,就像你在普通网站中进行操做那样: <link rel="stylesheet" href="css/reset.css"> <link rel="stylesheet" href="css/demo.css"> <script type="text/javascript" src="js/lib/zepto.min.js"></script> <script type="text/javascript" src="js/lib/underscore-min.js"></script> <script type="text/javascript" src="js/lib/backbone-min.js"></script> <script type="text/javascript" src="js/demo.js"></script> 里,咱们只使用了HTML5样板重置样式(reset.css)、JavaScript库和咱们本身的两个文件:demo.css和demo.js。 使用Backbone时,你的入口点应该设置好应用程序正常运行所须要的各方面,而后开始运行Backbone的历史系统。 好比说,在该项目中,咱们使用$(Demo.init),在应用程序启动时运行下列函数,只运行一次: // 应用程序启动时,只调用一次 init: function () { // 获取Trigger推特更新内容 forge.request.ajax({ url: "https://twitter.com/statuses/user_timeline/14972793.json", dataType: "json", success: showIndex }); // 一旦咱们有了Trigger推特更新内容,就调用 function showIndex(data) { // 把初始数据保存起来 Demo.items = new Demo.Collections.Items(data); // 创建Backbone Demo.router = new Demo.Router(); Backbone.history.start(); } } 这里,咱们使用request.ajax函数来检索咱们的推特消息,并将数据存储在一个集合中,而后开始运行Backbone。 使用Backbone.js Backbone.history.start()启动Backbone的window.onhashchange事件订阅。当URL的某片断变化时,就使用routes.js中定义的路由: routes: { "" : "index", // 入口点:没有哈希分片或# "item/:item_id":"item" // #item/id }, 路由将URL映射到函数。咱们在这里定义了两个路由:一个对应#index(),另外一个对应#item/[item_id]。而后,将item_id做为一个参数传递到item()。路由负责为你整个应用程序安排好URL。 使用Backbone来管理Forge应用程序里面的视图是个好办法:咱们不只在历史堆栈里面构建URL(好比说,这意味着“后退”按钮在安卓平台上能够按预期的方式工做),咱们还可以全面控制在应用程序中显示的内容,又没必要借助慢腾腾的页面装入机制。 不过,特别是在移动平台上,你的用户指望以某种动态转场效果从一个视图切换到下一个视图;为此,你能够把Backbone视图组织成页面。 页面视图 该代码片断显示了咱们如何在这个项目中实现页面,当一个页面变得活跃时,就使用动画转场效果。你还能够在此看到咱们使用Zepto用于DOM处理。 Demo.Views.Page = Backbone.View.extend({ className: "page", initialize: function () { this.render(); }, show: function () { $('.page').css({"position": "absolute"}); var direction_coefficient = this.options.back ? 1 : -1; if ($('.page').length) { var $old = $('.page').not(this.el); // 这个解决办法来之不易- // 仅仅使用.css(property, '')无论用! $old.get(0).style["margin-left"] = "" $old.get(0).style["-webkit-transform"] = "" this.$el.appendTo('body').hide(); this.$el.show().css( {"margin-left": 320 * direction_coefficient}); this.$el.anim( {translate3d: -320 * direction_coefficient +'px,0,0'}, 0.3, 'linear'); $old.anim( {translate3d: -320 * direction_coefficient + 'px,0,0'}, 0.3, 'linear', function() { $old.remove(); $('.page').css({"position": "static"}); }); } else { this.$el.appendTo('body').hide(); this.$el.show(); } window.scrollTo(0, 0); } }); 若是你但愿,能够在你本身的视图中实现这个页面,并使用show()方法从一个页面切换到另外一个页面。 好比说,在该项目中,咱们为全部推特消息的初始视图建立了一个页面,而且当用户选择每一单个的推特消息时也为它建立一个页面。 使用Forge API的其余部分 咱们已经看到了使用forge.request.ajax来请求远程服务器。该项目还充分利用了另一些Forge API。 在expand_item()中,咱们使用forge.tabs.open(),以一种跨平台的方式打开外部页面新标签页。open()的说明文档在此。 最后,咱们使用了click_or_tap()函数中的forge.is,以便咱们可以监听移动设备上的轻触事件(tap event),以及其余设备上的点击事件(click event)。易于检测平台的说明文档在此。 click_or_tap: function(obj) { // 至于对象属性,为属性添加“点击”,并使用原始值 var new_obj = {}; for(var property in obj) { if (obj.hasOwnProperty(property)) { if (forge.is.mobile()) { new_obj["tap " + property] = obj[property]; } else { new_obj["click " + property] = obj[property]; } } } 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调试模式)。 尽情享受吧! 就是这样 你能够随意处理源代码。咱们但愿一切都很清楚。