nodejs入門 專案架構

2021-09-03 02:56:02 字數 4493 閱讀 1569

在開始學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...