@Auhor:Runsen

@Date:2019年12月04日

@update Date:2020年5月31日

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

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

文章目录

  • Node.js
  • Node.js环境搭建
    • linux安装node
  • 创建第一个应用
  • NPM
  • 重点
  • Promise
  • 思考题

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

下面都是来源腾讯云

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

下面就是成功图,是我的腾讯云服务器。

创建第一个应用

下面我就教大家使用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')

下面就是用node执行server.js

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

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

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}/`);
});

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

重点

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

但是我们可以直接

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

但是我们不能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();


这个图就是代码执行的时候出来的执行栈(执行过程从下往上)。

Promise

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

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

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

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

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 先打印4console.log(5)},0)
})
console.log(2)

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

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

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

二十三、前端必学Node.js入门相关推荐

  1. 前端必学 - 大文件上传如何实现

    前端必学 - 大文件上传如何实现 写在前面 问题分析 开始操作 一.文件如何切片 二.得到原文件的hash值 三.文件上传 四.文件合并 技术点总结[重要] 一.上传文件? 二.显示进度 三.暂停上传 ...

  2. [知乎回答] 前端是否要学习 Node.js?

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12很多小伙伴都表示收获颇丰.一起学的大多数200行左右的Node.js源码.今天推荐这篇文章.(刚刚在写明天掘金要发的 ...

  3. web前端必学功法之一:省市联动

    web前端必学功法之一:省市联动 案例:js实现下面功能 **<!-- 省市联动思路分析:1.准备元素:定义省份与城市的下拉框2.绑定事件:绑定省份下拉框的change事件3.准备数据:准备数组 ...

  4. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

  5. Node.js 入门知识点总结

    Noed.js 快速入门 前言 node.js 入门 环境配置 hello node.js node.js 获取参数 node.js 模块系统 node.js 路由 node.js 文件操作 使用 n ...

  6. 【前端Vue+后端Node.js+MySql】部署到服务器

    [前端Vue+后端Node.js+MySql]部署到服务器 文章目录 [前端Vue+后端Node.js+MySql]部署到服务器 1.买服务器 2.服务器操作 2.1.修改服务器密码,xshell登录 ...

  7. node.js 入门 (1)

    node.js 入门 (1) 一.node.js 是什么? 二.node.js 有那些特点? 三.node.js 安装种配置 安装方式 1:安装单个 node 版本(不推荐) 安装方式 2:安装多个 ...

  8. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

  9. web前端必学功法之一:用户选择爱好

    web前端必学功法之一:用户选择爱好 案例实现效果: 首先做这个页面效果,我们要把页面布局给写好,每个网站做好页面可以解决很大的问题. css代码,这里的页面采用Grid布局 <style> ...

最新文章

  1. WebViewJavascriptBridge的简单使用
  2. python 循环(while、for、break、continue、循环嵌套、while...else、for...else)
  3. 南京大学教授施斌及其团队—— 光纤变“神经” 大地能感知
  4. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
  5. easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板
  6. 关于python pdb的描述_The python debugger(PDB)的简介
  7. python replace替换多个字符_关于python:使用string.replace(x,y)替换所有
  8. 正则获取前8位数字_数据取整,获取字符串前数字另辟蹊径之LOOKUP
  9. postgresql数据类型之数组类型
  10. 12、常见Conditional注解源码解析(ok)
  11. AtCoder Beginner Contest 223
  12. 7-6 逆序的三位数 (10 分)
  13. Entity Framework 常用类
  14. 桶排序/基数排序(Radix Sort)
  15. Checklist设计编写规范及模板
  16. 获得代理ippython_Python自动获取代理IP
  17. 前端网页按钮效果的展示
  18. c++小游戏 走迷宫
  19. 做人不能太“广州有线”了
  20. 异步编程之 Isolate

热门文章

  1. C99 calloc、malloc和realloc区别
  2. php获取curl头_php中CURL请求头和响应头获取方法
  3. MTK Read/Write IMEI from App
  4. Linux系统没有home分区,我的linux系统home分区挂不上了
  5. java main是多线程的吗_Java多线程之线程及其常用方法
  6. linux检查网络是否通畅_网络基础Ping命令详解(使用Ping这命令来测试网络连通)...
  7. ReactNative ES6简介 及基本语法第一篇
  8. [软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
  9. Redis的缓存穿透问题和雪崩问题?
  10. WinRAR 5.70 下载、安装和广告弹框去除