(Node.js筆記01)Hello&模塊化&啓動服務器返回頁面

一.Hello Node.js

var a= 'Hello Node.js'
console.log(a)

在這裏插入圖片描述

1.Node.js是Javascript的運行平臺,不是語言也不是框架,理解爲可以運行在服務器上的Javascript
2.Node.js雖然利用Javascript,但它並沒有BOM和DOM的解析操作(服務器沒有瀏覽器,哪來的BOM/DOM操作)

二.模塊

Node.js中許多的操作都是通過調用模塊裏定義好的函數進行的,體現了封裝的思想,實際例子可以看第三部分的讀取文件的操作。接下來我們來寫部分代碼更好地理解模塊化的內部。

//A.js文件:想調用B文件內的add函數
var bExport=require('./b.js')
console.log(bExport.add(1,1))
console.log(bExport.foo2)
//B.js文件:提供函數或變量給A調用
var foo1='Hello'
exports.add=function(x,y){
	return x+y
}
exports.foo2='Node.js'

1.require()是調用的模塊路徑(A和B同個文件夾)
2.exports.是提供對外的接口,.後面可接變量名或函數名,如果沒有提供對外的接口則無法對外進行輸出,即foo1
3.require()內可簡寫成require(’./b’),其中的“./”不能省略

Node.js提供的模塊鏈接

三.存取文件

1.讀取文件
Node.js提供了非常多的模塊提供我們使用,通常我們只需要對相應的模塊進行獲取,並使用模塊裏面的函數便可以得到我們想要的操作。

//require()裏的fs是提供的模塊,獲取之後提供給變量fs
var fs = require('fs')
//參數一:讀取的文件路徑
//參數二:回調函數,讀取成功時error爲null,data默認爲二進制流;失敗時error爲錯誤信息,data爲null
fs.readFile('./1.txt', function (error, data) {
    if (error) {
        console.log("讀取失敗")
    } else {
        console.log(data.toString())   //data默認爲二進制流,toString()方法轉換爲字符串
    }
})

在這裏插入圖片描述
2.存儲文件

var fs = require('fs')
//參數一:存儲路徑
//參數二:存儲內容
//參數三:回調函數
fs.writeFile('./1.txt', 'zhuangww05', function (error) {
    if (error) {
        console.log('存儲失敗')
    } else {
        console.log("寫入成功")
    }
})

在這裏插入圖片描述

四.啓動網絡服務

var http = require('http')
var server = http.createServer()
//啓動服務器並進行監聽
//參數一:端口號,選擇沒有正在使用的端口號
//參數二:回調函數
server.listen(3000, function () {
    console.log("服務器啓動成功了,可以通過http://127.0.0.1:3000/ 來進行訪問了")
})
//參數一:獲取向服務器發送請求
//參數二:回調函數,request是接受的請求,response是發送的消息
server.on('request', function (request, response) {
    console.log("收到客戶端的請求了,請求路徑是" + request.url)   //獲取接受請求的url,指的是ip地址後面的地址,例如127.0.0.1/index.html,url="/index.html"
    var url = request.url
    if (url == '/') {
        response.end("index page")    //發送"index page"字符串給客戶端,在瀏覽器頁面進行顯示
    } else if (url == '/production') {
        var message = [
            {
                name: "Apple",
                price: 8.0
            },
            {
                name: "Orange",
                price: 9.0
            }
        ]
        response.end(JSON.stringify(message)) //發送的信息只能是字符串或二進制流,所以需要對對象進行字符串的轉換
    } else {
        response.end('404')
    }
})

在這裏插入圖片描述

response.end()是結束當前請求的迴應並返回消息

五.服務器返回頁面

var http = require('http')
var server = http.createServer()
var fs = require('fs')
server.listen(3000, function (error, data) {
    if (error) {
        console.log("服務器創建失敗.")
    } else {
        console.log("服務器正在運行,可以通過http://127.0.0.1:3000/ 進行訪問.")
    }
})
server.on('request', function (req, res) {
    var url = req.url
    if (url == '/') {
        res.end('Index Page')
    } else if (url == '/html') {
        fs.readFile('./1.txt', function (error, data) {
            if (error) {
            	//設置客戶端瀏覽器讀取服務器返回的信息
            	//text/plain代表字符串明文,用utf-8解析
                res.setHeader('Content-Type', 'text/plain;charset=utf-8')
                res.end("文件讀取失敗.")
            } else {
            	//text/html代表用解析html方式解析返回的消息
                res.setHeader('Content-Type', 'text/html;charset=utf-8')
                res.end(data)
            }
        })
    } else {
        res.end('404')
    }
})

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章