Node.js 到底能不能被认真当做一门后端语言对待?
发布于 8 年前 作者 DuanPengfei 24372 次浏览 来自 问答

接触 Node.js 算是比较早的,看着 Node.js 这一路的发展,越来越迷茫。现在谈论起 Node.js 就基本离不开前端的话题,我就是一枚纯粹的后端,也就希望 Node.js 被认真的当做一门后端语言来对待,做中间层也没大意见,毕竟也算是发挥了优势,但是现在遇到人总被误会成前端,就问你为什么不会写前端代码。是,现在前端同学都会写 Node.js,但是不代表用 Node.js 做后端的同学也必须要会写前端代码啊,心累。

45 回复

node是全栈通吃好吧😂

@imhered 恩恩,我不反对这个,不同人群可以使用 Node.js 做不同的工作,仅仅是希望给后端开发留点空间,算是我心里的吐槽吧。后端开发本就不太出来说话,现在更是提到 Node.js 会有很多人就直接跟前端挂钩,有些烦躁了😂

答: 完全可以。 你用nodejs 可以完全不接触 前段的 html css 还有各种 vue react。 安安静静的写后台服务,有什么不可以的呢。

@ilovedesert001 😁 我自己确实是一直用作后端开发的,可能最近被大环境刺激到了,心态有点爆炸,看到有同样想法的我就放心了。

放宽心态啊 , 都一样。 我做前端经理经常, 来来你把这个图片处理一下。

@DuanPengfei 也要看公司规模,一般中小公司很难给你分那么细,也许老大选node就是看中了全栈,当然一般比较大的平台会分出专门的人来更深入的研究node后端,本身这个领域也有很多共通的东西

不是能不能 他就是后端语言啊

内容来自->vue2-cnode

前端提node大部分都是koa或者express搭个博客或者前端工具,其实离node后端还差的远呢,不过我感觉确实大部分后端不待见node,前端喜欢node是因为node用的就是js啊,后端本来就厌恶js,而且后端有更多选择,java,python,go等等,包括tj都去玩go了。。所以node好像发展变得缓慢了很多。。

@hyj1991 还好我所在公司比较靠谱,不会强求什么 Node.js 开发者会前端(实际谁还能不会一点呢,无非就是效率问题),不过现在大环境就是这样,有些人都分不清前端后端,Node.js 成功做到了混淆。被刺激到是因为看到有新人求 Node.js 项目来学习,竟然有人给推荐 vue-cnode 项目,不否认那些构建工具建立在 Node.js 之上,但是 vue-cnode 项目本身跟 Node.js 关系到底有多大,就是感觉有些悲哀。

@artisan 话是这么说,不过还是很喜欢 Node.js 的,可能用的久了有感情了 😂

@DuanPengfei 你说的没错,vue-cnode 还是偏前端的,但是我个人觉得,构建在node上面的项目实际上也属于node的一部分,其实继续深入研究下就到了服务器端领域通用的一些知识,就算是深入研究下node也是到了c/c++如何构建高性能的底层api,这个过程其实收获也非常大,而且这些东西不随语言的变迁而没有用,说到底语言只是工具嘛,不用纠结太多~

语言只是个工具, 重要的是方法和思想, 前端也好, 后端也罢, 自己喜欢就好, 不必在意别人怎么看.

我们公司的所有业务,后端都是构建在loopback的基础上,完美

感觉python go 不错 语法简洁 大道至简

内容来自->vue2-cnode

nodejs就是专为后端用的,捎带脚用在前端了。

哎,有点焦虑啊,很久没看node了,看来要好好看一遍了。

@qxl1231 大哥,有没有loopback的资料,可以私发下,最近可能有公司项目用到

@Qiubaowei 我们也是用LoopBack,官方文档就是最好的资料!

同样只会写nodejs,对前端只知道皮毛的路过。。。

我倒是认为技多不压身,多学没啥不好的

看到这里,我抛出我长期的疑问,用纯node做后端有什么不妥吗?或者说相对其他语言有什么缺陷? 反正我两年了也没发现。

我觉得吧。。。就是当后端没有什么明显优势,反倒是 js 语言本身有些明显劣势

公司用的node做后端,就这样

@vanishcode 不反对技多不压身,我仅仅是对大家提到 Node.js 时的态度吐槽一下罢了。各人有各人的发展路径,就我自己来说,不碰前端,专心后端就是我的选择,后端的事情也不简单是用某门语言开发几个 API,有那么多需要关注的知识,无力更无心涉足前端领域。

