Node.js(爱前端) 一

一 Node.js 简介

 1.1 官网 https://nodejs.org/en/

官网介绍:

Node.js是一个构建在 Chrome 浏览器V8引擎上的 JavaScript 运行环境

Node.js 使用了事件驱动、非阻塞I/O模型,这些都使它轻量、好用。

Node.js 的包生态(npm),是世界上最大的开源库生态系统。

 ps: 解决性能问题而发明的 Node.js

异步 I/O:绝大多数的网站 I/O 是非常多的,I就是 input 数据的读取,O 就是 Output 数据的写入,

但是 I/O 的时候 CPU 是命令磁盘去做事情,此时 CPU自己就闲置了

这种模式叫做同步 I/O 

同步(synchronous):当系统遇见了一个需要耗费大量时间的事情的时候,选择死等。

异步(Asynchronous):当系统遇见了一个需要耗费大量时间的事情的时候,不死等,先做后面的事情,耗时事情做完之后,执行回调函数

Node.js 的哲学:是一个专注于实现高性能 Web 服务器优化的专家,几经探索,几经挫折后,

遇到 V8 而诞生的项目。

 

Node.js 向下兼容做的非常好,所有的高版本,会 deprecate(建议放弃)一些老版本的API,

但不会完全不支持

在 Node.js 和 io.js 首次融合的4.0.0版本中,开发者们可以看到其对 ES6 特性的扩展支持,

并且大多数都是默认启用的,比如:classes、typed arrays、generators、Promises、Symbols、collections、arrow functions、block scoping)、template strings等等。

1.2 安装

到官网下载(有稳定版,最新版)

路径中不要有中文

安装完成后: 命令行  $  node -v  查看版本

注意 $ 符号是 Linux 系统中(后面会学习)命令行中普通用户的表示符号,

注意,我们输入的时候不要输入 $,这里只是一个表示符号

$ cls  清屏

$ node xxx.js  运行 js 文件,可直接交文件拖进来

$ d: 到 d 盘

$ cd  xxx 进入 xxx 文件夹

 

此时有两种运行环境

1 浏览器

2 node 

 

二 开发服务器

2.1 案例: (文件要放在 c 盘)

注意 node  文件的路径   绝对路径 

 结束挂起  ctrl + c

此时 光标挂起,没有返回, 表示此时 node 正在执行一个监听

再浏览器:127.0.0.1:2000 回车 访问 

如果你要修改程序,此时刷新浏览器没用,必须 ctrl+c 打断之后重新运行

页面运行结果:

命令行 node 运行后,就是跑了一个服务器,若是 断开(ctrl + c ),再访问页面就访问不到了

在 node.js 文件的最后添加语句: console.log("node.js运行");  会在 cmd 中 node运行后显示

 

2.2 Node.js 是后台的东西

NodeJS 是 JavaScript 工作在了服务器端,太牛逼啦!我们的JS现在上天入地!

 查看源代码,如果代码中有运算,比如: (3+4),我们发现数字 7 是直接写上去的,

没有 (3+4)的运算痕迹

原因就是 NodeJS 运行在服务器端,而不是浏览器端。

服务器计算了数字 7 之后,发给了浏览器就是扁平的、纯粹的 HTML 了,没有任何程序。

 

至此我们已经证明了 NodeJS 运行在服务器端。我们使用 JS 开始开发服务器:GET请求的处理、POST请求参数的处理、数据库的增删改查、Cookie、 session等等、路由。

 

 2.3 NodeJS 没有服务器架构

Node.js 是一个让 JavaScript 运行在服务器端的开发平台,它让 JavaScript 的触角伸到了服务器端。

但 Node 似乎和其他服务器端语言比如 PHP、ASP、JSP 有点不同:

● Node.js 不是一种独立的语言,与 PHP、JSP、Python、Perl、Ruby 的“既是语言,也是平台”不同,Node.js的使用JavaScript进行编程,NodeJS是一个工具,语言仍然是 JavaScript。

● 与 PHP、JSP 等相比,Node.js 跳过了 Apache、Tomcat、Nginx、IIS 等 HTTP 服务器,它自己不用建设在任何服务器软件之上。Node.js 的许多设计理念与经典架构(LAMP)有着很大的不同,可以提供强大的伸缩能力。

