backbonejs mvc框架
一:开发环境
coffeescript和nodejs需要先安装,没装网上自己查安装步骤。
代码编写环境及esp框架下载:
esp框架下载地址:https://github.com/nonocast/esp.git
在下载目录执行安装命令:npm install esp
这样开发环境就已经安装好了。
二:backbonejs 增删查改实例代码
backbonejs的学习可以网上下载电子书“backbonejs的入门教程”,及http://backbonejs.org/官网上学习
1:html部分
结构是由一个编辑模版和一个table行模版组成。

body ->
div 'header', -> 'BACKBONEJS MVC DEMO'
div 'add-block', ->
input type:'button',id:'addbtn',value:'添加'
span id: "showblock", style:'display:none;', ->
text '姓名:'
input type:text,id:'a-name'
text '性别:'
input type:text,id:'a-gender'
text '科目:'
input type:text,id:'a-subject'
text '成绩:'
input type:text,id:'a-score'
input type:'button',id:'savebtn',value:'保存'
table ->
caption '学生成绩汇总列表'
tr ->
th style:'width:10%;', -> '编号'
th style:'width:15%;', -> '姓名'
th style:'width:15%;', -> '性别'
th style:'width:15%;', -> '科目'
th style:'width:15%;', -> '成绩'
th style:'width:20%;', -> '操作'
script type:'text/template',id:'trtemplate', ->
tr 'tr<%=id%>', ->
td 'id<%=id%>', -> '<%=id%>'
td 'name<%=id%>', -> '<%=name%>'
td 'gender<%=id%>', -> '<%=gender%>'
td 'subject<%=id%>', -> '<%=subject%>'
td 'score<%=id%>', -> '<%=score%>'
td 'do', ->
a id:'tredit<%=id%>', href:'#',->'编辑'
a id:'trdelete<%=id%>', href:'#',->'删除' script type:'text/template',id:'edittemplate', ->
tr 'tr<%=id%>', ->
td 'id', ->'<%=id%>'
td 'name', ->
input 'name<%=id%>',type:'text',value:'<%=name%>'
td 'gender', ->
input 'gender<%=id%>',type:'text',value:'<%=gender%>'
td 'subject', ->
input 'subject<%=id%>',type:'text',value:'<%=subject%>'
td 'score', ->
input 'score<%=id%>',type:'text',value:'<%=score%>'
td 'do', ->
a id:'save<%=id%>', href:'#',->'确认'

2:js mvc框架部分
M---model(类结构)
C----collection(数据集合)
V----View(页面级别的,与页面绑定,事件的绑定等)
Model的defaults可以是一些默认的类型结构,也可以什么默认结构都没有,自己在使用过程中定义类型结构,在Model模块中主要是为了某个属性发生变化时触发所绑定的事件功能。
在Collection模块中,url主要是与后台交互的接口,所有的数据交互都通过此url,提交的数据带有id的此框架会自动转为PUT协议, 没有id的新增数据为Post协议,挺奇怪的吧
model表明该Collection是上面$model类型结构的集合
View模块中,el:表明该页面级要操作的元素的区域,最大也就为body了。在view中操作的元素都需要包含在此el中,有点象作用域
events:此处元素事件绑定,注:此处绑定的事件需要涉及的dom元素在执行到该处时就已经载入,比如模块中的编辑删除按钮就不能在这里绑定事件,因为这些按钮在view初始化后的构造函数中render才呈现出来,此时绑定会找不到这些元素。
that = @ @为this指针,this指向当前的view,在很多地方用到该句来备份指针,目的是在单击等事件里的指针会发生变化,会指向当前的元素,用that以便能调用view内定义的方法.
新增一条记录时,需要手动加入到collection里面,再提交到后台,可以用collection.create新增记录,也可以通过model来创建一条记录,然后手动添加到collection,此时需要走model的url来save,而不是collection的url来save,如下:

saveclick: ->
that = @ #此处的备份指针,以便能调用view内定义的方法,在单击等事件里的指针会发生变化,指向当前的元素
#n =new $model 通过model创建的数据保存到后台之后(需要走model里的url到后台),需要在collection手动加入该条记录,而通过collction先创建这条记录(走collection
#的url到后台),不需要再手动添加
@collection.create {name:$("#a-name").val(), gender:$("#a-gender").val(),subject:$("#a-subject").val(),score:$("#a-score").val()},
success:(mod,res) ->
e = _.template $("#trtemplate").html()
$("table").append(e mod.attributes)
i = mod.get "id"
$("#tredit"+i).click ->
that.editclick i
$("#trdelete"+i).click ->
that.deleteclick i
$("#showblock").css("display","none")
error: ->
alert 'error'

