小编Lif*_*ery的帖子

util.inherits - 替代或解决方法

我是节点中的n00b,并且发现util.inherits()非常有用,除了它似乎替换了原始对象的整个原型.例如:

var myClass = function(name){
    this._name = name;  
};

myClass.prototype = {
    (...)
};

util.inherits(myClass, require('events').EventEmitter);
Run Code Online (Sandbox Code Playgroud)

似乎抹去了原来的原型.

这给我带来了两个不便之处:
1 - 我必须在调用后声明为我的原型添加属性inherits,

var myClass = function(name){
    this._name = name;  
};

util.inherits(myClass, require('events').EventEmitter);

myClass.prototype.prop1 = function(){...};
myClass.prototype.prop2 = function(){...};
Run Code Online (Sandbox Code Playgroud)

而且,最重要的是,我认为我不能从两个或更多不同的类继承.

任何人都可以向我解释为什么这是有道理的,什么是解决这个问题的好方法?

谢谢

javascript inheritance node.js

19
推荐指数
3
解决办法
1万
查看次数

使用节点js中的AWS sdk将整个目录树上载到S3

我目前使用如下方式将单个对象上传到S3:

var options = {
        Bucket: bucket,
        Key: s3Path,
        Body: body,
        ACL: s3FilePermissions
};

S3.putObject(options,
function (err, data) {
    //console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

但是当我有一个大型资源文件夹时,我使用AWS CLI工具.
我想知道,是否有一种原生方式与aws sdk做同样的事情(将整个文件夹上传到s3)?

javascript amazon-s3 amazon-web-services node.js aws-sdk

16
推荐指数
5
解决办法
2万
查看次数

如何在socket io中向单个客户端发送错误数据包?

我希望能够向客户端发出错误数据包,类似于注册中间件时的使用方式。
这有效:

var io = require('socket.io')();
io.use(function(socket, next){
  if (socket.request.headers.cookie) return next();
  next(new Error('Authentication error'));
});
Run Code Online (Sandbox Code Playgroud)

这不会:

io.on('connection', function(socket){
    socket.emit('error', {errorMessage: 'errorMessage'});
    //or
    socket.emit('error', new Error('error'));
});
Run Code Online (Sandbox Code Playgroud)

Error: Uncaught, unspecified "error" event.

如何使用套接字对象发出错误事件?

javascript sockets websocket node.js socket.io

5
推荐指数
1
解决办法
5827
查看次数

模型对象应该在控制器类中实例化吗?

为了掌握MVC,我写了以下内容:

//Model/Model.php
class Model
{
    private $dbh;

    public function __construct()
    {
        $this->dbh = dbConnect();
    }

    private function dbConnect()
    {
        //return database connection
    }

    public function crudMethod()
    {
        //interact with databse using $this->dbh
    }

}

//Controller/Controller.php
class Controller
{
    public $modelConnection;

    public function __construct()
    {
        $this->modelConnection = new Model();
    }
}


//View/index.php
$obj = new Controller;
$obj->modelConnection->crudMethod();

?>
Run Code Online (Sandbox Code Playgroud)

看看我的代码,我觉得我完全忽略了这一点.
控制器不提供实际值,我也可以直接实例化Model类.

模型类是否应该被实例化?控制器内部还是外部?或者这完全是不好的做法?我如何改进这种结构以支持MVC范例?

php oop model-view-controller design-patterns

2
推荐指数
1
解决办法
3049
查看次数