二十三、前端必学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入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美国海军陆战队的军舰人员属于什么军种?
- 下一篇: 坦克世界闪击战五边形里面有数字