用Node.js做项目的坑

Posted f2flow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Node.js做项目的坑相关的知识,希望对你有一定的参考价值。

真的有必要使用Node.js吗?

现在前后端分离非常流行,然后在这探索的过程中node.js作为前端开发的一个开发框架的选择之一,同时因为它是单页面应用,所以本着对node. js进行的试水发现,如果没有一定量的nodejs小项目试水,获取一些开发经验之前, 不要轻易把大项目迁移上去。否则你将会死得很惨。

原因之一:开发效率降低,html是非常成熟稳定的技术,在纯前端开发中依然离不开它,然而iframe与windows对象在node.js中将失灵。这样对于做业务窗口页面将变得因难许多,提取通用页面也变得很麻烦。对于项目型系统来说,业务的交互有时甚至会有三层的窗口,这时你想在node.js弹出三层窗口将变得很麻烦,做不到使用JS来通用调用这些窗口。

同时对于习惯使用Url来传递参数的开发人员来说,在这里也将失去作用。

原因之二:非常糟糕的IE兼容性问题,如果你的项目是国内的政企应用系统,那基本上在IE运行下将变慢很多,非常吃浏览器内存。

 原因之三:出错后代码排查难度加大,所心在大项目中使用将会把简单的问题复杂化。运维成本直线上升。

Node.js真的是做前端的吗?

百度一下:

首先你得了解什么nodejs,其次了解什么后端技术及作用
1.node.js组成:谷歌浏览器的V8引擎、C++语言抄编写的,本质上是一个javascript的运行环境。提到js,就能想到浏览器里面的各种交互组件百,异步请求等等,它们依靠浏览器JavaScript 的引擎,来解析页面的js代码。
2.目前流行的后端语言就是php、Java、.Net,使度用后端语言实现服知务器上的开发叫做后端技术。
3.nodejs就是让JavaScript(js)可以实现服务器上的开发。
4.JavaScript(前端语言)+nodejs(JavaScript的运行环境)=实现服务器上的开发(后端技术),也就道是说js+nodejs实现了后端开发的技术

显然node.js它自对的定义是一种服务端开发平台,所以说node.js是做前端的是不成立的。那么为什么前后端分离时好像就想到node.js 那是因为javaScript的原因,因为node.js的一套非常复杂的 javascript引擎。然后就变成了使用IDEA来开发node工程。所以即使你使用node.js来做前端,那么你的前端工程师将变成一个全站工程师,绝不是你理解的那种会写点样式CSS会切个图,会PS的就叫前端工程师,对于前后端分离来说,这是两码事,只要CSS或切图,只能叫美工,但不是开发前端工程师。这是一个错误的理解。

其实node.js更重要的理念是代替java,php,.net 这些服务端开发平台. node.js的问世不是今天因为前后端分离才有的,它的初心可是一个开发平台更是一个后端开发平台,并不是仅做前端,拿它做前端只是用了它的冰山一角同时也是将前端加重了。

 

 如果对NodeJS的不了解最后造成致命的错误,而导致项目延期

 什么是前后端完全分离

前后端完全分离其实也是从MVC中再拆出Model层出来,将Model业务层独立出去做为服务端独立的系统对View层提供数据。这样前端的View层就只包括Html页面+Controller(仅作路由)。后端提供Rest的接口服务。

1、前端:Controller+View

2、后端:Model数据服务

 

前端后完全分离是一种设计思路,使用什么来做前端并不是固定的。原来的MVC也可以用来做前端开发,Springboot的thymeleaf+Html也可以用来做前端开发。在Controller层中不再有任何业务逻辑代码,它仅仅只是一个 html地址的路由。从而html页面使用vue.js+ elementUI/Iview等来实现前端开发展现,通过Html+AJax来调用后端站点数据。

 

总结:

1、慎用Node.js来做业务型的大型项目,特别在工期时限比较紧张的情况下。

2、node.js适合做小的应用比如App端小而轻的单页面应用。

3、实际项目中多页面之间的交互是经常碰到的,对于单页面应用来说等于将所有窗口的代码都完全放在一个页面中,这将导致窗口之间没有完全的独立页面作用域,窗口页面之间的CSS及JS会相互污染,在实际开发中造成极大的麻烦,原本一个很简单的问题会变得特别复杂。

 

以上是关于用Node.js做项目的坑的主要内容,如果未能解决你的问题,请参考以下文章

前端用nodejs能做啥

记录一次使用iisnode部署node项目遇到的坑!

前端有必要去学 Node.js 吗?

vue+node.js+mysql项目搭建

node.js能做啥

平安产险项目记录