【靈魂拷問】你爲何要來學習Node.js呢?

【靈魂拷問】你爲何要來學習Node.js呢?

學習node.js適合的人羣:javascript

在這裏插入圖片描述

須要必備一些HTML,CSS,JavaScript及編程有必定程度瞭解的讀者閱讀,一些簡單的命令行操做,具有服務端開發經驗更好。

Node.js究竟是什麼?爲何要學習它呢?它由能爲咱們作寫什麼?html

Node是一種新技術,誕生於2009年,通過幾年的變化,Node.js生態圈以及逐漸走向了穩定,很多開發者入門時,老是要經歷一種思惟的轉變,可是學會Node.js能夠進行Web後端的開發,同時掌握事件驅動的異步式編程風格。前端

學習Node.js,掌握如何用Node構建可擴展因特網應用,服務器事件驅動開發的重要概念,跨服務器的併發鏈接、非阻塞I/O和事件驅動的編程、如何支持各類數據庫和數據存儲工具、NodeAPI的使用示例等。java

Node.js的簡單介紹

學習一個東西,就像上學時老師說的同樣,瞭解一個東西,要知道這是什麼,能作什麼?爲何?即what?why?How?。去考慮問題。node

Node.js是什麼?

Node.js是JavaScript運行時環境,不是一門語言,不是庫,不是框架,是能夠解析和執行JavaScript代碼,就像瀏覽器同樣,如今的JavaScript能夠徹底脫離瀏覽器來運行。web

Node.js是服務端,後端開發的。學習Node.js就是在學習web服務器開發的過程。Node.js是構建與Chrome的V8引擎之上。算法

註解:「瀏覽器內核」指是一個瀏覽器最核心的部分,「Rendering Engine」,直譯爲「渲染引擎」,咱們能夠叫「排版引擎」,「解釋引擎」。

引擎的做用就是幫助瀏覽器來渲染頁面的內容,將頁面的內容和代碼來呈現給用戶所見到的視圖。數據庫

JavaScript引擎是一個專門處理JavaScript腳本的虛擬機,通常在網頁瀏覽器中。
在這裏插入圖片描述
Node.js是沒有BOM和DOM的,有的是EcmaScript,Node提供了一些服務器級別的操做,文件讀寫,網絡服務的構建,網絡的通訊,HTTP服務器等等。
在這裏插入圖片描述
Node.js爲事件驅動,非阻塞IO模型(異步),輕量和高效。

npm是世界上最大的開源庫生態系統,絕大多數的JavaScript相關的包都存放在npm上,目的是爲了方便開發者去下載使用。npm

在這裏插入圖片描述

Node介紹

Node能夠做爲web服務器後臺,命令行工具,掌握B/S編程模型,Brower-Server,模塊化編程。編程

掌握以下內容:

異步編程瞭解知識點,回調函數,Promise,async,generator

Express Web 開發框架,ES6

安裝Node環境

下載地址:

https://nodejs.org/en/download

查看版本號,確認是否安裝了

在這裏插入圖片描述
建立編寫JavaScript腳本文件,打開終端,定位到腳本文件所在的目錄,輸入文件名,執行對應的文件,解析執行JavaScript。

文件操做

fs是file-system的簡寫,是文件系統的意思,在瀏覽器中JavaScript是沒有文件操做的能力,而在node中的JavaScript具備文件操做的能力。

fs.readFile 就是用來讀取文件的。

// 使用require方法加載fs核心模塊
var fs = require('fs')

// 讀取文件
fs.readFile('')

// 讀取文件
// 第一個參數讀取文件的路徑
// 第二個蠶食是一個回調函數

fs.readFile('./data/helllo.txt', function(error, data){
 // console.log(data.toString());
 if(error){
  console.log('讀取文件出錯了');
  }else{
   console.log(data.toString());
   }
})

寫文件的操做

var fs = require('fs')

// 第一個參數,文件路徑
// 第二個參數,文件內容
// 第三個參數,回調函數