三:esp后台代码
四:实现页面效果
以上实现了一个简单增删改的实例,练习了backbonejs mvc框架的使用。有些描述是自己的理解,有不正确的地方望大伙指正。
函数断点
本篇博客是VisualStudio断点调试系列文章的一部分,在本篇文章里,我们将展示函数断点在VS中的怎么样为你节省时间的特性。
处理重载
你想调试一个指定的函数,但是这个函数有一些重载。一个选择是找到所有的重载并分别设置断点。
如果有很多重载,那么会非常消耗时间。另外一个选择是使用函数断点。
在我们的例子里(with code available to download),你想停在函数IsPrime()上,它有2个重载。
首先我们要去断点窗口里Debug->Windows->Breakpoints 创建一个断点,点击“new”
然后点击 “Break at Function…” 呼出一个新断点对话框。 你可能注意到也可以用快捷键Ctrl+B.
输入函数名“IsPrime” 然后点OK。这样它将会把我们带到新的对话框,这里有所有匹配的方法函数,我们可以快速的选择。可以通过点击All按钮来全选。
现在我运行程序,可以命中这个断点在这个版本的调用的 IsPrime函数 。
当源代码不能立即用
函数断点另外一种有用小窍门是设置断点在不是现成的代码里。下面举个例子,我们用C++实现(available for download)。这个例子使用ATL然后我们想debug ATL代密码看看他们怎么工作。而ATL代码可以用,你不可能在你的IDE里打开它。即时你是这么做了,你大概需要一段去找在哪设置断点。
你可以通过使用函数断点节省你一些时间。在这个例子里,我用CComPtr 与对象CObject1。设置断点在ATL里我用的函数上。同上呼出这个断点窗口。
如果我输入ATL::CComPtrBase<CObject1>::Attach函数名,我将设置断点在这个函数上。我也可以选择用通配符输入ATL::CComPtrBase<CObject1>::*来设置断点在所有匹配的函数上。当我这样做之后,这些断点出现在断点窗口,有三个。
现在我运行程序,我将会停在这些断点处,VS会把我带到正确的源代码位置上。
backbonejs mvc框架的更多相关文章
- backbonejs mvc框架的增删查改实例
一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...
- 前端MVC框架Backbone 1.1.0源码分析(一)
前言 如何定义库与框架 前端的辅助工具太多太多了,那么我们是如何定义库与框架? jQuery是目前用的最广的库了,但是整体来讲jQuery目的性很也明确针对“DOM操作”,当然自己写一个原生态方法也能 ...
- 最轻量级的前端Mvc框架backbone
最轻量级的前端Mvc框架backbone依赖最轻量级的库understore backbone并非将前端再次切分为mvc,而是分为了七大模块,分别是:Events.Model.Collection.R ...
- Backbone.Events—纯净MVC框架的双向绑定基石
Backbone.Events-纯净MVC框架的双向绑定基石 为什么Backbone是纯净MVC? 在这个大前端时代,各路MV*框架如雨后春笋搬涌现出来,在infoQ上有一篇 12种JavaScrip ...
- 开源:Taurus.MVC 框架
为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...
- 编写自己的PHP MVC框架笔记
1.MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). ...
- 转 10 个最佳的 Node.js 的 MVC 框架
10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到: 收藏 +322 Node.js 是一个基于Chrome JavaScri ...
- 制作自己的MVC框架(一)——简单粗暴的实现
现在市面上有很多成熟的MVC框架,可以拿来直接用,但自己造一下轮子其实也挺有意思的. 下面先来看个最简单粗暴的MVC实现. 5个文件就能实现最简单的MVC,在Apache中设置一个虚拟目录,配置个简单 ...
- 分享一实战性开源MVC框架<Linux、Windows跨平台开发so easy>
一.引子 开源地址 https://github.com/564064202/Moon.Mvc 欢迎加入开发 .NET Core微软还在发力,但作为商用还有一段距离,很多开发库尚不能用于.NET ...
随机推荐
- Spring环境配置
研究spring3的时候发现一个非常好用的特性:环境配置(spring2是否有此特性未知) 官方演示样例代码例如以下: <!-- app-config.xml --> <beans ...
- .pb.h:9:42: fatal error: google/protobuf/stubs/common.h: No such file or directory
看看这个你应该知道,找不到头文件,它可用于g++ 的-I 参数: -I/usr/local/lib/protobuf/include如需订购g++在/usr/local/lib/protobuf 以上 ...
- Ubuntu通过使用PyCharm 进行调试 Odoo 8.0 可能出现的问题
实现步骤,请移步http://shine-it.net/index.php?topic=16603.0 要么 http://www.mindissoftware.com/2014/09/11/Run- ...
- 经典算法题每日演练——第六题 协同推荐SlopeOne 算法
原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为 ...
- OData.NET已在 GitHub上开源
OData.NET已在 GitHub上开源 微软最近已将OData .NET所有类库的源代码全部发布在GitHub上. 以下与OData相关的项目目前都已迁移到GitHub上: ODataLib Ed ...
- 私人定制javascript中对象小知识点(Only For Me)
废话不多讲,先上笑话,然后再,.看懂这个的说明你的节操已经不再了. 晚饭后去理发店理发...割了吧...老板问我怎么剪,我悠悠的来一句往帅了剪...高潮往往令人想不到....旁边一在焗油烫头发的大妈说 ...
- 深入解析java乱码
1.什么是编码 ,为什么要编码 先前从没有思考这么深入的问题,觉得一切理所当然,直到有一天java的乱码让我跪了,他不在听我的话,到处是乱码,这次我不打算放过它,我要收拾了它. 大家都知道,文本文件, ...
- SSAS系列——【02】多维数据(维度对象)
原文:SSAS系列——[02]多维数据(维度对象) 1.维度是什么? 数学中叫参数,物理学中是独立的时空坐标的数目.0维是一点,1维是线,2维是一个长和宽(或曲线)面积,3维是2维加上高度形成体积面. ...
- Java-DES算法加密解密工具类
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import ...
- Object-C中Category类体验
Object-C中Category类体验 Object-C开发的时候有的时候会用到Category类,类似于Java和C#中扩展类,就是如果你觉得如果你觉得常用的方法在String中没有,可以根据业务 ...