@qujinxiong 我这几年都使用 Node.js 做纯后端,现在渐渐转做中间层,不过还属于后端领域吧,要说有什么缺陷也是 JS 吧,JS 确实有很多不太理想的地方,但是看着 JS 这两年的发展还是向着好的方向,静观其变吧。

@rwing 确实优势不明显了 😂

感觉很多人都理解错了,编程本来就没什么前端后端,nodejs本来就是能胜任开发运行服务端的东西,反倒是在前端领域上,大多作为了开发辅助工具的担当,然而这是只nodejs可以有所作为的极小一部分领域;建议去看看大公司和开源社区在用nodejs做什么吧,把前端和nodejs的关系扯的太强,简直浪费了nodejs

@zhhb 不是不清楚 Node.js 的定位,仅仅是对大家看待 Node.js 的态度有点不开心,尤其是在看到招聘 Node.js 岗位时要求会点什么 Vue.js/React.js,明明岗位里写的是服务端开发而不是前端工具开发,却非要人会写前端 JS。

大环境如此就问你怕不怕

我只想说,社区是一把双刃剑

我就是想知道node 能不能给原生ios 写后台。不仅仅是web 端 别只说个可以。。。因为我知道可以的。

@xadillax 说实话,我是有点怕了,正在努力改变中,借着现在工作的转变,多方位发展,是个好的时机 😂

@USERARSSASion 后台这个词容易有歧义,你指的是什么,后端 API?那原生 iOS 和 web 端没什么区别,一套 API 可以供各种服务调用,iOS、Android、web 有什么区别呢?顺便说一句(有点强迫症)中英文空格要么不加要么加,前面不加后面加感觉怪怪的(据说中英文混编不加空格容易感情路坎坷 😂),iOS 这样的单词也是按照官方的拼写比较好。

@DuanPengfei 行行行,照顾你的感受,因为 express\koa 框架都是 web 框架,所以不知道适不适用 app 开发,网上有个 loopback 框架说是可以,但是广大使用者说 bug 有点多,而且官方维护也不及时。。。这让我好迷茫。之前是做 iOS,希望能用 node + OC\Swift 做出一个 app。因为没有听说过哪个 app 后台是用 node 编写的。

@USERARSSASion 多谢照顾我的强迫症 😁,Node.js 开发后端 API 与 Java、PHP 等没什么区别,Express/Koa 与 Loopback 作为 API 开发也没有特别大的区别,总结一句话,就是可以满足你的要求,具体多搜索一下相关资料吧。

@USERARSSASion loopback 吃相太难看,适合外包团队,不适合一个长期迭代的产品

@DuanPengfei 一直找不到这方面的资料,所以希望有人能给一个肯定答案。那这样我就有目标了。

@xadillax 毕竟对 node 发展很看好,目前只是想自己做一做,不会推荐商业化使用。

楼主有好多概念失误。

Node.js只是一个“运行环境”,本身提供很多功能,在这些功能基础上可以做多种应用开发。 Node.js所直接使用的开发语言是JavaScript(ECMAScript)和C/C++,他们都不是依赖Node.js而存在的,这些语言首先是图灵完备的,其次本身具备众多特性,可以被用来做多种应用开发。 前端和后端是软件工程中的一对概念,是用来对应用程序进行分层的,软件或硬件的表示部分被称作前端,数据访问的部分被称为后端。而软件工工程上对软件系统的分层方法并不只有这一种。

从哲学上来讲,“Node.js”和“JavaScript语言”和“后端”之间不存在联系。 如下说法在逻辑学上都是错误的:

  1. “JavaScript可以用来写前端程序,所以用JavaScript的都是前端工程师”
  2. “Node.js可以用来运行后端程序,所以用Node.js的都是后端工程师”
  3. “Node.js工程师普遍会写JavaScript,而JavaScript可以用来写前端程序,所以用Node.js的都是前端工程师”
  4. “前端工程师普遍会写JavaScript,JavaScript可以用于做Node.js应用开发,而Node.js可以用来运行后端程序,所以前端工程师都是后端工程师”
  5. ……

软件开发通常对逻辑性要求非常高,如果一个软件开发工程师连上述逻辑都搞不懂的话,那么是一件多么可悲的事情啊。

