Node.js详解(二):Node.js与JS的关系

news2024/11/28 11:48:27

一、简介

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言。它是一种高级的、解释型的编程语言;它是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。

传统的js是运行在浏览器上的,因为浏览器内核分为两个部分:

  • 渲染引擎—渲染HTML和CSS
  • JavaScript 引擎—负责运行 JavaScript

如果要执行JavaScript代码,需要一个js引擎,你可以安装一个浏览器(内置js引擎),或nodejs环境(内置js引擎),如果你在js代码中调用了浏览器提供的API,则必须安装一个浏览器,若调用了nodejs API,则必须安装nodejs环境,然后以各自规定的方式加载、执行JavaScript代码。
在这里插入图片描述

二、Node.js的历史

2008年左右,随着 AJAX 的逐渐普及,Web 开发逐渐走向复杂化,系统化;

2009年2月,Ryan Dahl 想要创建一个轻量级,适应现代 Web 开发的平台;

2009年5月,Ryan Dahl 在 GitHub 中开源了最初版本,同年11月,JSConf 就安排了 Node 讲座;

2010年底,Joyent 公司资助,Ryan Dahl 也加入了该公司,专门负责 Node 的开发;

2011年7月,在微软的支持下登陆 Windows 平台。PS:node 的生产环境基本是在 Linux 下。

据 Node.js 创始人 Ryan Dahl 回忆,他最初希望采用 Ruby,但是 Ruby 的虚拟机效率不行。

注意:是 Node 选择了 JavaScript,不是 JavaScript 发展出来了一个 Node。

NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的是事件机制和异步IO模型的优越性,而不是JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带IO功能,并且需要能良好支持事件机制。JS没有自带IO功能,天生就用于处理浏览器中的DOM事件,并且拥有一大群程序员,因此就成为了天然的选择。

如他所愿,NodeJS在服务端活跃起来,出现了大批基于NodeJS的Web服务。而另一方面,NodeJS让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。

因此,对于前端而言,虽然不是人人都要拿NodeJS写一个服务器程序,但简单可至使用命令交互模式调试JS代码片段,复杂可至编写工具提升工作效率。

三、Node.js与js的区别

1、node.js是平台,Js是编程语言;

2、js是客户端编程语言,需要浏览器的JavaScript解释器进行解释执行;

3、node.js是一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境;

4、node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似JavaScript的结构语法进行编程,在node.js上运行。

5、node.js与js组成不同

JavaScript:
ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)

  • DOM(一些操作页面元素的方法)

  • BOM(一些操作浏览器的方法)

Node.js:

  • ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)

  • OS(操作系统)

  • file(文件系统)

  • net(网络系统)

  • database(数据库)

6、顶层对象不同

在JS中的顶层对象是window对象,但是在node中没有什么window对象,node中的顶层对象是global对象。这就是二者的差异性。

在window对象中,定义一个全局变量是可以通过Window来访问的,但是在node中是不能通过global对象来访问的

优缺点:

1.原生js运行文件依赖于浏览器;

2.nodejs运行文件的时候服务为终端;

3.原生js有兼容性问题,nodejs不存在兼容性问题;

4.nodejs可以进行本地的读写,服务器搭建,连接数据库等,而原生js无法做到。

(1)使用node开发还可以使用node自有配套的npm包管理工具:
npm是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
允许用户从npm服务器下载别人编写的第三方包到本地使用。
允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。

Node.js 的使用包管理器 npm来管理所有模块的安装、配置、删除等操作,使用起来非常方便。

(2)node本身就是一个服务端的框架,对于一些简单的项目,我们可以不需要后端配合,直接用node进行数据库的增删改查(但是我们一般不使用这个功能);
(3)nodejs是一个服务js平台,有自身带的npm(基于 Node.js的前端项目包管理工具),有第三方的grunt(基于 Node.js的前端项目构建工具,即脚手架)、有第三方的express(路由功能)等强大的代码与项目管理应用。还有自身带的webpack(基于 Node.js的前端项目部署打包工具),v8(谷歌客户端浏览器Javascript引擎)等强大的功能。
npm(包管理工具)是基于 Node.js的前端项目包管理工具,是项目中对各种程序包的依赖管理,传统的开发项目主要是后端,现在技术在更新,前端有了框架的开发模式管理,也需要用包管理工具的思想去管理,目的是简化第三方程序包在项目中引用复杂化。前端的js包是全世界JavaScript 天才开发共享的各种代码模块,把这些代码模块都按照一个独立的软件功能统一在一个库中,一个代码模块是一个程序包(package,即代码模块)。

