一:开发环境

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后台代码

esp = require 'esp'
esp.route ->data = []data.push {id:1,name:'测试1',gender:'male',subject:'语文',score:'80'}data.push {id:2,name:'测试2',gender:'male',subject:'数学',score:'90'}data.push {id:3,name:'测试3',gender:'male',subject:'英语',score:'88'}data.push {id:4,name:'测试4',gender:'male',subject:'语文',score:'70'}data.push {id:5,name:'测试5',gender:'male',subject:'数学',score:'90'}@get '/', ->@view 'home'@get '/data', -> @json data@post '/data', ->i = data[data.length-1].id+1model = {}d = ''@request.on 'data',(chunk) -> d += chunk@request.on 'end', =>obj = JSON.parse dconsole.log objmodel =  {id:i,name:obj.name,gender:obj.gender,subject:obj.subject,score:obj.score}data.push model@json model@delete '/data/:id', ->for each, i in dataif each.id.toString() is @iddata.splice i,1@json id:@id@put '/data/:id', ->d = ''@request.on 'data',(chunk) -> d += chunk@request.on 'end', =>obj = JSON.parse dconsole.log obj.namefor each, i in dataif each.id == obj.ideach.name = obj.nameeach.gender = obj.gendereach.subject = obj.subjecteach.score = obj.score@json each

View Code

四:实现页面效果

以上实现了一个简单增删改的实例,练习了backbonejs mvc框架的使用。有些描述是自己的理解,有不正确的地方望大伙指正。

转载于:https://www.cnblogs.com/Joans/p/3365432.html

backbonejs mvc框架的增删查改实例相关推荐

  1. android增删功能代码,Android SQLite增删查改实例代码部分

    在 Android与SQLite数据库 这个专题里我们谈到了 SQLite 的基本应用,但在实际开发中,为了能够更好的管理和维护数据库,我们会封装一个继承自 SQLiteOpenHelper 类的数据 ...

  2. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  3. TP框架增删改查需要掉ajax么6,TP6框架--EasyAdmin学习笔记:实现数据库增删查改

    这是我写的学习EasyAdmin的第三章,这一章我给大家分享下如何进行数据库的增删查改 上一章链接:点击这里前往 上一章我们说到,我仿照官方案例,定义了一条路由goodsone和创建了对应数据库,我们 ...

  4. JAVA原生mvc实现用户信息的增删查改

    笔者最近学完jsp和servlet,于是心血来潮的打算写个简单的用户案例 环境准备: 开发工具eclipse jdk-1.8.0_72 tomcat-9.0.5 前端部分: 1.自己手写了一套样式 2 ...

  5. django mysql开发_基于django框架web项目实战开发四 django+mysql实现增删查改功能

    第一步:编写增删查改功能代码 打开项目myweb目录下view.py, 并编写以下代码 view.py from django.shortcuts import render, redirect fr ...

  6. MERGE批量增删查改数据

    MERGE优点: 在批量处理数据的时候,我可以用到merge一次完成数据处理. 示例代码一: MERGE INTO student AS t using (SELECT '丽水' AS NAME,20 ...

  7. Django:数据库表的建立与增删查改(ForeignKey和ManytoMany)

    数据库表的创建: 1.Django工程项目建立,基础环境调试. 2.创建表 from django.db import models class Publisher(models.Model):    ...

  8. winform调用webservice增删查改_教你分别用数据库与云函数实现“增删查改”

    导语 数据库 API 与云函数"增删查改"的姿势有何不同?对比代码差异往往有助于更好的理解,本文用详细代码帮你寻找答案并巩固基础! ▌一.云开发初始化 wx.cloud.init( ...

  9. java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】

    本文实例讲述了MongoDB增删查改操作.分享给大家供大家参考,具体如下: MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的. Insert操作: 单条插入 v ...

最新文章

  1. 计算机专业的第二批本科大学,我校22个专业入选第二批一流本科专业建设“双万计划”...
  2. 银盛通信与深圳邮政达成合作,全城线下代办点突破1000家
  3. 关于leetcode第K个最大元素的几种解法
  4. 网络配置之ifconfig及Ip命令详解
  5. linux shell的二级菜单,linux shell编程之菜单选择(一)
  6. 华为云DevCloud重金悬赏,开发者大赛等你来战!
  7. Product mass creation tool
  8. “70后”清华教授,任大学校长
  9. 叫做 Nanshan即时通讯 贪婪型
  10. Jenkins部署java项目实例
  11. Poj 1324 Holedox Moving 状压判重+BFS
  12. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】...
  13. AD09由英文改中文菜单步骤
  14. 2021年N1叉车司机找解析及N1叉车司机考试试卷
  15. WXGA TFT和XGA TFT的区别
  16. HMM模型 forward backward viterbi算法
  17. AliCDN,盛开在云端的花朵
  18. ERP的工单(MO)
  19. 安卓productFlavors多渠道打包简单使用
  20. 架构集一---语音连麦聊天室实现方案分析

热门文章

  1. matlab语音去除白噪声_全国首款“AI语音电梯”亮相海淀医院、北医三院
  2. ibm量子计算机科学家,量子计算机比传统计算机更具优势?IBM科学家这样说……...
  3. oracle 自身连接查询,Oracle 连接查询
  4. linux mtu日志,linux MTU调整
  5. matlab摩擦阵子,用simulink仿真lugre摩擦模型时出现错误该如何解决。
  6. 红米有android,这些是不支持ANDROID 11更新的小米和红米手机
  7. Android SDK中tools详解
  8. oracle12cr2发布时间,Oracle 12cR2 发布在即
  9. gif提取 python_编写Python爬虫抓取暴走漫画上gif图片的实例分享
  10. kmeans算法学习2