Nodejs:在哪里或如何编写复杂的业务逻辑?
最近我介绍了node.js和cool包,比如express和jade。 我有几个问题一直敲我的门:
如果我selectnode.js来构build我的下一个网站,我将使用JavaScript来编写我的服务器端复杂逻辑? 但我不认为你可以比较JavaScript与Java或Python来编写服务器端代码,因为它们拥有如此浩瀚的图书馆。 node.js真的是为了它吗? 或者我错过了什么?
我可以从node.js调用Java或Python吗?
不太清楚这些人大部分都在谈论什么。
一个“浩瀚的海洋图书馆”是社区正在积极努力的。 检查这个: http : //search.npmjs.org/#/_analytics – 昨天发布了8个软件包
它不会为你解决你的软件devise。 至于在哪里以及如何编写业务逻辑,我们中的许多人都接受mvc或mvvm或者其他类似的东西。 如果你正在构build一个应用程序,比如Rubyists(例如),构build他们的代码,你可以看看做这样的事情 – 没有人会告诉你如何构build你的代码。
检查https://github.com/joyent/node/wiki/modules
一些比较stream行的图书馆日常工作:
- 快递: http : //expressjs.com/ – https://github.com/visionmedia/express
- Sinatra的启发,用它来build立一个典型的networking应用程序
- 统计:3407观察者,286分叉,请求778
- 比较一下Sinatra本身! 2529观众,366叉
- 与连接,它支持各种中间件:
- 会议上,
- 各种路由,
- 静态文件
- 大约15种不同的模板引擎
- validation,表单处理等等
- Socket.io:http://socket.io/ – 使其“实时”
- DNode: https : //github.com/substack/dnode – 在任何东西之间做rpc
- Backbone.js: http : //documentcloud.github.com/backbone/ – MVC
- Spine.js: http ://maccman.github.com/spine.tutorials/index.html – MCV
- 在服务器上重新使用代码的技巧:
- http://maccman.github.com/spine.tutorials/node.html
- caolan / async: https : //github.com/caolan/async – 帮助pipe理asynchronous业务逻辑
- 数据库,select你的poision
- node_redis, https://github.com/mranney/node_redis – 或其他八个客户之一
- “这是一个完整的Redis客户端node.js.它支持所有的Redis命令”
- node-mysql, https://github.com/felixge/node-mysql – 或其他十一个客户/机构之一
- node-mongodb-native, https://github.com/christkv/node-mongodb-native
- node-postgres, https://github.com/brianc/node-postgres
- node_redis, https://github.com/mranney/node_redis – 或其他八个客户之一
那里还有一大堆ORM,如果那是你的包。 比如http://mongoosejs.com/,http://sequelizejs.com/和朋友
testing驱动开发是节点的核心。 从完整的代码覆盖率分析到自定义断言模块,有15种不同的TDD软件包可供select。
说所有模块不完整是愚蠢的。 这个社区每天都有一群非常热心的工作人员在这个社区build立和维护着大量的开源工具。
可能有理由通过节点,但它不是一个不活跃的社区或缺乏图书馆。
瑞恩并没有从JavaScript开始。 为什么在JavaScript中创buildNode的很大一部分是JavaScript缺乏大量的库。
那些浩瀚的海洋图书馆几乎都是用封锁的代码写成的。
为了充分利用Node.js,你需要限制自己到非阻塞库。 这意味着可能需要编写一些库来完成Node.js中的项目。
我会说你错过了一些东西 – 更具体地说,Node.js的核心目的,即asynchronousI / O模型。
我开始了一个小小的项目来testingNode.js – 它如何“感觉”以及如何编程。 Node.js的代码很容易编写(虽然它的asynchronous范例对于传统的程序员来说并不那么简单),但是库很容易构build等等。即使npm也非常容易:我刚刚find了提供自己的代码的最直接的方法,就是把它作为一个公共的包装 – 这是很荒唐的!
但是,Node.js没有太多好的工具可以使用。 也许因为做任何事都太容易了,大多数图书馆都是部分实施的,没有文件的解决scheme。
另外请注意,Node.js的相关区别不是JavaScript语言,而是asynchronousI / O模型。 这是Node.js最有趣的一个方面,但是asynchronous编程风格并没有像传统的Web开发方式那样得到很好的testing。 也许这真的是宣传的奇迹 – 也许它不如承诺的那么好。
即使在这样的情况下,您是否有足够的开发人员来维护这样的(至less仍然)不寻常的代码库? 如果你能从Node.js的asynchronous“生活方式”中获得很多好处,你可以使用更多的合并语言和框架,比如Twisted for Python(这是我的首选languabe,所以请注意我的意见:) )。 Java也可能有这样的情况。 无论如何,我怀疑你现在对这个模型没什么兴趣,因为你的问题更多地关注语言而不是编程范例,所以Node.js没有太多的东西给你。
所以…不,我现在不会在Node.js中开发一些专业的东西,尽pipe我觉得这样做既有趣又有启发性。 你可以做到这一点,但是不要忘记Node.js的主要目的:asynchronousIO,事件驱动的编程。 如果这是你想要的,Node.js是一个很好的select。
当然,你可以使用python,php,c ++或者其他技术来使用nodejs,因为cuz节点可以把它作为一个subprocess运行。 Nodejs给你一个使用你自己想要的技术的自由。 你可以使用任何你想结合最性能的程序。
我想你会为通过Node.js在JavaScript中完成的工作量感到惊讶。 有许多可用于Node 的库 ,而且更多的是一直在编写的 。 此外, 本机扩展也适用于您可能需要下拉到较低级别的时间。
如果您认为Node在您的业务逻辑中将无法提供差距,请查看NPM或者让Google快速查看其他人是否已经解决了您的问题。
有些东西,JavaScript是不能做的。 如果你碰到这些节点可能不是你的应用程序的最佳select。 不过,你大概可以完成你所需要的大部分工作。
至于API是有限的,我build议你看看npm和库中的所有库。 特别是像underscore.js 。 许多人的目标是弥补与其他语言相比,原生JavaScript缺乏的空白。