Node.js 自身哲学,是花最小的硬件成本,追求更高的并发,更高的处理性能

  

Node.js 没有根目录的概念。

 

三 Node.js 特点

3.1 单线程

在 Java、PHP 或者 .net 等服务器端语言中,会为每一个客户端连接创建一个新的进程。而每个进程需要耗费大约 2MB 内存。也就是说,理论上一个 8GB 内存的服务器可以同时连接的最大用户数为 4000 个左右。要让 Web 应用程序同时支持更多的用户,就需要增加服务器的数量或者增加服务器的内存数,而 Web 应用程序的硬件成本当然就上升了。

Node.js 不为每个客户连接创建一个新的线程,而仅仅使用一个线程(thread)。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让 Node.js 程序宏观上也是并行的。使用 Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接

另外,单线程的带来的好处,还有操作系统完全不再有线程创建、销毁的时间开销

 

输出中文乱码: 查 node API:  http 模块   ctrl + f :   setHeader 选择  response.setHeader('Content-Type', 'text/html;charset=utf-8');

 文件的保存类型也要设置为 utf-8

 

写 路径 时  ./ 在linux 必须加

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Bijou/p/10211459.html

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

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

相关文章

记一次线上服务假死排查过程

大家好,我是烤鸭: 最近线上问题有点多啊,分享一个服务假死的排查过程。 问题描述 9点10分,收到进程无响应报警(一共6台机器,有1台出现),后来又有1台出现。 排查思路 首先确认是否误报或者网络抖动&…

[css] 简述下你理解的优雅降级和渐进增强

[css] 简述下你理解的优雅降级和渐进增强 优雅降级,先做好一个完善的具备完整体验的版本,再向下做兼容。 渐进增强,先做好一个可以基本正常使用的版本,再慢慢丰富体验和内容。个人简介 我是歌谣,欢迎和大家一起交流前…

vue小记

1.vue绑定属性&#xff0c;点击事件 1.<!-- 完整语法 --> <a v-bind:href"url">...</a><!-- 缩写 --> <a :href"url">...</a>2.<!-- 完整语法 --> <a v-on:click"doSomething">...</a>&l…

nacos注册中心自动上下负载

大家好&#xff0c;我是烤鸭&#xff1a; 还有2天就过年了&#xff0c;祝大家新年快乐。最近好久没写技术文章了&#xff0c;还是得回归下主业&#xff0c;今天分享下nacos注册中心自动上下负载的方式和组件。 组件版本 <properties><java.version>1.8</java.v…

[css] 清除浮动的方式有哪些及优缺点?

[css] 清除浮动的方式有哪些及优缺点&#xff1f; 什么是盒子塌陷&#xff1f; 外部盒子本应该包裹住内部的浮动盒子&#xff0c;结果却没有。问题出现的原因 父元素只包含浮动元素&#xff0c;那么它的高度就会塌缩为零&#xff08;前提就是你们没有设置高度&#xff08;heig…

windows10 C盘清理

大家好&#xff0c;我是烤鸭&#xff1a; 身为一个号称修电脑的&#xff0c;磁盘清理是必备技能了。前几天刚出的新闻 男子帮女友清理电脑C盘&#xff0c;扫出17万个文件。 想必大家都经历过清理C盘的痛苦&#xff0c;这两天正好又清了&#xff0c;分享下。 先给个结论&#…

JS代码计算股票涨停

这个纯粹是给自己留做备份用的&#xff0c;股票涨停有一个计算公式&#xff0c;但是为了自己方便查看股票涨了多少钱&#xff0c;还是决定自己写了一个 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>…

[css] 简述你对BFC规范的理解

[css] 简述你对BFC规范的理解 是CSS中的一个渲染机制&#xff0c;BFC就相当于一个盒子&#xff0c;内部的元素与外界的元素互不干扰。它不会影响外部的布局&#xff0c;外部的布局也不会影响到它。形成条件&#xff08;任意一条&#xff09;float的值不是noneposition 的值不是…

《实现领域驱动设计》读书笔记

