mat*_*sko 48 javascript node.js
NodeJS是大型服务器端应用程序的良好框架/代码库吗?我想要开发的是一个需要HTTP事务(状态)和大量并发用户的大型应用程序.
从我在网上看到的,NodeJS并不是大型程序使用的最佳工具.我遇到的情况如下:
有什么我想念的吗?NodeJS真的像它一样强大吗?
bry*_*mac 50
NodeJS是大型服务器端应用程序的良好框架/代码库吗?
这个问题有点主观,但我在实际的客观要点中解决了在大型项目中使用节点时遇到的实际问题.
在项目工作一段时间后更新:
最好是作为I/O绑定的前端/ API服务器(大多数前端/ api服务器).如果你有后端计算需求(处理等等),它可以配对哪些其他技术(C#net core,go,Java等...工作节点)
我创建这个项目作为一个示例说明了大多数要点 - Sane Node Development:https: //github.com/bryanmacfarlane/sanenode
NodeJS不是在自己的http服务器上构建的.它是在V8 chrome javascript引擎上构建的,不承担http服务器.有一个内置的http模块以及流行的快速Web服务器,但也有套接字模块(以及socket.io).它不仅仅是一个http服务器.
单个线程不会导致瓶颈,因为所有I/O都是偶数和异步的.这个链接解释得很好:http: //blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
就软件模块而言,您可以在npm注册表中进行搜索.总是看看有多少其他人使用它(下载)并访问github repo以查看它是否正在积极维护(或者是否有一堆问题从未引起注意).
关于"大项目",我发现对于理智发展至关重要的是:
编译时间支持(和intellisense):编译时查找问题.如果你不认为你需要这个就像我开始时所做的那样,那么你将在第一个大型重构之后改变主意.
消除回调地狱:保持关键的性能(如上所述)但消除回调代码.使用async/await编写线性代码并保持异步性.与承诺相结合,但比单独使用承诺要好得多.
工具:很多选项,但我发现最好的是Typescript(今天的ES6/7),VS Code(intellisense),Mocha(单元测试).
检测/记录:通过跟踪和检测来深入了解您的应用程序至关重要.
建立在经过良好审查的框架上:我使用express作为示例,但这是一个偏好,还有其他的.
And*_*rov 17
Node.js是构建分布式网络服务的非常好的工具.您的大规模应用程序设计不仅仅是"使用哪种工具"的问题.很多人以非常异构的方式使用node.js以及ruby,php,erlang,apache&nginx和HAproxy.如果您不知道为什么需要节点,则可能不需要它.考虑节点的可能原因:
HIL*_*EEN 10
真的NodeJs以自己的方式强大,更多信息,