這是我參與8月更文挑戰的第7天,活動詳情查看:8月更文挑戰css
建立Web服務器4步驟:html
//1. 加載/導入 http 模塊
const http = require('http');
//2. 建立服務器對象
const server = http.createServer();
//3. 開啓服務器
server.listen(3000, () => {
console.log('Server is running...');
});
//4. 監聽瀏覽器請求並進行處理
//on:該方法用來監聽事件
//參數1: 事件類型, request表明瀏覽器請求事件
//參數2: 當監聽到瀏覽器請求後觸發的回調函數,該函數中有兩個參數 req和res
// req(request): 請求對象
// res(response): 響應對象
server.on('request', (req, res) => {
// end方法可以將數據返回給瀏覽器,瀏覽器會顯示該字符串
res.end('Hello Nodejs');
});
複製代碼
核心:req(請求對象)中有url屬性,該屬性中保存了當前請求的url地址前端
注意: url屬性中保存的地址是沒有 協議、IP、端口號,而且以 / 開頭的地址 示例:node
// 目標: 不一樣的url地址顯示不一樣的內容
//1. 加載 http 模塊
const http = require('http');
//2. 建立服務器
const server = http.createServer();
//3. 開啓服務器
server.listen(3000, () => {
console.log('server is running...');
});
//4. 監聽瀏覽器請求
server.on('request', (req, res) => {
//req對象的url屬性中保存了當前請求的url地址
//console.log(req.url);
const url = req.url;
if (url === '/') {
res.end('index-page');
} else if (url === '/admin/login') {
res.end('login-page');
} else if (url === '/goods/list') {
res.end('list-page');
} else {
res.end('not found');
}
})
複製代碼
核心: fs.readFile 讀取html頁面內容,再將文件內容經過res.end方法返回給瀏覽器正則表達式
//4. 監聽瀏覽器請求
server.on('request', (req, res) => {
//req對象的url屬性中保存了當前請求的url地址
//console.log(req.url);
const url = req.url;
if (url === '/') {
//調用fs.readFile讀取 index.html 頁面
//再將頁面內容用res.end方法返回給瀏覽器
fs.readFile('./view/index.html', (err, data) => {
if (err) {
return res.end('not found!!!');
}
res.end(data);
})
} else if (url === '/login') {
fs.readFile('./view/login.html', (err, data) => {
if (err) {
return res.end('not found!!!');
}
res.end(data);
})
}
})
複製代碼
核心:使用 res(響應對象)中的 setHeader方法瀏覽器
// res.setHeader('content-type', 'text/html;charset=utf-8');
//4. 監聽瀏覽器請求
server.on('request', (req, res) => {
//req對象的url屬性中保存了當前請求的url地址
//console.log(req.url);
const url = req.url;
res.setHeader('content-type', 'text/html;charset=utf-8');
if (url === '/') {
res.end('首頁');
} else if (url === '/admin/login') {
res.end('登陸頁');
} else if (url === '/goods/list') {
res.end('列表頁');
} else {
res.end('not found');
}
})
複製代碼
//4. 監聽瀏覽器請求
server.on('request', (req, res) => {
//req對象的url屬性中保存了當前請求的url地址
//console.log(req.url)
const url = req.url;
if (url === '/') {
//調用fs.readFile讀取 index.html 頁面
//再將頁面內容用res.end方法返回給瀏覽器
fs.readFile('./view/index.html', (err, data) => {
if (err) {
return res.end('not found!!!');
}
res.end(data);
})
} else if (url === '/login') {
fs.readFile('./view/login.html', (err, data) => {
if (err) {
return res.end('not found!!!');
}
res.end(data);
})
/** *核心思路: 以public開頭的url地址全均可以使用一個else分支來處理 */
} else if (url.startsWith('/public')) {
// url = '/public/css/a.css';
// url = '/public/css/aa.css';
// url = '/public/js/b.js';
// url = '/public/img/c.jpg'
fs.readFile('.' + url, (err, data) => {
if (err) {
return res.end('not found!!!');
}
res.end(data);
})
}
})
複製代碼
點贊支持、手留餘香、與有榮焉,動動你發財的小手喲,感謝各位大佬能留下您的足跡。服務器
前端萬字面經——基礎篇markdown
前端萬字面積——進階篇app