JS-42-Node.js01-Node.js介绍

news2024/12/25 9:12:51

一、浏览器大战

众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准。

后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步。(2001年推出的古老的IE 6到今天仍然有人在使用!)

没有竞争就没有发展。微软认为IE6浏览器已经非常完善,几乎没有可改进之处,然后解散了IE6开发团队!而Google却认为支持现代Web应用的新一代浏览器才刚刚起步,尤其是浏览器负责运行JavaScript的引擎性能还可提升10倍。

先是Mozilla借助已壮烈牺牲的Netscape遗产在2002年推出了Firefox浏览器,紧接着Apple于2003年在开源的KHTML浏览器的基础上推出了WebKit内核的Safari浏览器,不过仅限于Mac平台。

随后,Google也开始创建自家的浏览器。他们也看中了WebKit内核,于是基于WebKit内核推出了Chrome浏览器

Chrome浏览器是跨Windows和Mac平台的,并且,Google认为要运行现代Web应用,浏览器必须有一个性能非常强劲的JavaScript引擎,于是Google自己开发了一个高性能JavaScript引擎,名字叫V8,以BSD许可证开源。

现代浏览器大战让微软的IE浏览器远远地落后了,因为他们解散了最有经验、战斗力最强的浏览器团队!回过头再追赶却发现,支持HTML5的WebKit已经成为手机端的标准了,IE浏览器从此与主流移动端设备绝缘。

二、浏览器大战和Node有何关系?

话说有个叫Ryan Dahl的歪果仁,他的工作是用C/C++写高性能Web服务。对于高性能,异步IO、事件驱动是基本原则,但是用C/C++写就太痛苦了。于是这位仁兄开始设想用高级语言开发Web服务。最终,Ryan瞄向了JavaScript。

因为JavaScript是单线程执行,根本不能进行同步IO操作,所以,JavaScript的这一“缺陷”导致了它只能使用异步IO。

选定了开发语言,还要有运行时引擎。这位仁兄曾考虑过自己写一个,不过明智地放弃了,因为V8就是开源的JavaScript引擎。让Google投资去优化V8,咱只负责改造一下拿来用,还不用付钱,这个买卖很划算。

于是在2009年,Ryan正式推出了基于JavaScript语言和V8引擎的开源Web服务器项目,命名为Node.js。虽然名字很土,但是,Node第一次把JavaScript带入到后端服务器开发,加上世界上已经有无数的JavaScript开发人员,所以Node一下子就火了起来。

三、Node.js简介

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境

所以,JS能在前端浏览器中运行,是因为浏览器中有JS的运行环境。

若是想让JS做后端开发,则需要借助Node.js。即,Node.js为JS提供了后端的运行环境。

所以,一段JS代码,可以在前端的浏览器中运行,也能在后端的Node.js中运行。

 

四、Node.js可以做什么?

五、Node.js的学习路径

1、JS基础语法(√)

2、Node.js内置API模块;

3、第三方API模块;

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

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

相关文章

最优贸易题解

图论学习总结-CSDN博客https://blog.csdn.net/smile__everydays/article/details/137881868?spm1001.2014.3001.5501点击上面连接根据目录即可找到最优贸易的题解

Python文件操作大全

1 文件操作 1.1 文件打开与关闭 1.1.1 打开文件 在Python中,你可以使用 open() 函数来打开文件。以下是一个简单的例子: # 打开文件(默认为只读模式) file_path example.txt with open(file_path, r) as file:# 执行文件操作…

系统代理与全局代理服务器的区别

系统代理与全局代理服务器的区别 嘿,朋友们!今天我来给大家讲解一下系统代理与全局代理服务器的区别。你知道吗?在我们使用互联网的时候,经常需要通过代理服务器来隐藏我们的真实网络身份。那么系统代理和全局代理服务器到底有什…

XXL-JOB v2.4.1 版本正式发布!

v2.4.1 Release Notes 1、【优化】多个项目依赖升级至较新稳定版本,涉及 netty、groovy、springboot、mybatis 等;2、【修复】“CVE-2022-43402” groovy 低版本漏洞修复。3、【修复】“CVE-2024-29025” netty 低版本漏洞修复。4、【修复】“CVE-2024-…

【C++进阶】--特殊类设计

