二十三、前端必学Node.js入门
@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入门相关推荐
- 前端必学 - 大文件上传如何实现
前端必学 - 大文件上传如何实现 写在前面 问题分析 开始操作 一.文件如何切片 二.得到原文件的hash值 三.文件上传 四.文件合并 技术点总结[重要] 一.上传文件? 二.显示进度 三.暂停上传 ...
- [知乎回答] 前端是否要学习 Node.js?
大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12很多小伙伴都表示收获颇丰.一起学的大多数200行左右的Node.js源码.今天推荐这篇文章.(刚刚在写明天掘金要发的 ...
- web前端必学功法之一:省市联动
web前端必学功法之一:省市联动 案例:js实现下面功能 **<!-- 省市联动思路分析:1.准备元素:定义省份与城市的下拉框2.绑定事件:绑定省份下拉框的change事件3.准备数据:准备数组 ...
- 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记
最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...
- Node.js 入门知识点总结
Noed.js 快速入门 前言 node.js 入门 环境配置 hello node.js node.js 获取参数 node.js 模块系统 node.js 路由 node.js 文件操作 使用 n ...
- 【前端Vue+后端Node.js+MySql】部署到服务器
[前端Vue+后端Node.js+MySql]部署到服务器 文章目录 [前端Vue+后端Node.js+MySql]部署到服务器 1.买服务器 2.服务器操作 2.1.修改服务器密码,xshell登录 ...
- node.js 入门 (1)
node.js 入门 (1) 一.node.js 是什么? 二.node.js 有那些特点? 三.node.js 安装种配置 安装方式 1:安装单个 node 版本(不推荐) 安装方式 2:安装多个 ...
- Node.js 入门手册:那些最流行的 Web 开发框架
这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...
- web前端必学功法之一:用户选择爱好
web前端必学功法之一:用户选择爱好 案例实现效果: 首先做这个页面效果,我们要把页面布局给写好,每个网站做好页面可以解决很大的问题. css代码,这里的页面采用Grid布局 <style> ...
最新文章
- WebViewJavascriptBridge的简单使用
- python 循环(while、for、break、continue、循环嵌套、while...else、for...else)
- 南京大学教授施斌及其团队—— 光纤变“神经” 大地能感知
- 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★
- easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板
- 关于python pdb的描述_The python debugger(PDB)的简介
- python replace替换多个字符_关于python:使用string.replace(x,y)替换所有
- 正则获取前8位数字_数据取整,获取字符串前数字另辟蹊径之LOOKUP
- postgresql数据类型之数组类型
- 12、常见Conditional注解源码解析(ok)
- AtCoder Beginner Contest 223
- 7-6 逆序的三位数 (10 分)
- Entity Framework 常用类
- 桶排序/基数排序(Radix Sort)
- Checklist设计编写规范及模板
- 获得代理ippython_Python自动获取代理IP
- 前端网页按钮效果的展示
- c++小游戏 走迷宫
- 做人不能太“广州有线”了
- 异步编程之 Isolate
热门文章
- C99 calloc、malloc和realloc区别
- php获取curl头_php中CURL请求头和响应头获取方法
- MTK Read/Write IMEI from App
- Linux系统没有home分区,我的linux系统home分区挂不上了
- java main是多线程的吗_Java多线程之线程及其常用方法
- linux检查网络是否通畅_网络基础Ping命令详解(使用Ping这命令来测试网络连通)...
- ReactNative ES6简介 及基本语法第一篇
- [软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
- Redis的缓存穿透问题和雪崩问题?
- WinRAR 5.70 下载、安装和广告弹框去除