当前位置:首页 > 技术分析 > 正文内容

NodeJs(一)我对NodeJs的认知(nodejs的典型特点)

ruisui884个月前 (02-03)技术分析22

欢迎来到我的NodeJs专题系列,更多精彩内容持续更新中,敬请关注!

写在前面

前面我已经分享了100+篇前端相关的技术文章,都是自己平时工作中遇到的一些问题的问题,还有是我平时自学的内容。但是那些前端文章99%都是要基于浏览器。其实在大前端时代,还有一个很重要的组成部分,那就是NodeJs了。接下来的专题,我们就来分享一下NodeJs的基本和高级应用吧

本章,我将从以下几个方面来分享一下NodeJs的相关知识点。

  • NodeJs是什么?
  • NodeJs有什么优势和不足
  • NodeJs有哪些应用

NodeJs是什么?

前端开发在2009年之前,应该说都是基于浏览器的,也就是说,前端程序员能控制的就只有浏览器了。

比如我们想操作一下我们本地的文件,连接一下数据库等,基于安全机制,这些都是不被允许的。

这也就导致了前端一直是在程序员的鄙视链的最底端了。好像那时候,ajax好像是前端程序员唯一的“遮羞布”了。

然后,我们依然脱离不了后端的支持。

直到2009年,NodeJs横空出世。彻底巅覆了前端的技术分支,NodeJs也可以像Java,php等后端语言一样进行服务端的开发了。

根据官网的介绍,NodeJs是基于Google的chrome V8引擎开发的。

先来简单说一下,chrome v8是啥?它是google公司基于C++编写的,它可以用一解析JavaScript,v8的性能是非常高效的。

NodeJs并不是一门新的语言,它是一个js的一个运行环境,这个运行环境可以理解就是可以开发服务器端的程序。它的语法和普通的JS没什么区别。因此对于前端程序员来说,是非常友好的。

Nodejs的优势和不足

NodeJs的最大特点就是它 基于事件驱动异步非阻塞I/O

基于事件驱动是什么意思呢?事件这个概念在我们传统的dom中应该很常见了吧,举个例子

比如我们要读取一个本地大文件。我们只需要传入一个文件路径,然后加上一个回调函数,当文件读取完成后,将会触发一个成功的回调的函数,从而我们可以继续处理后面的逻辑。而读取文件的过程本身就是一个耗时的过程。异步将不再阻塞后面的程序继续运行

如果这个过程是一个同步的过程,那个后面的操作将要等到文件读取完成后再去执行了,这就造成了阻塞。像java php,他们都是同步的操作。

所以Nodejs的优势就已经体现出来了,对于高并发的网站,用NodeJs来处理用户的请求将比java和php都要高效。

哇,感觉NodeJs太牛了,那它有缺点吗?能把java,php它们干趴下吗?答案也很明确:不能。

既然NodeJs处理并发的能力要远远优于java,php,那为什么现在很多网站或者App的后台还是基于Java呢?

前段时间,面试的过程一般都会问面试官他们公司的后端用的是什么语言,答案都是java,只有一家是python。

NodeJs有一个缺点(痛点),那就是NodeJs计算能力远远不如java这样的编译型语言。

NodeJs的应用

NodeJs的地位好像有点尴尬,有高并发,但是后台一般又不用它。一般来说,一个大型的网站的后台可以使用多种语言,会结合每个语言的优势发挥各自的优势。

比如现在很多网站,都是用NodeJs来处理高并发,然后用Java这种稳定型的去后端的服务。Node就是我们常说的中间层了。

那。。除了作网站的中间层,还能做什么呢?大家不要忘了,自从NodeJs出来了,前端开发越来越复杂,也在慢慢的走向工程化了。

这其中最流行的打包工具就属webpack了,webpack本身,基于webpack的插件,loader都是基于Nodejs,如果没有NodeJs作为底层服务,这些将不复存在了。

当然,基于Nodejs的应用远远不止这些。更多Nodejs的知识点,后续将为大家一一分享。

总结:

  • 我们可以通过JS语法可以实现java实现的任何功能。他们各自有自己的优势。没有谁优于谁。
  • Nodejs为前端开疆拓土。为前端注入了新的血液。
  • NodeJs在前端工程化的应用。

这里是【畅哥聊技术】的《NodeJs》专题系列。更多内容持续更新中。

下期我们接着聊,未完待续。。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1117.html

标签: nodejs更新
分享给朋友:

“NodeJs(一)我对NodeJs的认知(nodejs的典型特点)” 的相关文章

7种超轻量级的Linux发行版,能够帮助你找到适合自己的操作系统

Linux是一种非常受欢迎的开源操作系统,而且有许多版本可以选择。有时候,你需要一种超轻量级的Linux发行版,它可以在资源有限的设备上运行,并且能够快速启动。本文将介绍7种超轻量级的Linux发行版,希望能够帮助你找到适合自己的操作系统。1. Tiny Core LinuxTiny Core Li...

基于archlinux的发行版有哪些?

Arch Linux 是一个 Linux 发行版,采用滚动更新的模型,这意味着 Arch Linux 不会定期发布新版本,而是持续接收更新和升级,保持系统与最新软件版本的同步。Arch Linux 以其极简主义、简单性和用户定制为中心的特点而闻名,专注于让用户对其系统配置具有完全控制权。然而,它也以...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化工具链以及各种支持类库结合使用时,vu...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...

使用cgroup限制进程资源

这里使用containerd项目中的cgroup包来实现进程资源限制。先写一个耗费一个CPU并且一秒增加10m内存的测试进程package mainimport ( "fmt" "math/rand" "time")func main() { go f...

HTML5最新版本介绍

HTML5是HTML4.01和XHTML1.0之后超文本标记语言的最新版本,由一群自由思想者设计,最终实现了多媒体支持、交互性、更智能的表单和更好的语义标注。 HTML 5不只是 HTML规范的最新版本,它是用于生成现代 Web内容的一系列相关技术的总称,其中最重要的三个技术是:HTML5核心规范...