四、总结

就前端来说nodejs具有划时代的意义,

nodejs不是一个js框架,千万不要认为是类似jquery的框架,

nodejs是js运行时,运行环境,类比java中jvm,

java的开端是什么,无疑是jvm,自从有了jvm,java才能做到“一次编写处处运行”,

不管你是windows还是linux,只要安装了对应版本的jvm都可以运行.class文件。

同样,nodejs的作用和JVM是一样的,也是js的运行环境,不管是你是什么操作系统,

只要安装对应版本的nodejs,那你就可以用js来开发后台程序。

这具有划时代的意义,意味着一直以来只能在浏览器上玩来玩去的JS,可以做后端开发了,

自从有了nodejs后就催生出一大批用js做后台开发的前端人员,这部分人员就是偏前端的“全栈程序员”。

记住,nodejs是和jvm同等地位的js运行环境,打开了前端人员走向后端的道路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NMS非极大值抑制

文章目录 一、NMS详解二、NMS具体步骤与实现1.步骤2、代码(pytorch版本) 一、NMS详解 NMS即非极大值抑制,常被用于目标检测等,即只保留检测同一物体置信度最大的框。 具体作用可以看图: 可以看出,未经过nms的图片,有…

基于Freertos的ESP-IDF开发——8.使用wifi访问HTTP服务器

目录 0. 前言其他ESP-IDF文章 1. 前期准备1.1头文件准备1.2 http 服务器搭建 2. 连接 wifi3.http访问任务4. 完整代码 0. 前言 使用ESP32使用 wifi 访问 http 服务器 开发环境:ESP-IDF 4.2 操作系统:Ubuntu22.04 开发板:自制的ESP32-WROOM-…

流行框架(二)网络请求库 OKhttp

文章目录 概述HttpURLConnectionGET和POST获取文本数据GETPOST OKHttp基本使用依赖与权限发起一个get请求重要概念OkHttpClientRequestCallRealCallAsyncCall 请求调度器Dispatcher同步请求execute的执行异步请求enqueue的执行两种请求方式的总结 OkHttp拦截器链拦截器种类addI…

字节狂问1小时,小伙offer到手,太狠了!(字节面试真题)

前言: 在尼恩的(50)读者社群中,经常有小伙伴,需要面试 头条、美团、阿里、京东等大厂。 下面是一个小伙伴成功拿到字节飞书offer,通过一小时拷问的面试经历,就两个字: 深&#xf…

基于STM32的SYN6288语音播报模块驱动实验(代码开源)

前言:本文为手把手教学 SYN6288 语音播报模块的驱动实验,本教程的 MCU 采用STM32F103ZET6。通过 CubeMX 软件配置 UART 串口协议驱 SYN6288 模块进行规定的语音播报。考虑到 SYN6288 模块的集成化与智能化很高,所以该模块的使用是极其便利的。…

【HarmonyOS】初识低代码平台开发元服务

【关键字】 HarmonyOS、低代码平台、元服务开发、拖拽式开发 【写在前面】 今天要分享的是HarmonyOS中的低代码开发相关的内容,低代码开发是DevEco Studio提供的一种UI界面可视化的构建方式,通过图形化的自由拖拽数据的参数化配置,可以快速…

【Java项目】基于SpringBoot+Vue的校园二手商品交易平台

文章目录 功能简述功能展示用户模块购物车模块管理员模块物物对价功能实现 代码 视频演示 代码下载 项目内含有 功能简述 系统登录界面的实现 系统首页界面的实现 用户信息管理界面的实现 商品购物功能的实现 购物车管理功能及支付功能的实现 物物对价功能的实现 用户安全设置…

【面试需了解】jvm垃圾回收机制-GC基础知识、jvm基本组成、查看、排查

前言 jvm垃圾回收机制-GC基础知识、jvm基本组成、查看、排查 文章目录 前言GC基础知识概述 JVM基本组成1. 虚拟机的组成2. jvm的内存区域 查看jvm排查jvm问题1. 正常运行的系统2. 对于已经发生了OOM的系统 GC基础知识 概述 什么是垃圾 一个对象没有被引用,没有任何…

