最近我了解了node.js以及像express和jade这样的酷包。我几乎没有问题一直敲门:
如果我选择node.js来构建我的下一个网站,我将使用JavaScript编写我的服务器端复杂逻辑?但我不认为你可以将JavaScript与Java或Python进行比较来编写服务器端代码,因为它们拥有如此广阔的图书馆。 node.js真的意味着它吗?或者我错过了什么?
我可以从node.js调用Java或Python吗?
答案 0 :(得分:27)
不太确定大多数人都在谈论什么。
“广阔的图书馆海洋”是社区积极努力的方向。检查一下:http://search.npmjs.org/#/_analytics - 昨天发布了8个包
它不会为您解决您的软件设计。至于在哪里以及如何编写业务逻辑,我们中的许多人都接受mvc或mvvm或者接近它的东西。如果您正在构建一个应用程序并且像Rubyists(例如)那样构建他们的代码,那么您可能会考虑做一些类似的事情 - 没有人会告诉您如何构建代码。
检查https://github.com/joyent/node/wiki/modules
一些比较流行的图书馆日常工作:
那里还有很多ORM,如果那是你的包。 http://mongoosejs.com/,http://sequelizejs.com/和朋友
之类的内容测试驱动开发是节点的核心。有15种不同的TDD软件包可供选择,从完整的代码覆盖率分析到自定义断言模块。
说所有模块都不完整是愚蠢的。每天都有一群非常专注的人在这个社区建立和维护吨开源工作。
可能有理由通过节点,但它不适用于非活动社区或缺少库。
答案 1 :(得分:3)
Ryan没有开始使用JavaScript。 Node在JavaScript中创建的很大一部分原因是JavaScript缺少大量的库。
那些巨大的图书馆海洋几乎都是用封锁代码编写的。
要充分利用Node.js,您需要将自己限制为非阻塞库。这意味着可能需要编写一些库来完成Node.js中的项目。
答案 2 :(得分:3)
我会说你错过了一些东西 - 更具体地说,是Node.js的核心目的,即异步I / O模型。
我开始了一个小宠物项目来测试Node.js - 它的“感觉”以及如何编程。在这样的生态系统中工作的难易程度给我留下了深刻的印象:Node.js代码很容易编写(虽然它的异步范例对于传统的程序员来说并不那么简单),库很容易构建等等。甚至npm也非常简单:我刚刚找到了提供自己的代码作为库的最直接的方法是制作一个公共包 - 它非常简单!
然而,使用Node.js的工具并不多。也许是因为太很容易做任何事情,大多数库是部分实现的,未记录的解决方案。
另外,请注意Node.js的相关区别不是JavaScript语言,而是异步I / O模型。这是Node.js最有趣的方面,但异步编程风格并没有像传统的Web开发方式那样经过良好测试。也许它真的是被宣传的奇迹 - 或许它不如承诺的那么好。
即使在它获得回报的情况下,您是否有足够的开发人员来维护这样一个(至少仍然是)不寻常的代码库?如果您可以从Node.js的异步“生活方式”中获得很多优势,那么您可以使用更多的整合语言和框架,例如Python的Twisted(这是我的首选语言,所以请注意我的看法 :) )。 Java也可能有这样的东西。无论如何,我怀疑你现在对这个模型没什么兴趣,因为你的问题更多地关注语言而不是编程范例,所以无论如何Node.js都没有太多东西给你提供。
所以......不,我现在不会在Node.js中开发一些专业的东西,尽管我认为它既有趣又有教育意义。但是你可以这样做 - 如果不考虑Node.js的主要目的,就不要这样做:异步IO,事件驱动编程。如果它是你想要的,Node.js是一个很好的选择。
答案 3 :(得分:2)
当然,您可以使用Python,PHP,c ++或其他技术与nodejs的cuz节点将其作为child process运行。 Nodejs让您可以自由地使用您想要的任何技术。您可以结合最高性能的程序使用您想要的任何内容。
答案 4 :(得分:2)
我认为你会对通过Node.js在JavaScript中完成的工作量感到惊讶。有一个bunch of libraries可用于节点,还有更多正在编写all the time。此外,native extensions也适用于您可能需要降低到较低级别的时间。
如果您认为Node无法提供业务逻辑,请查看NPM或向Google快速查询是否有其他人已解决您的问题。
答案 5 :(得分:0)
有些事情是JavaScript无法做到的。如果您遇到这些节点可能不是您的应用程序的最佳选择。但是,您可以完成大部分需要。
就API而言,我建议您查看其存储库中的npm和all the libraries。特别是underscore.js之类的。许多人的目的是填补本地JavaScript与其他语言相比缺乏的空白。