node.js 菜鳥教程
mysql 菜鳥教程
nodemon --node http服務熱更新
postman --接口本地測試工具html
項目使用的是Express框架,從初始化一個Express項目開始。node
在Express框架的官方文檔中,是經過生成器工具express-generator快速生成了一個Express應用,相關步驟以下:mysql
npm install -g express-generator
npm install
安裝項目依賴包如下是初始化的Express應用中的已經作了一些註釋說明後的app.js文件中的代碼:sql
// 引入依賴包
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
// 引入路由文件
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
// 建立應用實例
var app = express();
// 設置視圖目錄和模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// 如下皆爲註冊中間件
// 內置中間件
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 路由中間件
app.use('/', indexRouter);
app.use('/users', usersRouter);
// 404錯誤處理中間件
app.use(function(req, res, next) {
next(createError(404));
});
// 錯誤處理中間件
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
// 導出app實例對象
module.exports = app;
複製代碼
router/**包含了路由文件,每一個路由文件中包含了不一樣HTTP請求對用的路由以及邏輯處理函數,此處以router/index.js文件爲例,如下是index.js文件的代碼: 數據庫
view/**主要存放應用的頁面,以view/index.jade爲例,代碼以下: express
在實際開發中,咱們項目的路由文件的數目會因項目複雜度而不一樣,當項目足夠複雜時,咱們須要引入的路由文件和須要註冊的路由就會更多,同時除了應用自己的404和錯誤處理中間件以外,還可能根據實際需求新增咱們自定義的中間件,若是這些初始化的代碼都放置於app.js中,無疑,app.js文件會愈來愈大愈來愈臃腫,這並非一個很好的選擇。同時路由和路由對應的處理函數在一個文件中,這樣的處理不夠優雅,不便於維護,因此進行路由分離顯得頗有必要性。固然,這個應用只是生成器工具初始化的一個簡單腳手架,並非最終的樣子。 下面遵循mvc設計來抽離路由層,模型-視圖-控制器。npm
對應的,在Node中的MVC框架,處理流程應該是如下步驟:json
!(5,6這個過程把頁面的渲染放在了服務器端處理,這裏我是用了Vue框架+element
ui,第四步返回數據後頁面的渲染放在了瀏覽器)路由層的工做是根據請求路徑匹配相應的路由而後調用相應的controller,原先路由的使用混在app.js文件中 後端
! 注:routes(app)須要在建立應用實例以後,即var app = express()以後。
同時,刪除app.js中的// app.use('/', indexRouter)。瀏覽器
先,在根目錄下建立controller/index.js,在index.js中編寫以下代碼,思路:把每一個頁面的業務邏輯單獨寫在一個js文件裏,index.js文件引入他們,封裝成對象暴露出去
先,在根目錄下建立server/index.js,在index.js中編寫以下代碼,思路:把每一個頁面的數據結構和對數據庫操做單獨寫在一個js文件裏,index.js文件引入他們,封裝成對象暴露出去
淺談session,cookie,sessionStorage,localStorage的區別及應用場景
登陸註冊頁面的時候,須要對用戶是否已登陸過進行處理,這裏採用session存儲的方式。把sessionId能夠存到內存中,不足的是加入忽然斷電,就會失去保存的sessionId,因此這裏存到mysql數據庫中。
express-mysql-session
express-session
express-session的使用得依賴cookie,還須要安裝cookie-parser
cookie-parser
至此,咱們對生成器工具express-generator生成的Express應用的改造完畢,而且接下來初始化本身的應用能夠再也不使用express-generator,能夠根據本身的需求,參照以上修改,進行項目初始化搭建。 完整後再上傳項目地址。