在開始學nodejs時,一般我們就是直接
console.log('資料庫連線成功')
res.write('登陸成功')
res.end()
}else );
res.write('登陸失敗,使用者名稱或密碼錯誤返回
') res.end()}})
// if(body.username ==='[email protected]' && body.password === '123') );
// res.write('登陸成功')
// res.end()
// }else );
// res.write('使用者名稱密碼錯誤')
// res.end()
// }
})}else if(pathname === '/register') )
req.on('end',function() )
// res.write('註冊成功!
前往登陸
') // res.end()
// if(err) throw err
// })
//方法二
connection.query('insert into users values(null,"'+ body.username +'","'+ body.password +'")' ,function(err,results) )
res.write('註冊成功!
前往登陸
') res.end()
if(err) throw err})}
})}else );
fs.readfile('../page/register.html',function(err,data)
res.write(data)
res.end()})}
}}).listen(8080);比如上面這段**,就是實現乙個登陸註冊的簡單功能,雖然功能是正常實現了,但是**結構很亂,沒有路由來管理請求
我們應該有
接下來來改造上面的**
// child_process。之所以用它,是為了實現乙個既簡單又實用的非阻塞操作:exec()
// exec("ls -lah", function (error, stdout, stderr) );
//// return content
// exec("find /",
// ,
// function (error, stdout, stderr) );
// response.write(stdout);
// response.end();
// });
if (request.method === 'get')
response.writehead(200, );
response.write(data)
response.end()
})} else if (request.method === 'post') )
request.on('end', function() );
response.write('登陸成功')
response.end()
} else );
response.write('登陸失敗,使用者名稱或密碼錯誤返回
') response.end()}})
})}}
function upload(response) );
response.write("hello upload");
response.end();
}exports.start = start;
exports.upload = upload;model.js
var mysql = require('mysql');
var connection = mysql.createconnection()
connection.connect(function(err)
console.log('資料庫連線成功')
})function query(sql, callback) )
}exports.query = query
index.js
var server = require('./server')
var router = require('./router')
var requesthandlers = require('./requesthandlers')
var handle = {}
handle["/"] = requesthandlers.start
handle["/start"] = requesthandlers.start
handle["/upload"] = requesthandlers.upload
server.start(router.route,handle)
在index.js檔案中可以看到,將router路由檔案和請求處理requesthandlers分別注入到server中,這裡新建了乙個handle物件,key值為對應請求的url路徑,value為我們在requesthandlers中定義的函式,根據路徑的不同分別去呼叫不同的函式來響應這個請求。
server.js只負責建立伺服器,請求分發處理都交給路由來統一管理
在router.js中`typeof handle[pathname] === 'function'` 如果條件成立,代表當前請求有對應的函式來處理。
在server.js將request和response引數傳遞到requesthandler中,因為要用到這兩個物件,比如這裡根據req的method如果是get直接就返回乙個html表單介面,是post代表正在登入。
model裡就是隨便簡單的封裝了一下,也可以直接把sql封裝到model中,呼叫的時候不直接寫sql語句,而且根據傳的值在model中生成,對於一些非同步處理可以直接採用promise等一些方法來處理,以及可以用資料庫連線池來處理連線。
可以去參考一下nodejs入門這本書,以後開發的時候肯定直接就用express或koa這種框架來寫,但是剛學nodejs時這種簡單的架構還是有必要了解一下,對以後學習nodejs相關的web框架肯定是有幫助的。
nodejs安裝 nodejs入門
nodejs開篇 前幾天看到好多關於node 的帖子沒有單獨說明node安裝的文章 特發此篇 總結一下平時在windows上nodejs的安裝。1 js來搞前後端分離是nodejs的一大特點,用js來寫後台程式 當然node的最大優點個人認為 還是 單執行緒的非同步程式設計咯 2 基於nodejs使...
nodejs快速入門
nodejs快速入門 2.3.1 控制台輸出 我們現在做個最簡單的小例子,演示如何在控制台輸出,建立文字檔案demo01.js,內容 var a 1 var b 2 console.log a b 我們在命令提示符下輸入命令 node demo01.js 2.3.2 使用函式 建立文字檔案demo0...
NodeJS爬蟲入門
往常都是利用 python net 語言實現爬蟲,然現在作為一名前端開發人員,自然需要熟練 nodejs。下面利用 nodejs 語言實現乙個糗事百科的爬蟲。另外,本文使用的部分 是 es6 語法。實現該爬蟲所需要的依賴庫如下。request 利用 get 或者 post 等方法獲取網頁的原始碼。c...