學習node.js適合的人羣:javascript
須要必備一些HTML,CSS,JavaScript及編程有必定程度瞭解的讀者閱讀,一些簡單的命令行操做,具有服務端開發經驗更好。
Node.js究竟是什麼?爲何要學習它呢?它由能爲咱們作寫什麼?html
Node是一種新技術,誕生於2009年,通過幾年的變化,Node.js生態圈以及逐漸走向了穩定,很多開發者入門時,老是要經歷一種思惟的轉變,可是學會Node.js能夠進行Web後端的開發,同時掌握事件驅動的異步式編程風格。前端
學習Node.js,掌握如何用Node構建可擴展因特網應用,服務器事件驅動開發的重要概念,跨服務器的併發鏈接、非阻塞I/O和事件驅動的編程、如何支持各類數據庫和數據存儲工具、NodeAPI的使用示例等。java
學習一個東西,就像上學時老師說的同樣,瞭解一個東西,要知道這是什麼,能作什麼?爲何?即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能夠做爲web服務器後臺,命令行工具,掌握B/S編程模型,Brower-Server,模塊化編程。編程
掌握以下內容:
異步編程瞭解知識點,回調函數,Promise,async,generator
Express Web 開發框架,ES6
下載地址:
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:
// 加載核心模塊 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全棧技術領域,數據結構與算法、網絡原理等通俗易懂的呈現給小夥伴。謝謝支持,承蒙厚愛!!!
若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。
這是一個有質量,有態度的博客