一般來講,先後端分離的項目,前端負責界面渲染和操做型的業務邏輯,後端則負責數據存取和數據處理相關的業務邏輯。前端
既然設計數據,那就少不了數據庫的使用。目前市面上流行着各類各樣的數據庫,這裏不打算一一列舉,我所選用的是 mysql。node
若是對各數據庫之間的差別感興趣的,能夠本身去查閱相關資料。mysql
先打開命令行工具,進入到項目根目錄,而後執行下面指令,安裝 mysql 模塊:sql
npm install mysql --save
而後啪啪啪,啪啪啪,碼字過程省略...咱們來看一下碼字結束以後的項目目錄結構是啥樣子的~數據庫
不難發現,項目中多了一個 data 目錄,裏面的內容結構和 routes 目錄十分類似。npm
相信你立刻就會聯想到,難道他們直接有什麼關係麼?後端
下面我就說說我這樣作的設計初衷:瀏覽器
首先,data 目錄下的全部腳本,都是跟 mysql 數據查詢有關係的,它們最終的執行結果是返回查詢所獲得的數據。app
其次,data/modules 目錄下的各個服務模塊,和 routes/modules 目錄下的各個業務邏輯模塊是一一對應關係,各個邏輯模塊引入了對應的服務模塊,調用服務模塊提供的各個方法取得想要的數據。前後端分離
setting.js 是數據庫連接的配置文件,方便在須要的時候引入使用。
connPool.js 最終導出一個能夠建立多個連接的鏈接池對象,由各個服務模塊引入使用。
下面看看代碼...
routes/modules/userMod.js
var userSrv = require('../../data/modules/userSrv'), userMod = { getUserList: function (req, res) { userSrv.getUserList(function (data) { res.send(data); }); }, checkStatus: function (req, res) { res.send('userStatus'); }, save: function (req, res) { res.send('userSave'); } }; module.exports = userMod;
標紅的代碼是修改過的,這裏引入了 userSrv 服務模塊,在 userMod.getUserList 方法中又調用了 userSrv.getUserList 方法獲取用戶列表數據,成功獲取後發送請求響應。
須要補充說明一下的是,這裏只是直接把請求回來的數據輸出到請求響應中去,並不表明實際項目中就這麼簡單。
更多的時候,在請求到數據之後,須要對數據再作處理,包裝成須要的數據格式以後,才輸入到請求響應中。
這些細節這裏就不發散,畢竟需求不一樣,這些處理代碼也會有巨大差別,舉例的意義已經不大。
data/settings.js
var settings = { host: '127.0.0.1', port: 3306, database: 'app', user: 'root', password: 'root' }; module.exports = settings;
比較簡單,相信是一目瞭然了。
data/connPool.js
var settings = require('./settings'), mysql = require('mysql'), //使用鏈接池的鏈接方式 pool = mysql.createPool(settings); module.exports = pool;
也是很是簡單的一個模塊,不用多講了。
data/modules/userSrv.js
var connPool = require('../connPool'), userSrv = { getUserList: function (callback) { connPool.getConnection(function (err, connection) { var sql = 'select * from user'; connection.query(sql, function (err, data) { if (err) throw err; callback(data); connection.release();//釋放連接 }); }); } }; module.exports = userSrv;
引入了一個鏈接池對象,先經過 connPool.getConnection 方法獲取鏈接對象,而後執行 sql 語句查詢數據,成功獲取數據以後,執行回調函數。
須要補充說明一下的是,這裏只是一個最最基礎的查詢服務,像複雜一些的有按條件查詢,排序,多表複合查詢等這裏就不發散了,這些問題均可以找到資料去解決之。
關鍵只是你的代碼如何實現,那些細節問題就看我的了。
data/modules 裏面的模塊只作 sql 數據操做(查,增,刪,改)
routes/modules 裏面的模塊則負責對取到的數據進行分析處理,格式規範化,最終輸出到請求響應中
最後,咱們看看數據庫。這裏我是用 XAMPP 一套搭建的數據庫服務,很是方便。
因爲自己對數據庫的東東也不是特別懂,因此只能提供這個關鍵字。
後面的就本身下載,搭建,實在弄不起來就去找身邊專搞後端的小夥伴詳細諮詢吧。
搭建好數據服務以後,建了一個名爲 app 的數據庫,裏面建了一個 user 表,而後隨便弄了一條數據進去,以下:
OK,萬事俱備。是時候跑一跑,看看有沒有問題了。
老規矩,打開命令行工具,進入到項目根目錄,而後執行下面指令,運行應用:
node start
而後用瀏覽器訪問 http://localhost:3000/user/list
看到頁面裏顯示 [{"id":1,"name":"admin","password":"123456"}]
和數據庫裏的數據一致,也就是成功鏈接並從數據庫中取得數據了~
有了開頭,後面的細節就根據需求再慢慢實現了~