node.js不是后端吗?为何说它是前端必备?

2020-04-02 11:33发布

9条回答
仙君
1楼 · 2020-05-13 11:23.采纳回答

这个问题涉及到的是整个web开发体系的变更。我尽量长话短说,有问题可以继续留言。

现在的web开发体系可以说是在15年后才逐渐形成,因为15年比较特殊,html5和ES6都是在这一年发布,css3的最后一次更新在2014年。这些变更带来的变化是产生了前后分离的开发方式。

以前的前端开发服务端渲染比较多,比如jsp,php,asp等。虽然也离不开html的成分,但是html最终要变成动态页,html里面要嵌入模板语法;变成jsp或php等代码;这样一来这个工作就复杂了,静态页谁写?php代码谁写?

在更早期的web开发中,这两个工作是一个人就可以做到的,我们可以认为这是最早期的全栈开发者;但随着时代的发展,社会需求越来越复杂,项目也越做越大、越做越复杂;所以这个人没有那么多精力既做静态页html,又去做java或php等后台代码的开发;换个角度去看这个问题,如果还是一个人开发,那开发速度就慢多了,而且中途别人不好插手他的工作。

所以这个html静态页开发的工作就交给专门的人去做了,这就是最早期的web前端开发者,从事的是纯前端工作。但是我们说过这个这个静态的html是要嵌入模板语法转换为jsp或php的,所以当这个前端开发者完成他的工作之后,需要把他开发的html静态页交给后台的开发人员,嵌入模板语法。此时你可能想问为什么这个前端开发者不能嵌入后台的模板语法,原因很简单,他可能不会,也不清楚后台代码写的逻辑,所以这个工作他必须要交给后台的那个开发者去做。

这样一来,原来的工作分成了两个人做,开发速度上去了。但是如果前端代码需要修改调试,情况就复杂了;因为这个前端开发者他搞不定了,这时候的页面不再是那个静态html了,是嵌入了后台模板语法的动态页jps,php等。这个前端开发者他没有调试的环境,需要到后台开发者那里去改,所以这很麻烦。最近1-2年我也见过有人还在做这样的事情。

这种情况在15年后得到了彻底的解决,因为vue和react等框架的前端模板语法相比jquery的dom操作简直是天上地下的区别;之前因为前端模块化鱼龙混杂和发展的不成熟,并没有真正将前后端分离开,这时候把前端和后台彻底分清楚了;前端负责请求和渲染数据,后台则提供api请求接口,各自关注各自的工作。开发效率再一次提升,前端也不存在去后台那里调试代码的问题了。

但是技术在发展,时代也在发展,一个项目现在需要PC端,pad端,手机端的三重展示;实际来说后台提供的数据是不变的,但是前端的展示形式不同决定了接口不同,后台需要为你提供3套接口,还要了解你的展示逻辑才能去组织数据,这无疑加重了他的工作;工作总是需要有人来做的,这个工作事实上给前端开发者更合适,因为他是完全理解这个页面逻辑的,可是这个前端开发者该怎么做呢?他自己可不会写接口。那么我们的主角登场了,事实上他可以通过Nodejs做一层转接,用nodejs去请求后台的接口,然后针对不同的展示端使用nodejs再自行封装几套接口出来;这样问题就解决了。可能你想说为什么必须是nodejs,其他不行吗?事实上都可以。nodejs有它的不可替代优势,作为前端开发者nodejs是友好的,都是ECMAScript语法,上手相当容易。Nodejs的单线程,异步io,非阻塞特点,可以产生更大的并发量,配合后台的nginx服务器,可以极大的提升网站访问的并发量,我们做网站不就希望更多人访问吗?

但这一步我目前还没有看到很多公司运用,这在具备规模的一些公司早就实施起来了,所以我相信这必然会是这1-2年的主流模式。

学习使人进步,加油~

爱前端
2楼 · 2020-04-02 18:36
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。nodejs是运行在服务器的javascript。
没思路
3楼 · 2020-04-02 22:23

因为, Node的语法是js,  我们可以用它搭建服务器做测试, 斌应用各种中间件

流浪小先生
4楼 · 2020-05-13 09:31

Node.js是服务器端运行环境,单纯的web前端职位是不需要掌握的,但是web全栈的职位和前端全栈的职位,是必须了解Node服务器端开发的,甚至有些高薪职位要求是精通。

mrliang
5楼 · 2020-07-16 08:55

全栈的工作是需要会使用node的。

灰机带翅膀
6楼 · 2020-12-30 16:54

虽然说nodejs是运行在服务器的javascript,但是它还是后端服务。为何要学习这门后端语言。原因如下。

