• Backbone.js 和socket.io学习笔记


    网址  http://developer.teradata.com/blog/jasonstrimpel/2011/11/backbone-js-and-socket-io

    Backbone.js 和socket.io学习笔记

    Backbone.js 是一个轻量级的javascript MVC框架。默认的CRUD操作用的是xhr ,Socket.io 是一个Node.js 运行起来的web server.这篇文章就来谈谈通过传统的Backbone.sync方法使用sockect.io 来做数据操作。

    注意   Backbone.sync  用于数据通信的操作。    node.js 相结合

    Backbone.sync

    当一个模型或集合被修改,服务器的save被调用 (fetch save destroy) 

    Backbone.sync随之被调用,一个CRUD操作在后台执行。


    展示些代码

    在下面的代码中默认的对象、集合增加了一个对象this.ctx. 它提供了一个操作的上下文环境,并且应该在一个Backbone Model 或Collection 的initialize 方法中定义。请阅读注释。随着你的特定需求这个想法可以得到扩展。这是个尝试性的程序,作者不保证它是好的。请包涵吧。

    Backbone.sync = function(method,model,options) {

      var socket = window.NAMESPACE.scoket;

    var signature = fuction() {

      var sig = {};

      sig.endPoint = model.url + (model.id? ('/' + model.id) :'');

      if(model.ctx) sig.ctx = model.ctx;

      return sig;

    }

    var event = function(operation ,sig) {

      var e = operation + ':';

      e += sig.endPoint;

      if(sig.ctx) e += (':' + sig.ctx);

      

    }

    var create = function() {

      var sign = signature(model);

          var e = event('create', sign);

      scoket.emit('create',{'signature':sign,item:model.getAttributes});

      scoket.once(e,function(data) {

        model.id = data.id;

        console.log(model);

      });

    }

    var read = function(){

      var sign = signature(model);

      var e = event('read',sign);

      socket.emit('read', {'signatur',sign});

      socket.once(e.function(data) {

        option.success(data);

      });

    }

    var udpate = function(){

      var sign = signature(model);

      var e = event('update', {'signature':sign,item:model});

      socket.once(e,function(data) {

        console.log(data);

      });

    }

    switch(method) {

      case 'create' :

        create();

      

     break;       
            case 'read'
                read();
                break
            case 'update':
                update();
                break;
            case 'delete':
                destroy();
                break;

    }

       }

    Node.js socket.io 

    var io = require('socket.io').listen(3000);

    var create = function (socket,signature) {

      var e = event('create',signature),data = [];

      socket.emit(e,{id:1});

    }

    var read = function(socket,signature) {

      var e =  event('read', signature),data;

      data.push({});

      socket.emit(e,data);

    }

    var update = function(socket,signature) {

      var e = event('update', signature),data = [];

    }

    var event = function (operation, sig) {
        var e = operation + ':';
        e += sig.endPoint;
        if (sig.ctx) e += (':' + sig.ctx);
     
        return e;
    };
     
    io.sockets.on('connection', function (socket) {
        socket.on('create', function (data) {
            create(socket, data.signature);      
        });     
        socket.on('read', function (data) {
            read(socket, data.signature);
        }); 
        socket.on('update', function (data) {
            update(socket, data.signature);      
        });
        socket.on('delete', function (data) {
            destroy(socket, data.signature);      
        });               
  • 相关阅读:
    温故而知新-错误和异常处理
    温故而知新-面向对象的PHP
    Django框架之模板语法【转载】
    django2.0实现数据详情页展示的流程
    django2.0表的ORM字段类型和展示
    Fatal error: Cannot use object of type PHPExcel_RichText as array
    django2.0数据展示流程
    django2.0模板相关设置
    django2.0新增功能流程
    django2.0设置默认访问路由
  • 原文地址:https://www.cnblogs.com/yushunwu/p/2369056.html
Copyright © 2020-2023  润新知