Tag: oop

如何正确使用socket.io和oop

我喜欢node.js和socket.io,因为它们很强大,很漂亮,但是我的发展很less遇到问题。 这可能是因为我没有足够的练习node.js一个JavaScript的。 问题:有一个代码: var express = require('express'); var sio = require('socket.io'); var X = require('./js/x.js'); var Y = require('./js/Y.js'); var app = express.createServer(); var ws = sio.listen(app); var users = []; app.use(express.static(__dirname + '/public')); ws.sockets.on('connection', function(socket) { users.push(new X(socket)); if (users.length === 2) { var z = new Y(users.shift(), users.shift()); z.listen(); } }); app.listen(9000); 这里是X和Y: […]

emberJS混入超级覆盖

我怎样才能重写一个混音,但仍然保持旧的混音function。 我有一个混合使用beforeModel ,并有一个路线: App.PlayRoute = Ember.Route.extend("beforeModelMixin", { beforeModel: { // Here i want to have mixin beforeModel functionality as well as my own hook. } } 上面的例子beforeModelMixin被覆盖,不再工作,因为我再次定义beforeModel 。 那可能吗?

为什么NodeJS util.inherits函数中的“super_”属性添加到构造函数中?

我正在研究JavaScript中的一些不同的inheritance技术。 我一直在使用NodeJS util.inherits函数为我的最新项目。 我想知道: 为什么super_属性是在构造函数而不是原型上设置的? 将它分配给超级构造函数的原型值不是更有意义吗? 由于构造函数总是可以从原型constructor属性中获取? 所以不是这样的: constructor.super_ = superConstructor; constructor.prototype = Object.create(superConstructor.prototype, { constructor: { value: constructor, enumerable: false } }); 这将是: constructor.prototype = Object.create(superConstructor.prototype, { constructor: { value: constructor, enumerable: false }, super_:{ value: superConstructor.prototype, enumerable: false } }); 这种方式调用超级函数是更容易,因为而不是: this.constructor.super_.prototype.someFunction.call(this); 它会变成这样: this.super_.someFunction.call(this); 这对我更有意义,但我很好奇,如果我失去了一些东西。 我也做了一个JSFiddle来展示这个实现。 预先感谢您的回复!

模型 – 视图 – 发布者作为devise模式?

我想我会在这里问这个。 有没有人知道在涉及基于推送的数据传输的“MVP”devise模式方面正在做的工作(不要与Model-View-Presenter混淆)? 我叫它Model-View-Publisher,或者Model-Subscriber-Publisher,其中一个订阅者类似于一个View,一个发布者类似于一个控制者。 这里的想法是,而不是你的典型的控制器响应客户端的请求,你有一个“发布者”,推动数据到客户端“订户”,当发生一些事件。 推动将通过长期投票/反向阿贾克斯/彗星或其他类似的方法。 像这样的框架是否存在,如果不存在,它会是一个有用的模式? 我特别感兴趣的是在客户端的C#/ Javascript或后端的NodeJS实现。 另外,有没有任何MVC框架或实现提供控制器,使用Comet等技术将数据推送到客户端?

如何在构造函数中访问类variables? (node.js OOP)

有没有办法在构造函数中访问类variables? var Parent = function() { console.log(Parent.name); }; Parent.name = 'parent'; var Child = function() { Parent.apply(this, arguments); } require('util').inherits(Child, Parent); Child.name = 'child'; 即父的构造函数应该logging“父”和孩子的构造函数应该logging“孩子”基于每个类中的一个类variables。 上面的代码不能像我所期望的那样工作。

Node.js – 更好的方式来pipe理JavaScript范围之间的callback?

我正在与Node.JS工作,并有两个对象,我通过callback之间移动。 我想出了一个解决scheme来维护范围引用到正确的对象。 我试图找出是否有更好的方法来做到这一点,或者如果这是一个很好的做法。 function Worker () {} Worker.prototype.receiveJob = function(callback, bossReference) { this.doJob(callback, bossReference); }; Worker.prototype.doJob = function(callback, bossReference) { callback.call(bossReference); // callback(); // this will not work }; function Boss () { this.worker = new Worker(); } Boss.prototype.delegateJob = function() { this.worker.receiveJob(this.whenJobCompleted, this); }; Boss.prototype.whenJobCompleted = function() { this.sayGoodJob(); }; Boss.prototype.sayGoodJob = function() { […]

其他类函数中的Javascript类实例(nodejs)

我处理nodejs,我无法弄清楚,为什么我不能从另一个类函数调用类实例。 这是我的代码。 请帮忙。 var StationDAO = require('./StationDAO.js'); var StationSearchCriteria = require('./StationSearchCriteria.js'); function GasStationService(lat, long, zoom) { this.latitude = lat; this.longitude = long; this.zoom = zoom; this.zoomToKilometers = 0.009; /* ……… */ this.minLat = function () { return this.latitude – this.zoomToKilometers; }; this.minLong = function() { return this.longitude – this.zoomToKilometers; }; this.maxLat = function() { return […]

接受或抵制Node缺乏types安全的问题

我来自一个语言世界(Delphi,PHP,Java),静态types和强大的OOP依从性支撑整个体系结构。 无论是使用抽象类作为外观定义,还是使用接口来支持DI,它们都指导了我开发解决复杂业务问题的架构的能力。 NodeJS(更一般地说是Javascript)的types感非常弱,所以叫做“duck typing”,我发现我不能在Node中使用传统的(和强大的)技术。 如果我想写一些外观到数据库,我可以,当然,但写模拟或存根的人没有方法签名devise反对 – 他/她必须看我的模块(“类”)。 如果我可以使用一个接口,这会容易得多,但事实上,我不能没有一些额外的pipe道。 当在Node中构build复杂的,松散耦合的应用程序时,我是否应该接受这种缺乏input(如果是这样,怎么办?),或者利用Node的OOP库(如DejaVu),从而获得“types安全”运行时types检查。 我倾向于第二个,因为它允许我写一个额外的运行时保护层的合同驱动代码。

带Mongoose OOP的Node.JS – 如何将mongoose数据访问代码与纯数据对象分开?

我遇到了Mongoose的一个devise问题 – 但也许我正在采取错误的方法? 在老的OOP风格,我想有一个名为用户类。 该类有几个成员,如用户名,名字,姓氏,盐和哈希,它有一个方法称为validation,它把散列密码作为参数。 然而,为了填充我的用户对象的数据,我需要写这样的代码,据我所知: var userSchema = mongoose.Schema({ firstName: String, lastName: String, userName: String, salt: String, hashed_pwd:String }); userSchema.methods = { authenticate: function(passwordToMatch) { return crypto.hashPwd(this.salt, passwordToMatch) === this.hashed_pwd; } } 这段代码混杂着Mongoose特定的代码 – 调用mongoose.Schema,并添加我必须使用userSchema.methods的方法。 当我试图分别声明我的User类并尝试创buildMongoose Schema时,我遇到了各种错误,并且成员方法未被识别。 所以当我想用同一个模式使用不同的数据库时,我必须重新声明一切。 但我想分开申报我所有的模式,因为它们将在我的应用程序中重复使用。 有没有什么优雅的解决scheme,是否有一个不同的库我可以使用,或者我是一个完全错误的方法? 提前致谢..

为什么nodejs不能inheritance浏览器js

我有两个构造函数,子从父inheritance一些方法和属性,它只是这样的东西 function foo(){ this.bar="baz"; } function fubar(){ this.qux="zubar"; } fubar.prototype=new foo(); fubar.prototype.constructor=fubar; module.exports.fubar=fubar; 里面的文件inheritance工作正常,但是当它被导出不能达到父母的元素我已经尝试util.inherits以及结果是相同的