1: 现在前端开发流行框架无非就是angular、vue、react,在使用这几个流行框架的时候,首先电脑上要先安装nodejs,nodejs的包管理器npm(Node Package Manager;全球最大的开源库生态系统),为前端项目搭建起到了至关重要的作用。

2: nodejs虽说是后端服务框架,但是它的源码是用javascript语言开发的,使用nodejs作为项目的后端,可以和js有很好的交互。

3: nodejs不光后端人员要学,相对来说前端也要学习一下,毕竟nodejs是基于javascript语言开发的,容易上手,还能学会一门后端语言,也算是全栈大神了何乐而不为呢;并且不能只做一个前端工程师就是你的最终梦想了,你还是需要进步的,还是需要学习后端语言的,在现如今的nodejs也算是火热,以nodejs作为你学习后端的开始,相信你会成为真正的全栈工程师。


虽然说nodejs是运行在服务器的javascript,但是它还是后端服务。为何要学习这门后端语言。原因如下。

1: 现在前端开发流行框架无非就是angular、vue、react,在使用这几个流行框架的时候,首先电脑上要先安装nodejs,nodejs的包管理器npm(Node Package Manager;全球最大的开源库生态系统),为前端项目搭建起到了至关重要的作用。

2: nodejs虽说是后端服务框架,但是它的源码是用javascript语言开发的,使用nodejs作为项目的后端,可以和js有很好的交互。

3: nodejs不光后端人员要学,相对来说前端也要学习一下,毕竟nodejs是基于javascript语言开发的,容易上手,还能学会一门后端语言,也算是全栈大神了何乐而不为呢;并且不能只做一个前端工程师就是你的最终梦想了,你还是需要进步的,还是需要学习后端语言的,在现如今的nodejs也算是火热,以nodejs作为你学习后端的开始,相信你会成为真正的全栈工程师。


猫的想法不敢猜
8楼 · 2021-01-25 20:35

Node.js是一个Javascript运行环境,可以用来写服务器,前端工程师如果想要写后台的话,就从java,php这一类的后台语言来讲,node.js更容易入手,因为是用js写的,js是前端必须掌握的东西

IT学习助手 - qq:2676427015
9楼 · 2022-05-14 09:37

  Node.js是Ryan Dahl于2009年5月基于Chrome V8引擎构建的一个开源和跨平台的JavaScript运行环境。主要在Windows、Linux、Unix、MacOSX等不同平台上运行。

拓展:Chrome V8引擎是谷歌开源的一个高性能JS引擎,并用在谷歌浏览器中,可以编译、执行JS代码。

一、Node.js的特点

1、单线程

Node保持了JS在浏览器中单线程的特点。单线程最大好处是不用像多线程编程那样处处在意状态的同步问题,没有死锁的存在,也没有线程上下文切换的开销。

单线程也有其弱点,主要表现在三方面:无法利用多核CPU;错误会引起整个应用退出,应用的健壮性值得考研;大量计算会占用CPU导致无法继续调用异步I/O。

为解决上述问题,Node.js使用child_process来解决单线程中大计算量的问题。通过将计算分发到各个子进程,可以将大量计算分解掉,然后再通过进程之间的事件消息来传递结果。

2、 异步I/O

在Node.js中,绝大多数的操作都以异步的方式进行调用,从文件读取到网络请求,均是如此。异步I/O意味着每个调用之间无须等待之前的I/O调用结束,在编程模型上可以提升效率。如果存在两个文件读取任务,最终的耗时只取决于最慢的那个文件读取耗时,对于同步I/O而言,他的耗时是两个任务之和。

3、 事件驱动机制

Node.js采用事件驱动和异步回调的机制。在执行代码的时候,主线程从上往下依次执行,遇到有需要回调的地方,就将此处加入到事件队列中,然后主线程继续往下走,直到运行结束以后才去执行事件队列中的回调。

Node.js去执行事件队列中的事件时,如果遇到回调,依然是按照顺序添加进入事件队列,主线程依次往下执行,遇到回调就添加,直至执行完毕。

Node.js是一个单线程多进程的。Node.js进程创建一个循环,每个循环就是一个周期,在循环中会从事件队列里查看是否有事件需要处理,如果有就去除事件并执行相关的函数。对于阻塞事件的处理在幕后使用线程池来确保工作的运行,而不占用主循环流程。

4、 跨平台

Node.js是跨平台的,即同样的一套JS代码都可以部署运行在Windows、Linux、OSX等平台。这主要得益于Node在操作系统与Node上层模块系统之间构建了一层平台层架构libuv。

二、Node.js 适用场景

1、 I/O密集型场景

