通常在node.js或javascript中扩展原型类。(js newb)
我正在查看expressjs的源代码,并看到了:
var mixin = require('utils-merge');
....
mixin(app, proto);
mixin(app, EventEmitter.prototype);
Utils-merge
好像是一个外部模块。以上和做类似的事情有什么区别:
var util = require('util');
....
util.inherit(app, proto);
util.inherit(app, EventEmitter);
而且这仍在尝试扩展属性吗?我有点在这里迷路:
app.request = { __proto__: req, app: app }; // what is the equivalent for this in util?
app.response = { __proto__: res, app: app };
如果是这样,即使util.inherit
使用它,仍然可以使用吗?
app.request = util.inherit(app, req)
或类似的东西?jshint说__proto__
很可惜。
另外我也看到了吗?
var res = module.exports = {
__proto__: http.ServerResponse.prototype
};
可以吗?
var res = module.exports = util.inherits...??
我在看expressjs的源代码
你可能也想看看这个问题如何app
应该工作。
utils-merge
上面和做类似的事情之间有什么区别:var util = require('util'); .... util.inherit(app, proto); util.inherit(app, EventEmitter);
他们在做完全不同的事情:
utils-merge
将属性从源对象合并到目标对象。实用程序继承
将原型方法从一个构造函数继承到另一个构造函数。 构造函数的原型将设置为从superConstructor创建的新对象。
还请阅读他们的
资料!
app
(同时是用于奇数的原因的函数)是不是一个构造,但应该是一个(纯)对象-的 实例
所作createApplication
。因此,这里没有办法进行“类继承”。而且,您不能utils.inherits
在同一个构造函数上多次使用它,因为它确实会
覆盖 其.prototype
属性。
取而代之的是,mixin
功能将只是复制所有属性proto
,然后所有属性从EventEmitter.prototype
该app
对象。
而且这仍在尝试扩展属性吗?我有点在这里迷路:
app.request = { __proto__: req, app: app }; // what is the equivalent
for this in util?
app.response = { proto: res, app: app };
Object.create
为此请使用本机函数:
app.request = Object.create(req);
app.request.app = app;
app.response = Object.create(res);
app.response.app = app;
如果是这样,即使
util.inherit
使用它,仍然可以使用吗?app.request = util.inherit(app, req) // Or something like that?
不,真的不是。
jshint说
__proto__
很可惜。
是的,您应该Object.create
改用。但是非标准__proto__
可能会保留以保持兼容性。
另外我也看到了吗?
var res = module.exports = { __proto__: http.ServerResponse.prototype };
可以吗?
var res = module.exports = util.inherits...??
不,同样是以下情况Object.create
:
var res = module.exports = Object.create(http.ServerResponse.prototype);
问题内容: 我对大规模服务器端开发还不陌生。我想使用Node.js编写服务器,但在继续前进之前,我想知道将节点扩展到每秒20个查询的一般原则是什么。 我正在编写的服务将主要是数据库的接口,以及对输入数据的身份验证和确认。 问题答案: 负载均衡 对于最简单的网站,您很可能根本不需要任何扩展。只需一个盒子就能让您覆盖。之后,您应该进行负载平衡,就像您提到的那样,每种架构几乎都是相同的(就像您所说的,您
问题内容: 为什么在扩展Node.js类时将变量包装在大括号内,例如? 例如,Trevor Burnham在他的事件驱动CoffeeScript 教程中,通过以下方式扩展了Node的EventEmitter: 问题答案: 这个: 等效于以下JavaScript: 当您使用模块的导出返回一个对象时,这些导出之一就是“类”。使用只是退出返回对象的惯用快捷方式。您也可以这样说: 若你宁可。当您要提取对象
10 Node.js 的 c++ 扩展 Node 的优点是处理 IO 密集型操作,对于互联网应用来说,很大一部分内容都是 IO 处理(包括文件 IO和网络IO),但是还是有部分功能属于计算密集型操作。如果遇到这种计算密集型操作,推荐的解决方案是使用其他语言来实现,然后提供一个服务,让 Node 来进行调用。不过我们这章要讲的是 Node 的 C++ 扩展,也就是说,我们可以通过这种方式是 Node
问题内容: 我对大概要文件节具有通用逻辑,因此我尝试使用对概要文件节的通用逻辑进行创建,并且与该节相关的所有类都应按照我的理解正确扩展此Profile类,但是当我尝试创建时会收到错误消息: CodeIgniter尝试找到我正在其中运行的此类。 我的错误在哪里?或者,也许还有另一种更好的方法来标记出通用逻辑? 问题答案: 我认为您已经将MY_Controller放在/ application / c
我有一个节点。js应用程序,将一些配置信息附加到对象: TypeScript 编译器不喜欢这样,因为 类型没有名为 的对象: TS2339:类型“Global”上不存在属性“myConfig”。 我不想这样做: 我如何扩展< code>Global类型以包含< code>myConfig或者只是告诉TypeScript闭嘴并相信我?我更喜欢第一个。 我不想更改中的声明。我看到了这篇SO帖子,并尝试
问题内容: 我有一个node.js应用程序,该应用程序将一些配置信息附加到该对象: TypeScript编译器不喜欢这样,因为该类型没有名为的对象: TS2339:类型“ Global”上不存在属性“ myConfig”。 我不想这样做: 如何扩展类型以包含或只是告诉TypeScript关闭并信任我?我希望第一个。 我不想更改其中的声明。我看到了这样的帖子,并尝试了这个: 作为扩展现有接口的一种方