二十三、前端必学Node.js入门
@Auhor:Runsen
@Date:2019年12月04日
@update Date:2020年5月31日
作者介紹:Runsen目前大三下學(xué)期,專業(yè)化學(xué)工程與工藝,大學(xué)沉迷日語,Python, Java和一系列數(shù)據(jù)分析軟件。導(dǎo)致翹課嚴(yán)重,專業(yè)排名中下。.在大學(xué)60%的時間,都在CSDN。決定今天比昨天要更加努力。
在復(fù)習(xí)前端第二十二篇,我要介紹了Node,從中回憶復(fù)習(xí)Node的知識點(diǎn)
文章目錄
- Node.js
- Node.js環(huán)境搭建
- linux安裝node
- 創(chuàng)建第一個應(yīng)用
- NPM
- 重點(diǎn)
- Promise
- 思考題
Node.js
Node.js是一個基于Chrome JavaScript運(yùn)行時建立的平臺, 用于方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js 使用事件驅(qū)動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行的數(shù)據(jù)密集型的實(shí)時應(yīng)用。(百度百科)
Node.js 是一個 JavaScript 的運(yùn)行環(huán)境(平臺),不是一門語言,也不是 JavaScript 的框架。簡單的說 Node.js 就是運(yùn)行在服務(wù)端的 JavaScript。
我先給大家介紹下知名度較高的Node.js開源項(xiàng)目
-
express:Node.js中最有名的web服務(wù)器框架。
-
PM2:node 本來是單進(jìn)程的,PM2可以實(shí)現(xiàn)和管理多進(jìn)程。
-
jade:非常優(yōu)秀的模板引擎,不僅限于 js 語言。
-
CoffeeScript:用簡潔的方式展示 JavaScript 優(yōu)秀的部分。
-
Atom:文本編輯器。
-
socket.io:實(shí)時通信框架。
-
mocha:功能強(qiáng)大的 node.js 測試框架。
Node.js環(huán)境搭建
nodejs下載
菜鳥教程
上面的文章安裝nodejs絕對看搞定,不會就趕緊棄學(xué)。
linux安裝node
在這里,我主要介紹 linux安裝node
sudo apt-get update sudo apt-get install nodejs sudo apt-get intall npm # 更新node到最新穩(wěn)定版 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 官網(wǎng) 獲取更多安裝信息。 #執(zhí)行以下命令,解壓安裝包。 tar xvf node-v10.16.3-linux-x64.tar.xz #依次執(zhí)行以下命令,創(chuàng)建軟鏈接。 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 #成功創(chuàng)建軟鏈接后,即可在云服務(wù)器任意目錄下使用 node 及 npm 命令。 #依次執(zhí)行以下命令,查看 Node.js 及 npm 版本信息。 node -v npm -v下面就是成功圖,是我的騰訊云服務(wù)器。
創(chuàng)建第一個應(yīng)用
下面我就教大家使用node創(chuàng)建第一個應(yīng)用,新建一個叫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執(zhí)行server.js
node server.js // 瀏覽器訪問 http://127.0.0.1:8888/下面就是 這是官網(wǎng)的入門代碼。
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服務(wù)器下載別人編寫的第三方包到本地使用。
- 允許用戶從NPM服務(wù)器下載并安裝別人編寫的命令行程序到本地使用。
- 允許用戶將自己編寫的包或命令行程序上傳到NPM服務(wù)器供別人使用。
其實(shí)就是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重點(diǎn)
在瀏覽器中,全局作用域是window,而在node中是global。
但是我們可以直接
var a=1; console.log(window.a),但是我們不能console.log(global.a),
因?yàn)閚ode在執(zhí)行的時候會形成一個閉包來實(shí)現(xiàn)模塊化。
function one(){let a = 1;function two(){let b = 2;console.log(a)function three(){// console.trace()console.log(b) }three();}two();} one();
這個圖就是代碼執(zhí)行的時候出來的執(zhí)行棧(執(zhí)行過程從下往上)。
Promise
Promise 中文翻譯為“承諾"是 JavaScript 的一種對象,表示承諾終將返回一個結(jié)果,無論成功還是失敗。
Promise是一個構(gòu)造函數(shù) new Promise() 得到一個Promise一個實(shí)例
Promise 有三個狀態(tài):等待中(pending),完成(fullfilled),失敗(rejected), Promise 的設(shè)計(jì)具有原子性,狀態(tài)一旦從 pending 狀態(tài)轉(zhuǎn)換為 fullfilled 狀態(tài)或者 rejected 狀態(tài)后,將不能被改變。
new Promise( function(resolve, reject) {...} ); //reject參數(shù) 可不選promise的三種狀態(tài) pending: 進(jìn)行中,既不是成功,也不是失敗狀態(tài)。 resolve: 意味著操作成功完成。 rejected: 意味著操作失敗
第一個是成功 resolve 調(diào)用的方法,第二個是失敗 reject 調(diào)用的方法
思考題
思考打印順序
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(){// 調(diào)用了setTimeout 先打印4console.log(5)},0) }) console.log(2)控制臺會先輸出13(new Promise的時候就立即執(zhí)行)2, setTimeout的執(zhí)行內(nèi)容放到宏任務(wù)隊(duì)列中,then執(zhí)行內(nèi)容放微任務(wù)中,最后在把輸出5的也方到宏任務(wù)中,因?yàn)槲⑷蝿?wù)先于宏任務(wù)執(zhí)行
線程,有時被稱為輕量級進(jìn)程(Lightweight Process,LWP),是程序執(zhí)行流的最小單元。線程也有就緒、阻塞和運(yùn)行三種基本狀態(tài)。就緒狀態(tài)是指線程具備運(yùn)行的所有條件,邏輯上可以運(yùn)行,在等待處理機(jī);運(yùn)行狀態(tài)是指線程占有處理機(jī)正在運(yùn)行;阻塞狀態(tài)是指線程在等待一個事件(如某個信號量),邏輯上不可執(zhí)行。
每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。
咱們講NodeJs的目的是什么呢?是為了去學(xué)習(xí)VueJs,ReactJs,再接下來還有ES6,跟著我混就對了。
總結(jié)
以上是生活随笔為你收集整理的二十三、前端必学Node.js入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国海军陆战队的军舰人员属于什么军种?
- 下一篇: 坦克世界闪击战五边形里面有数字