大家好&#xff0c;我是烤鸭&#xff1a; 《实现领域驱动设计》&#xff0c;读书笔记&#xff0c;贴个封面&#xff0c;要不不知道是哪本。 了解概念 刚开始接触DDD&#xff0c;肯定懵逼&#xff0c;很多名词&#xff0c;一点点看下。 领域&#xff1a;带有业务属性的范…

[css] 用css创建一个三角形,并简述原理

[css] 用css创建一个三角形&#xff0c;并简述原理 width: 0;height: 0;margin: 100px auto;border-top: 50px solid transparent;border-left: 50px solid transparent;border-right: 50px solid transparent;border-bottom: 50px solid red;个人简介 我是歌谣&#xff0c;欢…

spring junit单元测试

项目是有很多个功能块组成的&#xff0c;我们开发的时候&#xff0c;当我们开发出来一个功能&#xff0c;想要测试这个功能是否正确&#xff0c;不可能等到前端和后端全部写好了再进行测试&#xff0c;这样太浪费时间&#xff0c;有没有什么方法能直接测试后台的功能写的是否正…

windows docker redis

大家好&#xff0c;我是烤鸭&#xff1a; docker真的太方便了&#xff0c;尤其是对windows系统&#xff0c;友好的不得了。以前还只能是正版的专业版才能用&#xff0c;现在已经没有限制了&#xff0c;虽然加了收费&#xff0c;个人用免费就够了。redis 新版也不支持windows系统…

[css] CSS3新增伪类有哪些并简要描述

[css] CSS3新增伪类有哪些并简要描述 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

模拟微信自动化发送(微信公众号文章自动点击)

大家好&#xff0c;我是烤鸭&#xff1a; 分享个微信自动化发送的新方式&#xff0c;仅技术分享。 本来是公众号文章抓取相关的&#xff0c;审核一直不过&#xff0c;将就看吧。 需要的工具 Java&#xff08;jdk1.8&#xff09; Fiddler Python&#xff08;3.8&#xff09;…

Entity FrameWork 操作使用详情

Entity FrameWork 是以ADO.net为基础发展的ORM解决方案。 一、安装Entity FrameWork框架 二、添加ADO.Net实体数据模型 三、EF插入数据 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace EFDem…

[css] CSS选择器有哪些?哪些属性可以继承?

[css] CSS选择器有哪些&#xff1f;哪些属性可以继承&#xff1f; 选择器通配符idclass标签后代选择器子选择器兄弟选择器属性选择器伪类选择器伪元素选择器可以继承的属性font-sizefont-weightfont-stylefont-familycolor个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前…

《redis 设计与实现》读书笔记

大家好&#xff0c;我是烤鸭&#xff1a; 《redis 设计与实现》&#xff0c;读书笔记。 第一部分 数据结构与对象 第2章 简单动态字符串 Redis 使用SDS 作为字符串表示。 O(1) 复杂度获取字符串长度。 杜绝缓冲区溢出。 减少修改字符串长度时所需的内存重分配次数。 …

网络通信中TCP出现的黏包以及解决方法 socket 模拟黏包

粘包问题概述 1.1 描述背景 采用TCP协议进行网络数据传送的软件设计中&#xff0c;普遍存在粘包问题。这主要是由于现代操作系统的网络传输机制所产生的。我们知道&#xff0c;网络通信采用的套接字(socket)技术&#xff0c;其实现实际是由系统内核提供一片连续缓存(流缓冲)来…

[css] 在页面上隐藏元素的方法有哪些?

[css] 在页面上隐藏元素的方法有哪些&#xff1f; position配合z-index; 或者 left/top/bottom/right &#xff1a; -100%&#xff1b;margin-left: -100%;width: 0; height: 0; overflow: hidden;这个算吗opacity: 0;display:none;transform: scale(0)/translateX(-100%)/tran…

[css] CSS3有哪些新增的特性?

[css] CSS3有哪些新增的特性&#xff1f; 边框圆角border-radius盒子阴影box-shadow文字阴影text-shadow2d、3d变换transformrotate()scale()skew()translate()过度动画transition自定义动画animation(只记得这些了)个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…