1. 设计一个类,不能被拷贝 C98 将拷贝构造函数与赋值重载只声明不定义,并且将其访问权限设置为私有即可 class CopyBan { // ... private:CopyBan(const CopyBan&);CopyBan& operator(const CopyBan&); //... };C11 class CopyBan { // .…

c语言中声明的问题【求个关注!】

文章目录 1 变量的声明与定义(1)定义与声明的区别:(2)为什么要区分定义与声明?(3)extern是什么 ?(4)举例: 2 函数的声明:函数声明的格…

@Scheduled注解简介

一、注解介绍 Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。 二、源码 package org.springframework.scheduling.annotation;import java.lang.annotation.Documented; import…

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组(基础题)

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分:10 分 【问题描述】 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 )上 的数字是奇数,偶数位(十位、千位、十万位 &…

C++(类和对象---下)

目录 初始化列表构造函数?拷贝构造?浅谈explicit关键字友元 内部类static成员总结 初始化列表 引入初始化列表:简化代码,提高效率 在编程中,初始化列表是一种用于在创建对象时初始化成员变量的快捷方式。通过初始化列…

python爬虫原理和编程实战:爬取CSDN博主的账号信息

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

时间同步服务项目练习

一.配置server主机要求如下: 1.server主机的主机名称为 ntp_server.example.com 2.server主机的IP为: 172.25.254.100 3.server主机的时间为1984-11-11 11:11:11 4.配置server主机的时间同步服务要求可以被所有人使用 二.设定cli…

RocketMQ 10 面试题FAQ

RocketMQ 面试FAQ 说说你们公司线上生产环境用的是什么消息中间件? 为什么要使用MQ? 因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq 解耦 系统耦合度降低,没有强依赖…

Java | Leetcode Java题解之第31题下一个排列

题目: 题解: class Solution {public void nextPermutation(int[] nums) {int i nums.length - 2;while (i > 0 && nums[i] > nums[i 1]) {i--;}if (i > 0) {int j nums.length - 1;while (j > 0 && nums[i] > nums[…

构建数据平台架构指导原则与平台核心组件说明

文章目录 前言什么是数据架构?数据架构如何帮助构建数据平台?数据平台核心组件数据源系统数据加载数据存储数据处理和转换提供使用数据的方式公共服务 前言 湖仓一体是最近几年非常流行的现代大数据架构,目前它已经成为设计数据平台架构的首…

JavaSE-13笔记【集合2(+2024新)】

文章目录 3.Map3.1 Map继承结构3.2 Map接口的常用方法3.3 遍历Map3.4 HashMap集合3.4.1 HashMap集合key的特点3.4.2 HashMap集合的key存储自定义类型3.4.3 哈希表3.4.3.1 哈希表的介绍3.4.3.2 哈希表的存储原理 3.4.4 存放在HashMap和HashSet集合key部分的元素必须同时重写hash…

postman汉化

一、postman历史版本下载:Postman 10.24.16 Download for Windows / Old Versions / FileHorse.comhttps://www.filehorse.com/download-postman/old-versions/ 二、汉化包下载: Releases hlmd/Postman-cn GitHubPostman汉化中文版. Contribute to h…

LeetCode———144—— 二叉树的前序遍历

目录 ​编辑 1.题目 2.解答 1.首先计算二叉树的节点个数: 2.以先序遍历(Preorder Traversal)的方式遍历一个二叉树,并将遍历到的节点的值存储在一个整数数组中 3.最终代码 1.题目 . - 力扣(LeetCode) 给…

浮点数的存储方式、bf16和fp16的区别

目录 1. 小数的二进制转换2. 浮点数的二进制转换3. 浮点数的存储3.1 以fp32为例3.2 规约形式与非规约形式 4. 各种类型的浮点数5. BF16和FP16的区别Ref 1. 小数的二进制转换 十进制小数转换成二进制小数采用「乘2取整,顺序排列」法。具体做法是:用 2 2…

如何协调数据集成和数据质量?

想象一下用腐烂的木头制作的一件漂亮的家具或用劣质面料制成的高级时尚衬衫。材料的质量影响最终产品。那么,为什么数据洞察(贵公司庞大的数据管理工作的主要产品)会有所不同呢? 无论您的数据管理生态系统有多强大,或…

《自动机理论、语言和计算导论》阅读笔记:p139-p171

《自动机理论、语言和计算导论》学习第 7 天,p139-p171总结,总计 33 页。 一、技术总结 1.reversal p139, The reversal of a string a1a2…an is the string written backwards, that is anan-1…a1. 2.homomorphism A string homomorphism is a f…