Tag: javascript

有没有一种方法Object.freeze()的JavaScriptdate?

根据MDN Object.freeze()文档 : Object.freeze()方法冻结一个对象:也就是说,阻止新的属性被添加到它; 防止现有的属性被删除; 并防止现有属性或其可枚举性,可configuration性或可写性被更改。 实质上,该对象是有效的不可变的。 该方法返回被冻结的对象。 我期待在一个date冻结呼叫将阻止该date的变化,但它似乎并没有工作。 这就是我在做什么(运行Node.js v5.3.0): let d = new Date() Object.freeze(d) d.setTime(0) console.log(d) // Wed Dec 31 1969 16:00:00 GMT-0800 (PST) 我会期待的调用setTime要么失败,要么什么都不做。 任何想法如何冻结date?

Node.js的validation库

有没有一个好的validation框架node.jsvalidationvariables为: 如果它的stringtypes,date,数字等 最大和最小长度 电子邮件,电话 等等…

将二进制NodeJS缓冲区转换为JavaScript ArrayBuffer

如何将一个NodeJS二进制缓冲区转换为JavaScript ArrayBuffer?

我如何获得node.js中的string的sha1哈希值?

我试图创build一个用node.js写的websocket服务器 为了让服务器工作,我需要得到一个string的SHA1哈希值。 我必须做的是在文档第35页的第5.2.2节中解释。 说明:例如,如果客户端握手中"Sec-WebSocket-Key"头的值为"dGhlIHNhbXBsZSBub25jZQ==" ,则服务器会附加"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"string形成string"dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" 。 然后,服务器将采取此string的SHA-1散列,给出值0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea。 这个值然后是base64编码,给出值"s3pPLMBiTxaQ9kYGzzhZRbK+xOo=" ,这将在"Sec-WebSocket-Accept"头中返回。

在expressjs中使用next()将variables传递给下一个中间件

那么我的问题是我想通过一些variables从第一个中间件到另一个中间件,我尝试这样做,但有req.somevariable是一个给定的'未定义'。 //app.js .. app.get('/someurl/',middleware1,middleware2) … ////middleware1 … some conditions … res.somevariable = variable1; next(); … ////middleware2 … some conditions … variable = req.somevariable; … 谢谢回答。

用Mochatestingjavascript – 我如何使用console.log来debuggingtesting?

我正在使用JavaScripttesting运行“Mocha”。 我有一个失败的testing,所以我会debugging它使用console.log 。 但是当testing运行时,没有输出(仅来自Mocha的testing结果)。 摩卡似乎已经捕获并压制了我的console.log输出! 我怎样才能让摩卡显示我的输出? (在testing失败)? 编辑: 巨大的歉意! – console.log在testing过程中不起作用! 我一定是期待它压制输出,我没有正确地检查我自己的代码。 感谢您的回应。 所以…说的话…也许它实际上会是很好的压制输出testing通过? 嗯… 在一个相关的说明:我想使用console.log因为我有很多麻烦试图让Eclipsedebugging器连接到node.js. 我是唯一一个发现这个棘手的人吗? 你们如何debuggingnode.js? 用debugging器,还是用console.log语句?

部署生产Node.js服务器

我已经写了一个Node.js应用程序,我正在寻找它在我们的一台生产机器上运行。 这似乎是一个相当普遍的要求,但我找不到一个适当的解决scheme。 是否没有build立生产Node.js应用程序的解决scheme? 该应用程序很简单(<100 LOC),但需要非常高效,可靠,可连续运行多年,无需重新启动。 它将在一个大型网站上运行,每秒钟几十个连接。 (该应用程序不被用作networking服务器,它只有一个JSON API) 以下是我考虑的方法,但我仍然不确定: 使用框架(如Express) 因为应用程序需要高性能,而且非常简单,所以以框架的forms添加膨胀是我想要避免的。 用nohup启动服务器 这里的主要问题是exception处理,我们(显然)不希望整个服务器因为exception而崩溃。 据我所知,在一个try {} catch {}循环中包装整个应用程序将无济于事,因为在解释exception之后,Javascript解释器处于不可预知的状态。 那是对的吗? 使用像永远的东西 我已经在我们的FreeBSD机器上安装了Forever,这是非常麻烦的。 它最终产生了无法从Forever中杀死的无尽进程。 我必须运行kill -9来让我的机器重新运行,并且我不觉得在Forever上运行一个生产应用程序太有自信了。 也似乎Upstart(类似的工具,但更通用)不会在FreeBSD上运行。 托pipe解决scheme(如Heroku,Rackspace,Amazon EC2等) 这可能是最简单的解决scheme,但我们已经有一个严重的硬件,我们的networking服务器的其余部分。 出于财务考虑,这是没有道理的。 一定有一些确定的解决scheme呢? 我错过了什么吗?

用Node.js中的promise来replacecallback

我有一个简单的节点模块连接到一个数据库,并有几个function来接收数据,例如这个function: dbConnection.js: import mysql from 'mysql'; const connection = mysql.createConnection({ host: 'localhost', user: 'user', password: 'password', database: 'db' }); export default { getUsers(callback) { connection.connect(() => { connection.query('SELECT * FROM Users', (err, result) => { if (!err){ callback(result); } }); }); } }; 该模块将从另一个节点模块中被调用: app.js: import dbCon from './dbConnection.js'; dbCon.getUsers(console.log); 我想用promise来代替callback来返回数据。 到目前为止,我已经阅读了以下线程中的嵌套承诺: 使用嵌套承诺编写干净的代码 ,但是我找不到任何对此用例来说足够简单的解决scheme。 使用承诺返回result的正确方法是什么?

如何通过browserify获得缩小的输出?

刚刚开始使用browserify ,但我找不到文档如何让它溢出缩小输出。 所以我看起来像这样: $> browserify main.js > bundle.js –minified

咕噜(minimatch / glob)文件夹排除

我有一个情况,我试图用grunt来删除一个代码库,不包括特定的文件夹。 咕噜使用minimatch(类似于bsdglob)在引擎盖下匹配文件,但我似乎无法弄清楚如何做一个.gitignore风格排除一个文件夹。 我想要摄取这个: ignoreme 并匹配这些: /folder/path/here/to/something/ok.js /another/folder/path.js /test.js 但不匹配这些: /folder/ignoreme/something.js /folder/path/here/to/ignoreme/metoo/file.js 这将匹配一切,包括忽略: /**/*.js 所以我想我可以做一些事情: /**/!(ignoreme)/**/*.js 但是匹配ignoreme文件夹中的文件。 我习惯了正则expression式,但似乎无法弄清楚如何在这里重复模式或东西 – 我也尝试过这样的东西: /(!(ignoreme)|*)*/*.js 希望容器可以重复,但是这不起作用,它只是没有匹配所有的东西。 任何方式来传递一个正则expression式grunt文件path,或使这对我工作? 更新: 以下是我目前正在处理的问题: var pattern = /\/ignoreme\// var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){ return !pattern.test(f) }) 我仍然有兴趣,如果文件夹排除可能在minimatch。