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 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
iScroll中事件点击触发两次解决方案
Mar 11 Javascript
js图片轮播手动切换效果
Nov 10 Javascript
Angular排序实例详解
Jun 28 Javascript
AngularJS实现表单验证功能详解
Oct 12 Javascript
使用vue-cli编写vue插件的方法
Feb 26 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
解决Nuxt使用axios跨域问题
Jul 06 Javascript
详解Vue数据驱动原理
Nov 17 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
6种php上传图片重命名的方法实例
2013/11/04 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
国际贸易专业推荐信
2013/11/15 职场文书
自荐书格式
2013/12/01 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
挂牌仪式主持词
2014/03/20 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
详解CSS3浏览器兼容
2022/12/24 HTML / CSS