node函數 node路由
# node函數
js中一個函數可以作為另一個函數的參數,即先定義一個函數,然後傳遞
## 匿名函數
這個學過,過
# node路由
要為路由提供請求的url,和其他需要的get的post請求。
隨後,路由會根據需要進行執行響應的代碼。
因此,需要根據http請求,從中提取中需要的url和get和post參數
## 兩個模塊,url和qureystring模塊
```
http://localhost:8888/start?foo=bar&hello=word
這個url中
url.parse(string).pathname start
url.parse(string).query 參數部分即問號後面的內容
querystring.parse(queryString)[foo] bar內容
querystring.parse(queryString)[hello] word內容
```
這是說明
## 提取url
```
var http = require(http);
var url = require(url);
(function start() { // 創建一個命名空間
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname; // 提取出來url的內容
console.log(pathname);
response.writeHead(200, {Content-Type: text/plain});
response.write(hello word);
response.end();
};
http.createServer(onRequest).listen(1937);
}());
```
訪問連接 http://127.0.0.1:1937/hello%20word.html
http://127.0.0.1:1937/hello%20word
返回消息
```
PS C:UsersmingmDesktop est> node main.js
/hello%20word
/favicon.ico
/hello%20word.html
/favicon.ico
```
兩個請求,一個是hello word的請求,由於url不支持空格,所以用%20進行替代,node返回客戶端請求的是hello word
favicon.ico是瀏覽器默認的一個請求,若沒有圖標文件的緩存都會對伺服器請求一個圖標文件
## 編寫一個路由
```
PS C:UsersmingmDesktop est> node index.js
Server has started.
hello word!
hello word!
```
文件結構
```
- test
router.js
server.js
index.js
```
文件內容
```
// router.js
function route(pathname) {
console.log("hello word!");
};
exports.route = route; // 導出方法
// server.js
var http = require(http);
var url = require(url);
function start(route) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname;
route(pathname); // 使用route的js模塊(已經在router.js文件導出)傳入的參數的值為pathname
response.writeHead(200, {Content-Type: text/html});
response.write(<head><meta charset="utf-8"></head>);
response.write(Hello word! hello word!);
response.end();
};
http.createServer(onRequest).listen(1937);
console.log("Server has started.");
};
exports.start = start;
// index.js
var server = require(./server);
var router = require(./router);
server.start(router.route);
```
訪問結果
```
http://127.0.0.1:1937/
Hello word! hello word!
```
推薦閱讀:
※使用模塊化工具打包自己開發的JS庫
※Webpack 4 配置最佳實踐
※zzz 周刊 - 第1043期 - 霓裳風華
※web前端開發介紹
※不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO
TAG:前端開發 |