我有一个关于模块缓存的node.js文档的问题:
模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得 完全相同的返回对象,如果它将解析为同一个文件.
多次调用require('foo')可能不会导致模块代码多次执行.这是一个重要的特征.有了它,就可以返回"部分完成"的对象,从而允许加载传递依赖,即使它们会导致循环.
是什么意思may
?
我想知道require是否总是返回相同的对象.所以,如果我需要一个模块一个中app.js
,改变出口中的对象app.js
(需要回报的),之后需要一个模块乙在app.js
本身需要模块一个,我将永远得到该对象的修改版本或新一?
// app.js
var a = require('./a');
a.b = 2;
console.log(a.b); //2
var b = require('./b');
console.log(b.b); //2
// a.js
exports.a = 1;
// b.js
module.exports = require('./a');
Run Code Online (Sandbox Code Playgroud) 我正在使用Node.JS和Express创建一个社区站点,几乎所有表达教程或示例都使用MongoDB,所以我检查了它.我到目前为止使用的唯一数据库是MySQL,但我对它并不熟悉,因此不会打扰我阅读MongoDB.Mongo看起来相当不错,文档模型可能是有益的.使用猫鼬它很容易使用.但是我得到了一些问题所以如果它根本不适合我就不会花很多时间学习使用MongoDB:
我已经读过如果你只在一台机器上使用它而你可能会遇到数据丢失,那么MongoDB是不可靠的.是对的吗?该项目并不是那么大,我可以负担得起另一台服务器和数据丢失是完全不行!想象一下,一些论坛帖子就消失了.但我想如果发生这种情况,人们就不会使用它.
该网站将包含一个自建论坛,我不确定关系数据库是否会更好.但是,您可以使用嵌入的帖子保存线程,依此类推.但不知道如何搜索,因为Mongo不支持全文搜索.你怎么看?
何时在Mongo中使用嵌入式文档?示例:用户可以在Twitter上发布状态更新.您会在用户文档中保存这些更新吗?可以进行很多更新.或者每次更新一个文档并将其链接到用户ID?3.1以及如何跨多个文件查询?您想要获取朋友的最近10个状态更新.你可以用MySQL中的JOIN来做到这一点.
有没有办法为MySQL中的文档使用自动增量ID?例如,用户应该有一个唯一的整数键,但我不想像Mongo那样使用一些随机数,以保持用户ID较小.
你如何处理猫鼬的竞争状况?您从db加载文档,编辑并稍后保存.但也许它已经在同一时间发生了变化.
Express(node.js)的模板引擎是基于Mustache还是使用类似的语法?
所有我能找到的是haml
,jade
,ejs
,jquery templates
和一个基于CoffeeScript的(我写纯JS).
我想写"正常"的HTML,所以才ejs
和jqtpl
将适合.我已经使用过mustache
,backbone
所以最好也在Node.js的服务器端使用它