Node.js介紹javascript
fs
http
Node.js是一個能夠解析和執行JavaScript代碼的JavaScript運行時環境html
構建於chrome V8之上java
瀏覽器中的JavaScriptnode
Node.js中的JavaScriptgit
Node.js爲JavaScript提供了一些服務器級別操做的APIweb
var fs=require('fs')
Node.js的特性chrome
Node.js包生態系統-npm--世界上最大的開源庫npm
Node模塊化編程
模塊有三種api
用戶本身編寫的模塊
命令行工具
《深刻淺出Node.js》
《Node.js權威指南》
B/S編程模型
模塊化編程
異步編程
注意:
fs: file system 文件系統。node的fs模塊中包含全部文件操做相關的API
var fs=require('fs')
讀文件
成功
失敗
fs.readFlie("要讀取文件的路徑",(err,data)=>{ if (error) { console.log('讀取文件失敗了') } else { console.log(data.toString()) } })
寫文件
第三個參數:回調函數
成功:
失敗:
fs.writeFile('./data/你好.md', '你們好,給你們介紹一下,我是Node.js', function (error) { if (error) { console.log('寫入失敗') } else { console.log('寫入成功了') } })
1.加載http核心模塊
var http = require('http');
2.使用http.createServer建立一個服務器實例
var server = http.createServer()
3.綁定端口號,啓動服務器
server.listen(3000, function() { console.log('服務器啓動成功了,能夠經過 http://127.0.0.1:3000/ 來進行訪問') })
- 執行此文件,就會打印'服務器啓動成功了,能夠經過 http://127.0.0.1:3000/ 來進行訪問' - 瀏覽器訪問http://127.0.0.1:3000/會打印'收到客戶端的請求了''
4.服務器要幹嗎?接受請求,發送響應數據
執行第二個參數:回調處理函數(請求事件處理函數),並處理請求,發送響應
Request 請求對象 : 能夠用來獲取客戶端的一些請求信息,例如請求路徑
Response 響應對象 : 能夠用來給客戶端發送響應消息
server.on('request', function (request, response) { console.log('收到客戶端的請求了,請求路徑是:' + request.url) // response 對象有一個方法:write 能夠用來給客戶端發送響應數據 // write 可使用屢次,可是最後必定要使用 end 來結束響應,不然客戶端會一直等待 response.write('hello') response.write(' nodejs') // 告訴客戶端,個人話說完了,你能夠呈遞給用戶了 response.end() })
根據不一樣的url響應不一樣的內容
var http = require('http') // 1. 建立 Server var server = http.createServer() // 2. 監聽 request 請求事件,設置請求處理函數 server.on('request', function (req, res) { var url = req.url if (url === '/') { res.end('index page') } else if (url === '/login') { res.end('login page') } else if (url === '/products') { var products = [{ name: '蘋果 X', price: 8888 }, { name: '菠蘿 X', price: 5000 }, { name: '小辣椒 X', price: 1999 } ] // 響應內容只能是二進制數據或者字符串 // 數字 // 對象 // 數組 // 布爾值 res.end(JSON.stringify(products)) } else { res.end('404 Not Found.') } }) // 3. 綁定端口號,啓動服務 server.listen(3000, function () { console.log('服務器啓動成功,能夠訪問了。。。') })
圖片不須要指定編碼格式,通常爲字符串指定編碼格式
res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.setHeader('Content-Type', 'text/html; charset=utf-8') res.setHeader('Content-Type', 'image/jpeg')
- 服務器默認發送數據的格式是utf-8模式 - 瀏覽器默認操做系統的編碼:中文編碼:gbk - 在 http 協議中,Content-T就是用來告知對方我給你發送的數據內容是什麼類型 - text/plain 普通文本,若是是html格式的,用text/html
fs
模塊和http
模塊組合使用讀取不一樣的內容var http = require('http') var fs = require('fs') var server = http.createServer() server.on('request', function (req, res) { // / index.html var url = req.url if (url === '/') { // 咱們要發送的仍是在文件中的內容 fs.readFile('./resource/index.html', function (err, data) { if (err) { res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.end('文件讀取失敗,請稍後重試!') } else { // data 默認是二進制數據,能夠經過 .toString 轉爲我們能識別的字符串 // res.end() 支持兩種數據類型,一種是二進制,一種是字符串 res.setHeader('Content-Type', 'text/html; charset=utf-8') res.end(data) } }) } else if (url === '/xiaoming') { // url:統一資源定位符 // 一個 url 最終實際上是要對應到一個資源的 fs.readFile('./resource/ab2.jpg', function (err, data) { if (err) { res.setHeader('Content-Type', 'text/plain; charset=utf-8') res.end('文件讀取失敗,請稍後重試!') } else { // data 默認是二進制數據,能夠經過 .toString 轉爲我們能識別的字符串 // res.end() 支持兩種數據類型,一種是二進制,一種是字符串 // 圖片就不須要指定編碼了,由於咱們常說的編碼通常指的是:字符編碼 res.setHeader('Content-Type', 'image/jpeg') res.end(data) } }) } }) server.listen(3000, function () { console.log('Server is running...') })