Node.js异步I/O的特点使得他可以轻松面对I/O密集型的业务场景,处理效率将比同步I/O高,虽然同步I/O可以采用多线程或者多进程的方式进行,但是相比Node.js自带异步I/O的特性来说,将增加对内存和CPU的开销。

2 、高并发场景

针对高并发请求场景,Node.js的异步I/O以及事件回调特点可以高效的处理并发请求。

3、 ResutFul API

这是Node.js最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。

4 、基础工具

可以做为基础工具,前端领域中的编译器、构建工具、搭建脚手架等。比较出名的例如 Webpack、Gulp 。

5、 大量Ajax请求的应用

例如个性化应用,每个用户看到的页面都不一样,缓存失效时,需要在页面加载的时候发起Ajax请求,Node.js能响应大量的并发请求。总而言之,Node.js适合运用在高并发、I/O密集、少量业务逻辑的场景。




相关问题推荐

  • 回答 15

    对于新入门的小伙伴来说,选择一个合适的nodejs框架可能是一件很头疼的事情,我最初也为这个头疼过,下面分享一下我的框架选择之路nodejs的框架最近来node的火热,带动了一大批的框架,例如express koa sails loopback thinkjs egg这些是我比较过的框架,下面...

  • PHP与Node.js的区别2021-01-18 10:23
    回答 19

    PHP胜出:代码与内容混合大家在输入的过程中当然希望能将自己的思路直接转化为网站的文本内容,同时还要为进程添加分支、一部分if-then语句以保证站点拥有漂亮的视觉效果,具体取决于URL中的某些参数。又或者,我们希望能够利用单一数据库将文本或者数据加以...

  • 回答 3

    初次接触nodejs确实有一些难度,因为思路语法都和js有了一些差别,属于后端思想,所以需要楼主多下功夫,进行系统学习之后就容易接受了

  • 回答 13

    //首先卸载已安装的node-sasscnpm uninstall node-sass//重新安装cnpm install node-sass//如果报关于gyp的错,安装相关的gyp编译环境npm install -g node-gyp//再重复执行以上的卸载安装步骤//安装完成启动项目试试npm run dev...

  • 回答 10

    node.js 和 javascript 从本质上来说没有什么区别,语言是一样的,都是javascript语言编写。但是,node.js 主要从事后台操作,javascript主要操作HTML的元素(前端)。

  • 回答 8

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。(事件驱动:事件触发过程中,进行决策的一种策略,简单说就是跟随当前时间点上出现的事物,调用可用的资源进行解决该事物...

  • 回答 10

    global 最根本的作用是作为全局变量的宿bai主。按照ECMAScript 的定义,满足以下条 件的变量是全局变量:在最外层定义的变量;全局对象的属性;隐式定义的变量(未定义直接赋值的变量)。当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦...

  • 回答 4

        webpack构建工具是基于node平台的, 所以在安装之前必须先安装nodejs. 接在来就可以通过npm包管理工具在线安装webpack了.    对于webpack构建工具, 即可全局安装, 也可以局部安装. 一般情况下,大多数会采用局部安装, 因为每一个项目需要对webpack...

  • 回答 3

    vue-cli脚手架是基于node平台的, 所以安装之前, 必须先安装nodejs. 之后直接通过npm包管理工具即可完成vue-cli脚手架工具的安装. 目前市面上流行的vue-cli脚手架有两个版本, 接下来分别演示下:安装vue-cli-2.x版本// -g 表示全局安装 npm install vue-cli...

  • 回答 3

    1.打开node官网 https://nodejs.org/en/,选择 other Downloads,2.安装Windows Binary 64位或者32位3.将你减压后的路径保存一份,如(D:\soft\node-v10.16.3-win-x64)4.找到系统路径(控制面板-》系统-》高级系统设置-》环境变量-》path),获取到 5.找到...

  • 回答 5

    一、安装环境1、本机系统:Windows 10 Pro(64位)2、Node.js:v6.9.2LTS(64位)二、安装Node.js步骤1、下载对应你系统的Node.js版本2、选安装目录进行安装3、环境配置4、测试

  • 回答 4

    Node.js是一个基于Chrome v8引擎建立的JavaScript运行平台,用于搭建响应速度快、易于扩展的网络应用。本文和大家分享的是Node.js的一些特点,希望对大家有帮助。  异步I/O  这里,我们来详细解释一下:  异步是什么意思  比如说你的爸,今天要叫你做...

  • 回答 5

    dejs适用于I/O密集的应用,而不太适用于计算密集的应用我用 Node.js 开发了 Am I Hacked,算是有一点用 Node.js 支持大流量的经验。先列一些数字服务器是 Linode 512,也就是 Linode 上最低端的。...

没有解决我的问题,去提问