• 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:'10%;', -> '编号'
          th style:'15%;', -> '姓名'
          th style:'15%;', -> '性别'
          th style:'15%;', -> '科目'
          th style:'15%;', -> '成绩'
          th style:'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后台代码

     View Code

    四:实现页面效果

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

    函数断点

     

    本篇博客是VisualStudio断点调试系列文章的一部分,在本篇文章里,我们将展示函数断点在VS中的怎么样为你节省时间的特性。

    处理重载

    你想调试一个指定的函数,但是这个函数有一些重载。一个选择是找到所有的重载并分别设置断点。

    如果有很多重载,那么会非常消耗时间。另外一个选择是使用函数断点。

    在我们的例子里(with code available to download),你想停在函数IsPrime()上,它有2个重载。

    首先我们要去断点窗口里Debug->Windows->Breakpoints 创建一个断点,点击“new”

    clip_image002

    然后点击 “Break at Function…” 呼出一个新断点对话框。 你可能注意到也可以用快捷键Ctrl+B.

    clip_image003

    输入函数名“IsPrime” 然后点OK。这样它将会把我们带到新的对话框,这里有所有匹配的方法函数,我们可以快速的选择。可以通过点击All按钮来全选。clip_image004

    现在我运行程序,可以命中这个断点在这个版本的调用的 IsPrime函数 。

    clip_image005

    当源代码不能立即用

    函数断点另外一种有用小窍门是设置断点在不是现成的代码里。下面举个例子,我们用C++实现(available for download)。这个例子使用ATL然后我们想debug ATL代密码看看他们怎么工作。而ATL代码可以用,你不可能在你的IDE里打开它。即时你是这么做了,你大概需要一段去找在哪设置断点。

    你可以通过使用函数断点节省你一些时间。在这个例子里,我用CComPtr 与对象CObject1。设置断点在ATL里我用的函数上。同上呼出这个断点窗口。

    clip_image006

    如果我输入ATL::CComPtrBase<CObject1>::Attach函数名,我将设置断点在这个函数上。我也可以选择用通配符输入ATL::CComPtrBase<CObject1>::*来设置断点在所有匹配的函数上。当我这样做之后,这些断点出现在断点窗口,有三个。

    clip_image008

    现在我运行程序,我将会停在这些断点处,VS会把我带到正确的源代码位置上。

    clip_image010

      NativeBreakpointsSample.zip

  • 相关阅读:
    OKHttp使用详解
    spring okhttp3
    HTTPS SSL/TLS协议
    springboot @scheduled 并发
    spring @Scheduled 并发
    CORSFilter 跨域资源访问
    定时任务 spring @Scheduled注解
    spring proxy-target-class
    iOS 适用于Pad上的菜单弹出界面-最简单的一种实现记录
    Mac系统清理、占用空间大、空间不够、查看系统文件大小分布
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3366219.html
Copyright © 2020-2023  润新知