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 相关文章推荐
Jquery显示、隐藏元素以及添加删除样式
Aug 09 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
Jun 14 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
使用Bootstrap美化按钮实例代码(demo)
Feb 03 Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
JS实现打砖块游戏
Feb 14 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
How do I change MySQL timezone?
2008/03/26 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
jquery插件制作教程 txtHover
2012/08/17 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
VueJS全面解析
2016/11/10 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
python 实现音频叠加的示例
2020/10/29 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
高中毕业生自我鉴定
2013/11/03 职场文书
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
大二自我鉴定
2014/01/31 职场文书
维修工先进事迹
2014/05/29 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
婚前财产协议书范本
2014/10/19 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android