从“前端与后端”分层思想的角度来说,前端开发需要大量前端独有的程序设计思想,后端开发也需要大量后端独有的程序设计思想,你是“前端工程师”或“后端工程师”就看你掌握哪些思想,如果你两者都掌握,那么你就既是“前端工程师”又是“后端工程师”,或者说是“全栈工程师”。 从团队分工合作的角度来说,你在团队里做前端开发工作,那么你就是这个团队的“前端工程师”,如果你在这个团队做后端开发工作,那么你就是这个团队的“后端工程师”。

如果别人期望得到的回答是“开发哪种应用程序的哪一端的工程师”,那么楼主说自己是“Node.js工程师”肯定就是没有表达清楚,也怨不得别人瞎猜。 所以鄙人给楼主的建议是,如果你是开发Node.js应用程序的后端工程师的话,就和别人说你是“Node.js后端工程师”就好了。

@libook 受教但不完全认同,你所说的这些我曾经也很喜欢说,Node.js 是个运行环境而不是语言,但是现在的大环境放在那,根本不用纠结这些,说句更钻牛角尖的话,你怎么解释 fs 与 buffer,所以说 Node.js 是个运行环境也不准确,所以不再纠结。而所谓的从“哲学”角度分析,我可以承认我看不懂,“哲学”对我来说太深奥,造成你误会的可能是因为我原话中没有表述清楚或者歧义,从其他楼层不难看出我是因为看到很多招聘岗位上“Node.js 后端开发工程师”的要求里赫然写着需要会 Vue.js/React.js 才想要吐槽一下。还有在软件分层上的前端与后端,请不要套用在“前端工程师”与“后端工程师”上面,完全是不同的概念,除非你能把现有市场对这些岗位的需求定义改掉。

@DuanPengfei Node.js 当然是严肃的后端开发环境。不过因为都是 JavaScript,又有 Facebook 那伙人在鼓吹全栈,所有这个风气。其实以前拿 PHP/Java/.Net 做 WEB 的多少也要会一点 HTML/JavaScript 的,不必太介怀。前后端需要的领域知识差异挺大的,工作时间还不长的话,专精一样其实更有意义。

@DuanPengfei 我和你是同一立场的,只是我的处理方式不同而已。 其实并不存在所谓的“大环境”,只是内心的障碍而已,常言道“道不同,不相为谋”,何必为了与自己观念不同的人而心累。 我的团队里的“前端工程师”就只做前端工作,“后端工程师”就只做后端工作,没有人去找后端工程师写VUE。招聘本身就是互相选择的过程,我在招聘写JD的时候,前端工作和后端工作会分得很清楚,如果要求同时会前后端开发,我会直接写明是全栈工作,JD本身是一种很重要的声明,招聘者能够凭借JD在投简历前就能判断自己是否符合职位要求,从而避免在面试中浪费时间。只能说有些公司在招聘的时候不够专业和用心,最终结果是浪费了面试者和自己的时间与精力,甚至招到的员工其实根本在做与JD上不同的工作。 我给几个概念下定义的时候是查阅过官方网站和WIKI的,官方的定义往往代表着他们对自己产品的定位和愿景,如果官网自己的定义都是错的,那官方做得也太失败了吧。 确实所谓“前端与后端”在不同情况下的含义是不同的,在软件架构上面我们可以将客户端看作前端,也可以把客户端的UI看作客户端的前端;单纯说“前端与后端”是不明确的,我的思路是是否能够添加定语使得这个语义变得足够明确呢?如果他人对“前端与后端”的理解有误,是否能够发个科普邮件或者开一个读书分享会分享一下呢?沉默是不能解决误会的。“能”和“不能”之前往往是“做”和“不做”,您说是吧?

确实抠太深太细没有实际意义,讲太多大道理无法接受的话也没有实际意义,建议您心宽一些,以上都是我个人的观点,仅供参考。

@libook 恩恩,其实我现在自己所处的环境还不错,或者说团队还不错,在你说的几个概念和工作定位上都是合理的。发这个帖子无非就是看到很多公司甚至是很多大公司的招聘条件都写得有些不太合理,有些新人入门时是看着岗位要求来储备知识的,也被问过这些,因为我自己观点是 web 前后端开发所积累的知识差异很大,开发思路也不同,专精一个方向更好些,感觉有些不开心,吐槽一下罢了 😂

@pinxue 恩恩,精力能力都有限的时候,我还是选择一个方向努力学习 😄

回到顶部