Questions tagged «node.js»

Node.js是一个基于事件的异步I / O框架,它使用Google的V8 JavaScript引擎。

1
当您真的只是想让事物同步时,如何处理异步函数
我对NodeJS相当陌生,当我真的希望一个调用以同步的方式跟随另一个调用时,我很难理解函数的异步特性。 假设我正在调用Web服务方法。每个方法都有一个回调函数。但是,如果我想按特定顺序调用其中的10个怎么办?我真的需要在第一个回调中链接/嵌入所有功能吗?如果第二次连锁略有不同怎么办? 是否存在任何优雅的模式来应对您确实希望事情保持同步的情况? 还是真的应该让这种编程习惯于另一种思维方式?如果是这样的话,也许有人可以给我指出一个使用回调的较长函数链的清晰示例……
16 node.js 

5
什么是延迟回调?
我了解回调的概念,在回调中,我将一个函数传递给另一个函数,然后该函数随便使用提供的函数。 即使在谷歌搜索之后,我仍在努力理解延迟的回调。 有人可以提供简单的解释吗?我使用Ruby编程,但也了解C / C ++,但最重要的是,我是一位经验丰富的汇编语言程序员。所以我想知道这是否有点像一堆被弹出的回调地址?我希望学习jquery或node.js,而这些延迟的回调似乎对两者都是必不可少的。我了解基本的线程处理原理(尽管互斥对象使我的头部受伤;)
15 jquery  node.js 

1
NodeJS如何实现“非阻塞”?
我正在学习NodeJS,只是想澄清一些东西。到目前为止,在几本入门教程和书籍中,它们很早就描述了Node的“非阻塞”体系结构-或者说有可能(并建议整个观点)以非阻塞方式进行编码。 因此,例如,在我正在阅读以异步方式从数据库获取数据的书中给出了此示例。 http.createServer(function (req, res) { database.getInformation(function (data) { res.writeHead(200); res.end(data); }); }); 据我所知,发生的事情是Node调用了数据库,然后继续处理调用堆栈中下一步可能发生的任何事情。数据库请求完成后,将填充匿名回调函数中的数据变量,并将该函数添加到调用堆栈中(并在Node到达该堆栈时执行)。 我的问题是,究竟在处理数据库请求是什么?当然,Node必须同时阻止吗?负责数据库请求的是什么?或者,如果Node在等待对外部资源的异步HTTP GET请求,那么该请求又在做什么呢?


3
如何防止用户在其浏览器中编辑我的代码?
描述 我正在设计一个Node.JS应用程序(更像一个完整的网站)。该应用程序将发送五个JavaScript文件,并将具有<script>将它们链接在一起的标签。 题 如何防止用户和攻击者窥视和编辑我的代码? 一个例子是: Ctrl+ Shift+I 在Devtools的 goto Sources中,选择一个文件进行编辑(即index.html)并进行编辑 按Ctrl+ S会导致实时编辑发生 我想防止上述例子的发生...可能吗? 这是我的想法: 我将创建另一个客户端JavaScript文件prevent_keys.js 它将监听Ctrl+ Shift+ I。 如果返回true(即按下了按键),它将log显示按键。 但是,这不会阻止用户直接使用Devtools。

4
node.js是否适合进行后台处理?
我正在慢慢学习,node.js并且有一个小项目要开始。该项目将有很多后台流程(从外部站点下载数据,解析CSV文件等)。 对我和节点而言,一个巨大的“胜利”是它在客户端和服务器上都使用了JavaScript。我在日常工作中使用Java和JavaScript进行编码,但在Ruby方面也相当出色。 但是,就像我说的那样,在任何地方都使用一种语言似乎很有吸引力,而JS似乎符合该要求。 但是,我在使用JS运行后台作业方面经验不足。Ruby在这方面似乎很出色。而且我不反对使用它。那么您对此打算100%JS的想法是什么?我意识到很大的项目需要自定义解决方案。我只是想知道是否值得付出努力。或者,我应该只坚持使用Ruby做那些琐事吗? 意见表示赞赏。 谢谢

2
无需框架或库,如何使用node.js提供内容?
我正在尝试学习node.js并创建一个Web应用程序,尽管我尽力仅使用node.js来创建它,但我仍然很难找到描述该过程的资源和示例。无需使用其他框架或库。 具体来说,如何在不使用硬编码字符串变量的情况下提供HTML和CSS内容,而仅使用node.js动态提供HTML和CSS文件?
10 node.js 

