二十三、前端必学Node.js入门

举报
毛利 发表于 2021/07/15 07:24:07 2021/07/15
【摘要】 @Auhor:Runsen @Date:2019年12月04日 @update Date:2020年5月31日 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天要更加努力。 在复习前端第二十二篇,我要介绍了No...

@Auhor:Runsen

@Date:2019年12月04日

@update Date:2020年5月31日

作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天要更加努力。

在复习前端第二十二篇,我要介绍了Node,从中回忆复习Node的知识点

Node.js

Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。(百度百科)

Node.js 是一个 JavaScript 的运行环境(平台),不是一门语言,也不是 JavaScript 的框架。简单的说 Node.js 就是运行在服务端的 JavaScript。

我先给大家介绍下知名度较高的Node.js开源项目

  • express:Node.js中最有名的web服务器框架。

  • PM2:node 本来是单进程的,PM2可以实现和管理多进程。

  • jade:非常优秀的模板引擎,不仅限于 js 语言。

  • CoffeeScript:用简洁的方式展示 JavaScript 优秀的部分。

  • Atom:文本编辑器。

  • socket.io:实时通信框架。

  • mocha:功能强大的 node.js 测试框架。

Node.js环境搭建

nodejs下载

菜鸟教程

上面的文章安装nodejs绝对看搞定,不会就赶紧弃学。

linux安装node

在这里,我主要介绍 linux安装node

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get intall npm
# 更新node到最新稳定版
sudo npm install -g n
sudo n stable
node -v

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

下面都是来源腾讯云

wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
#您可前往 Node.js 官网 获取更多安装信息。
#执行以下命令,解压安装包。
tar xvf node-v10.16.3-linux-x64.tar.xz
#依次执行以下命令,创建软链接。
ln -s /root/node-v10.16.3-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v10.16.3-linux-x64/bin/npm /usr/local/bin/npm
#成功创建软链接后,即可在云服务器任意目录下使用 node 及 npm 命令。
#依次执行以下命令,查看 Node.js 及 npm 版本信息。
node -v
npm -v

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

下面就是成功图,是我的腾讯云服务器。
在这里插入图片描述

创建第一个应用

下面我就教大家使用node创建第一个应用,新建一个叫server.js,代码如下。不知道怎么回事,不要紧,你知道就是打印Hello World的程序。

var http = require("http")
http.createServer(function(request, response){ response.writeHead(200,{'Content-Type':'text/plain'}) response.end('Hello World\n');

}).listen(8888)

console.log('Server running')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

下面就是用node执行server.js

node server.js
// 浏览器访问 http://127.0.0.1:8888/

  
 
  • 1
  • 2

在这里插入图片描述

下面就是 这是官网的入门代码。

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

NPM

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

其实就是Python中的pip,管理第三方包的

下面的命令记住啊

// 版本号
npm -v

// 升级npm
sudo npm install npm -g

// 安装模块 -g 为全局
npm install ModuleName
npm install ModuleName -g

// 查看信息
npm list -g
npm list ModuleName 
npm list ModuleName -g

// 卸载模块
npm uninstall express
npm unistall express -g

// 更新模块
npm update modulName
npm update ModulName -g

// 搜索模块
npm search modulName

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

重点

在浏览器中,全局作用域是window,而在node中是global。

但是我们可以直接

var a=1;
console.log(window.a),

  
 
  • 1
  • 2

但是我们不能console.log(global.a),

因为node在执行的时候会形成一个闭包来实现模块化。

function one(){ let a = 1; function two(){ let b = 2;
		console.log(a) function three(){ // console.trace() console.log(b) }
		three(); }
	two();

}
one();



  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述
这个图就是代码执行的时候出来的执行栈(执行过程从下往上)。

Promise

Promise 中文翻译为“承诺"是 JavaScript 的一种对象,表示承诺终将返回一个结果,无论成功还是失败。

Promise是一个构造函数 new Promise() 得到一个Promise一个实例

Promise 有三个状态:等待中(pending),完成(fullfilled),失败(rejected), Promise 的设计具有原子性,状态一旦从 pending 状态转换为 fullfilled 状态或者 rejected 状态后,将不能被改变。

new Promise( function(resolve, reject) {...} ); //reject参数 可不选

  
 
  • 1

promise的三种状态 pending: 进行中,既不是成功,也不是失败状态。 resolve: 意味着操作成功完成。 rejected: 意味着操作失败

第一个是成功 resolve 调用的方法,第二个是失败 reject 调用的方法

在这里插入图片描述

思考题

思考打印顺序

console.log(1)
setTimeout(function(){ console.log(4)
},0)
let promise = new Promise(function(resolve,reject){ console.log(3) resolve(100)
}).then(function(data){ console.log(100) setTimeout(function(){ // 调用了setTimeout 先打印4 console.log(5) },0)
})
console.log(2)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

控制台会先输出13(new Promise的时候就立即执行)2, setTimeout的执行内容放到宏任务队列中,then执行内容放微任务中,最后在把输出5的也方到宏任务中,因为微任务先于宏任务执行
在这里插入图片描述

线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。
每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

咱们讲NodeJs的目的是什么呢?是为了去学习VueJs,ReactJs,再接下来还有ES6,跟着我混就对了。

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/103388407

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。