Spring MVC详解(学习总结)

一、Sprig MVC简介1.1介绍1.2MVC是什么 二、Spring MVC实现原理2.1核心组件2.2工作流程 三、第一个Spring MVC四、常用注解五、参数绑定5.1URL风格参数绑定5.2RESTful风格的URL参数获取5.3映射Cookie5.4使用POJO绑定参数5.5JSP页面的转发和重定向 六、Spring MVC数据绑定6.1基本…

vulnstack(红日)内网渗透靶场二: 免杀360拿下域控

前言 在我之前的文章vulnstack(一)打靶,我主要依赖Cobalt Strike进行后期渗透测试,这次我计划使用Metasploit框架(MSF)来进行这个阶段的工作。这个靶场与之前的不同之处在于它的WEB服务器安装了360安全卫士。虽然这增加了挑战的难度,但只要我…

Shell脚本攻略:循环语句while、until

目录 一、理论 1.while 2.until 3.break 4.continue 二、实验 1.实验一 2.实验二 3.实验三 4.实验四 5.实验五 一、理论 1.while (1)while用法 while循环满足条件执行,不满足不执行。 用于不知道循环次数,需要主动结束循环或达到条件结束…

二开项目权限应用全流程-按钮级控制

二开项目权限应用全流程-按钮级控制 员工A和员工B都可以访问同一个页面(以员工管理为例),但是员工A可以导出excel,员工B就不可以导出excel(看不到按钮) 思路 用户登陆成功后,用户可以访问的按钮级别权限保存在point…

阿里巴巴淘天集团后端暑期实习面经

目录 1.面向对象三大特性2.重写和重载3.protected 关键字和 default 关键字的作用范围4.栈帧中有哪些东西?5.堆中有哪些区域?6.new 一个对象存放在哪里?7.CMS 收集器回收阶段8.CMS 收集器回收过程哪些需要暂停线程?9.HashMap JDK …

手机行业再多一条“鲶鱼”,小度青禾要打一场漂亮突围战?

文 | 智能相对论 作者 | 佘凯文 智能手机到底还是不是一门好生意? 在换机周期被无限拉长、市场竞争越发激烈、高端市场迟迟无法突破等共同背景下,智能手机到底还是不是一门好生意,成为行业内这两年被热议的话题之一。 由TechInsights发布…

腾讯云轻量应用服务器CPU主频多少?型号?

腾讯云轻量应用服务器CPU型号是什么?轻量服务器处理器主频?腾讯云服务器网账号下的CPU处理器型号为2.5GHz主频的Intel(R) Xeon(R) Gold 6133 CPU和2.4GHz主频Intel(R) Xeon(R) CPU E5-26xx v4,腾讯云轻量应用服务器不支持指定底层物理服务器的…

NodeJs内存快照分析

(头等人,有本事,没脾气;二等人,有本事,有脾气;末等人,没本事,大脾气。——南怀瑾) NodeJs内存分析的必要性 回顾过去,我们排查web应用问题的途径…

36岁大龄程序员全职接单三个月的感触

36岁大龄程序员,原以为逃过35岁危机,没想到在年前被优化,拿了N2,12w薪资后,我开始了全职接单的道路。现在每个月平均收入有个20K,一路走来挺有感触的,把自己的经验分享给大家。 赚钱&#xff0…

【Jmeter】生成html格式接口自动化测试报告

jmeter自带执行结果查看的插件,但是需要在jmeter工具中才能查看,如果要向领导提交测试结果,不够方便直观。 笔者刚做了这方面的尝试,总结出来分享给大家。 这里需要用到ant来执行测试用例并生成HTML格式测试报告。 一、ant下载安…

Android13蓝牙 停用绝对音量功能

Android13蓝牙 停用绝对音量功能 文章目录 Android13蓝牙 停用绝对音量功能一、前言二、代码实现分析过程1、查看SettingsLib源码资源2、查看原生Setitntgs 相关字符(1)xml 布局文件中的显示(2) java 代码文件中的控制串口上控制&…

Vue注册界面精美模板分享

文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供vue组件之注册组件源码…