2
node.js和c#的用例
我做了很多ASP.NET工作(C#,MVC),但其中大多数是典型的Web开发。我使用CRUD存储库进行Restful体系结构。我的大多数客户在他们的应用程序中没有很多高级要求。 我现在正在研究node.js及其对性能的影响(我沉迷于速度),但是我并没有那么深入地研究它。 我想知道 node.js可以现实地替换我在C#和ASP.NET MVC中的典型Web开发(不重写现有应用程序,而是在开发新应用程序时) 通过向现有体系结构添加一些异步优势,node.js可以补充ASP.NET MVC应用程序。 是否有针对C#和node.js的用例? 编辑 我喜欢ASP.NET MVC,并且对它的发展感到非常兴奋。只是想看看是否有特殊的用例会支持node.js

1
Node.js依赖性过大
最近,我开始玩node.js。 现在,每个节点教程都指出您应该从 npm init 然后,说您想要一些标准的服务器框架,说您选择express: npm install express 但是您会想要从ASP.NET这样的世界中获得更多习惯。 我谈论模板引擎(Jade)和样式表预处理器(SASS)。 然后他们告诉您“安装gulp / grunt!这样您就可以自动最小化和丑化并运行服务器以及许多其他东西!” 这意味着安装gulp,node-sass和gulp-sass和gulp-uglify,以及一些更酷的东西(tsd或babel,markdown等)... 但是所有这些都在您的磁盘和项目上很繁重。不要浪费时间,您可以轻松地找到该项目的100MB +磁盘大小(甚至还没有开始!),更不用说10000+个文件了,因为每个节点模块都具有自己的依赖性,无论相同依赖关系被另一个模块使用。移动到任何地方都是一件非常困难的事情,更不用说Web服务器了。 我想念什么吗?我认为,在存在如此明显的缺陷的同时,对节点环境给予如此多的赞扬是不可能的。我是否期望太多(毕竟我确实曾经尝试过一次使用许多工具),Node退伍军人知道有什么琐碎的事情可以绕过它吗?

1
Node.js还是servlet?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我听到了很多,并阅读了有关Javascript服务器端语言(即Node.js)的信息,并看到了许多支持Node的比较。 我不了解是什么使它变得更好或更快速,或者它甚至与Java Servlet一样成熟。 但是,Servlet是基于多线程编程语言而不是Node.js构建的。那node.js怎么能更快呢? 如果假设有1000K用户查询数据库记录,那么Node.js不应比Servlet慢。 另外,与Node.js相比,servlet是否没有更好的安全性?

1
测试单元与集成之间的差距:小型,组件,单元集成测试中的集成
在过去的几周中,我一直在研究和研究如何填补我们的测试方法中的空白。简而言之,单元测试太小,而传统的集成测试太大。 经常出现的情况是A,B两者都使用component C。但是A,B对的要求略有不同,并且对做出略有不同的假设C。如果我是A如何以及在哪里测试我的假设的开发人员C? 显然,A带有模拟假设的单元测试C可以很好地进行A隔离测试,但是它不能测试假设本身。 另一种可能性是为添加单元测试C。但是,这不是理想的,因为A在开发过程中,C根据不断变化的假设更改测试A将非常笨拙。确实,A开发人员甚至可能没有足够的权限访问C(例如,外部库)的单元测试。 用一个更具体的例子来说明这一点:假设这是一个节点应用程序。 A,并B依赖于C读取文件(以及其他内容)并将文件内容存储在传递给的对象中C。最初,所有C处理的文件都很小,可以同步读取而不会产生明显的阻塞。但是,的开发人员B意识到他的文件越来越大,需要切换C到异步读取。这会导致中出现零星的同步错误A,该错误仍假定C是正在同步读取文件。 众所周知,这种错误很难从完整的集成测试中找到,并且根本不会在集成测试中发现。它也不受As单元测试的影响,因为As的假设是模拟的。但是,可以通过“ just” A和“ C。”行使的“迷你”集成测试轻松抓住它。 我只找到了关于这种测试的一些参考。小型集成,组件集成测试,单元集成测试。它还与BDD测试的方向有关,而不是正式的TDD单元测试。 如何填补这个测试空白?具体来说-我应该在哪里进行此类测试?如何嘲笑的投入A,并C为“迷你型”集成测试?在分离这些测试和单元测试之间的测试关注点上应该付出多少努力?还是有更好的方法来填补测试空白?

1
如何分别解析多部分字段/文件数据?
我想两次解析一个多部分的表单:一次获取传入的字段,然后解析文件上传。 我正在尝试在Node应用程序中保持适当的关注点分离: 控制器负责处理传入字段。 模型负责上传文件的逻辑。 我需要将字段数据传递到模型中以创建新实例,因此在文件上传开始之前,字段数据需要可用。 当前,每个form.parse()或等效函数都将字段和文件解析在一起。示例:一起req.pipe(busboy)处理文件和字段。 我已经检查了节点多方,强大,busboy,multer之类的模块。似乎没有人对此有解决方案。 我想要实现的示例在这里:https : //stackoverflow.com/questions/22336177/node-js-busboy-parse-fields-and-files-seperatly 这有可能吗?
9 data  node.js  upload 

3
处理node.js回调金字塔
我刚刚开始使用节点,并且我很快注意到的一件事是回调能够以多快的速度建立到一个愚蠢的缩进级别: doStuff(arg1, arg2, function(err, result) { doMoreStuff(arg3, arg4, function(err, result) { doEvenMoreStuff(arg5, arg6, function(err, result) { omgHowDidIGetHere(); }); }); }); 该负责人风格指南说,把每个回调在一个单独的功能,但似乎对使用封闭的过于严格,并使单个对象在顶级声明可用几层下来,对象必须通过所有的传递中间回调。 可以使用函数范围来帮助吗?将所有需要访问全局对象的回调函数放在声明该对象的函数中,以便将其放入闭包中? function topLevelFunction(globalishObject, callback) { function doMoreStuffImpl(err, result) { doMoreStuff(arg5, arg6, function(err, result) { callback(null, globalishObject); }); } doStuff(arg1, arg2, doMoreStuffImpl); } 等等更多的层... 还是有框架等可以帮助减少缩进级别而无需为每个回调都声明命名函数?您如何处理回调金字塔?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.