fs.writeFile('./data/dada.txt', 'hello, dada',  function(error){
 // console.log('dada');
 if(error){
  console.log('寫入失敗')
  }else{
   console.log('寫入成功')
   }
})

簡單的HTTP服務

核心模塊HTTP:

// 加載核心模塊
var http = require('http')

// 使用 http.createServer()方法建立一個web服務器

// 返回一個 server實例

var server = http.createServer()
// 服務器提供數據
// 註冊 request 請求事件
server.on('request', function(){
console.log('收到客戶端的請求');
});

// 綁定端口號,啓動服務器
server.listen(3000, function(){
 console.log('服務器啓動成功了');
})

request 請求事件處理函數

Request 請求對象
請求對象用來獲取客戶端的請求信息

Response 響應對象
響應對象用來給客戶端發送響應消息

var http = require('http')

var server = http.createServer();

server.on('request', function(request, response) {
 console.log('dada');
// response 對象有一個方法,write 用來給客戶端發送響應數據
response.write('dada');
// write 方法能夠屢次使用,最後必定要加 end()方法來結束響應,不然
// 客戶端會一直等待
response.write('da');

response.end();
})

server.listen(3000, function(){
 console.log('服務器');
});

如何當請求不一樣的路徑來響應不一樣的消息

來判斷 request.url 使用 if 便可。

在這裏插入圖片描述
瀏覽器中的JavaScript有什麼?

有EcmaScript,BOM,DOM。

根據不一樣的請求路徑返回不一樣的數據

var http = require('http')
var server = http.createServer()
server.on('request', function(req, res) {
 // console.log(req.url);
 // 直接在end裏面寫 
// res.end('hello dada');

 var url = req.url
if(url === '/') {
 res.end('index');
 } else if(url === '/login'){
 res.end('login page');
 }else{
  res.end('404');
  }
});

server.listen(3000, function(){
 console.log('啓動服務器');
})

在這裏插入圖片描述

核心模塊

在這裏插入圖片描述

// 用來獲取機器信息
var os = require('os')

// 用來操做路徑
var path = require('path')

// 獲取當前機器的cpu信息
console.log(os.cpus())

// memory內存
console.log(os.totalmem())

// extname extension 獲取一個路徑中的擴展名部分
console.log(path.extname('c:/data/hello.txt'));

模塊做用域,文件做用域,超出文件的無論用,node中,沒有全局做用域,只有模塊做用域,外部訪問不到內部,內部訪問不到外部

exports 爲默認是一個空對象

var foo = 'dada'
exports.foo = 'hello'

var age = 12
exports.age = age

響應內容類型

res.setHeader('Content-Type','text/plain;charset=utf-8')

res.setHeader('Content-Type','image/jpeg')

url爲統一資源定位符

一個url最終實際上是要對應到一個資源的

Content-Type類型:

tool.oschina.net/commons

Node中的JavaScript:

EcmaScript:方法,變量,數據類型,內置對象,Array,Object,Date,Math。

Http請求,有require,端口號,ip地址定位計算機,端口號。

建議學習的資料:

《深刻淺出Node.js》

《Node.js權威指南》

JavaScript標準參數教程:
http://javascript.ruanyifeng....

Node入門:
http://www.nodebeginner.org/i...

官方api文檔:
https://nodejs.org/en/

CNODE社區:
http://cnodejs.org

❤️ 不要忘記留下你學習的腳印 [點贊 + 收藏 + 評論]

做者Info:

【做者】:Jeskson
【原創公衆號】:達達前端小酒館。
【福利】:公衆號回覆 「資料」 送自學資料大禮包(進羣分享,想要啥就說哈,看我有沒有)!
【轉載說明】:轉載請說明出處,謝謝合做!~

大前端開發,定位前端開發技術棧博客,PHP後臺知識點,web全棧技術領域,數據結構與算法、網絡原理等通俗易懂的呈現給小夥伴。謝謝支持,承蒙厚愛!!!


若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。


請點贊!由於大家的贊同/鼓勵是我寫做的最大動力!

歡迎關注達達的CSDN!

這是一個有質量,有態度的博客

前端技術棧

相關文章
相關標籤/搜索