Backbone.js的Hello World程序实例


Posted in Javascript onJune 19, 2015

新建一个api.php文件,内容:
 

 header('Content-Type: application/json; charset=utf-8');

die(json_encode(array('name'=>'tom')));

 

新建一个index.html文件。(backbone基于jquery、underscore,我们使用Mustache来做模板解析,当然用其他的haml、jade,或者underscore里面的模板也都是可以)

内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

 <HEAD>

  <TITLE> New Document </TITLE>

<script type="text/javascript" src="./jquery.min.js"></script>

<script type="text/javascript" src="./underscore.min.js"></script>

<script type="text/javascript" src="./backbone.min.js"></script>

<script type="text/javascript" src="./mustache.min.js"></script>

<script type="text/javascript" src="./custom.js"></script>

 </HEAD>

 <BODY>

  <p><script id="hello-container-template" type="text/template"></p><p><div>{{name}} says: {{message}} </div></p><p></script></p>

 </BODY>

</HTML>

新建一个custom.js文件,内容:

// 这是一个管理着 视图/控制/模型 的全局类

var App = {

    Models: {},

Views: {},

Controllers: {},

Collections: {},

initialize: function() {

new App.Controllers.Routes();

        Backbone.history.start() // 要驱动所有的Backbone程序,Backbone.history.start()是必须的。

    }

};

App.Models.Hello = Backbone.Model.extend({

    url: function() {

        return '/api.php'; // 获得数据的后台地址。

    },

    initialize: function() {

     this.set({'message':'hello world'}); // 前端定义一个message字段,name字段由后端提供。

    }

});

App.Views.Hello = Backbone.View.extend({

el: $("body"),

template: $("#<span style="font-family: monospace; white-space: pre; ">hello-container-template</span>").html(),

initialize: function(options){

this.options = options;

this.bind('change', this.render);

this.model = this.options.model;

},

render: function(){ // render方法,目标只有两个:填充this.el,返回this以便链式操作。

$(this.el).html(Mustache.to_html($(this.el).template,this.model.toJSON()) );

return this

}

});

App.Controllers.Routes = Backbone.Controller.extend({

routes: {

"!/hello" : "hello",//使用#!/hello驱动路由

},

hello : function() {

//新建一个模型,模型向后端请求更新内容成功后根据模型渲染新页面

var helloModel = new App.Models.Hello;

helloModel.fetch({

success: function(model){

var helloView = new App.Views.Hello({model: model});

helloView.trigger('change');

}

})

}});

App.initialize();
Javascript 相关文章推荐
IE 当eval遇上function的处理
Aug 09 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
深入分析jsonp协议原理
Sep 26 Javascript
跟我学习javascript的执行上下文
Nov 18 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
May 16 Javascript
js选项卡的制作方法
Jan 23 Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
浅谈Vue.js 中的 v-on 事件指令的使用
Nov 25 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
Aug 13 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
JS创建或填充任意长度数组的小技巧汇总
Oct 24 Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 #Javascript
详细分析使用AngularJS编程中提交表单的方式
Jun 19 #Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 #Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 #Javascript
详细解读AngularJS中的表单验证编程
Jun 19 #Javascript
JavaScript中模拟实现jsonp
Jun 19 #Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
Jun 19 #Javascript
You might like
编写PHP的安全策略
2006/10/09 PHP
phpcms模块开发之swfupload的使用介绍
2013/04/28 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
javascript 写类方式之五
2009/07/05 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
python的迭代器与生成器实例详解
2014/07/16 Python
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
2020/03/27 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
高级Java程序员面试要点
2013/08/02 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
函授自我鉴定范文
2014/02/06 职场文书
诚信考试标语
2014/06/24 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android