搭建一个全栈式的HTML5移动应用框架(纯干货,亲!)

  打开HTML5的技术网站,满屏的“5个推荐的JavaScript框架”、“10个移动应用框架”,全都是你妹的框架,javascript

可是,你知道这些框架是干毛用的吗?来吧,咱们来梳理一下吧html

 

  目前HTML5涉及的框架大体能够分红如下几类:java

  一、跨平台开发框架:PhoneGap 、 Titanium、 Trigger.IO(商业)jquery

这类框架是向web提供底层硬件的接口,让开发人员能够用WEB的技术开发出Native APP。web

 

  二、UI框架:jQuery Mobile、 Sencha Touch、 jqMobi架构

这类框架提供“控件”:布局、按钮。。。。。。框架

 

  三、MVC框架:Backbone.js、 Spine.js、 Ember.js异步

这类框架提供在javascript端上Model、View分离的技术,由于在one page的状况下,javascript模块化

控制的逻辑愈来愈复杂,须要作这样的分离。布局

 

  四、依赖与加载框架:Require.js、 Sea.js

当咱们要写一个稍大型的javascript应用的时候,必然会面对不一样JS文件间的引用,JS的同步、异步

加载等需求,这种框架就是帮咱们解决这样的问题的。

 

  好,下面咱们挑其中的一些框架来说一讲。

 

 

  PhoneGap

http://phonegap.com/

 

  • 开源
  • 编写一次,可编译到IOS、Andriod、Win Phone。。。
  • 支持GPS、摄像头、文件系统。。。等系统接口

 

 

  jQuery Mobile

http://jquerymobile.com

若是你要开发一款接近原生UI的应用,那采用一款UI框架会节省你不少的时间,jQuery Mobile就是

这样的一个UI框架。

 

  • 跟jQuery没有绝对关系,你能够选用其余的DOM选择器
  • 社区很活跃,已经适用于实际开发
  • 虽然运行效率不断提高,可是目前仍是有点慢,特别是用在PhoneGap上
 
 

  Backbone.js

Backbone.js是一款用在javascript上的MVC框架,你能够类比成Ruby on Rails、Struts等Server端的MVC框架,

固然,在MVC的模式实现程度上可能有必定的差异。

 

  •  一款小型、流行的用于编写大型HTML5应用的MVC框架
  • 他们在用backbone:LinkIn,Soundcloud,Basecamp,Codiqa

 

 

  上图是Backbone的MVC架构图,学习MVC的时候,咱们应该都会接触到一个技术:模板引擎,由于须要把Model的数据表现到View中,

须要模板引擎这种粘合剂去把二者粘合起来。Mustache就是这样一个模板解释引擎

 

Mustache

 

  • 支撑普遍的语言种类
  • 简单,可是很强大
  • 支持循环
  • 你能够使用underscore.js模板,可是不够强大

 

 

Require.js

 

  • 把JS库模块化
  • 大型项目必备
  • 支持异步加载-加快加载速度
  • 支持把多文件压缩到一个文件中


  Require.js + Tempalte

  Require.js支持加载text文件,所以,能够用来加载模板文件
Js代码   收藏代码
  1. define([“backbone”,“underscore”,“jquery”,“text!listview.html”],  
  2. function(Backbone,_,$,listViewTemplate){…  
  3. Mustache.render(listViewTemplate,this.model.toJSON())…  
 
 
 

总结

  框架满天飞,在框架大海中,捞出你须要的框架,DRY(Dont Repeat Yourself)

define([backbone,underscore,jquery,text!listview.html],function(Backbone,_,$,listViewTemplate){Mustache.render(listViewTemplate,this.model.toJSON())
define([backbone,underscore,jquery,text!listview.html],function(Backbone,_,$,listViewTemplate){Mustache.render(listViewTemplate,this.model.toJSON())
 
相关文章
相关标签/搜索