寫好乙個專案,首先要有乙個好的開始(架構)。
首先建立乙個server資料夾,然後初始化這個專案,並安裝express,命令依次是npm init、npm install express -g。然後就是建立專案檔案結構,如下:
api資料夾:用來存放介面,middleware資料夾中用來放獲取到資料後,將結果傳送給前端之前的業務邏輯**。router裡面用來放各個路由檔案,index.js檔案用來將router資料夾中的路由整合在一起。
config資料夾中放的配置檔案,大都是些配置資訊,常量。
models資料夾裡面放的是資料庫操作,db.js是連線資料庫,並暴露乙個方法進行資料庫操作。base.js裡面封裝了幾個基本的資料庫操作,新增、查詢等,統一了操作成功和失敗的返回結果。essay.js就是具體某個功能寫介面時涉及到的資料庫操作啦。
utils檔案中放封裝的功能性方法,這裡我寫了乙個將時間轉換成yyyy-mm-dd hh:mm:ss格式的方法。
views資料夾裡面就用來放頁面,到時候可以將vue專案打包以後的結果直接放在這裡面。這裡簡單建立了兩個頁面先占個坑位,前台頁面web中的index.html,後台管理頁面manage中的index.html。具體指向還需要在載入的時候設定一下。
目前還只是個簡單的專案結構,我先把基本的**貼在下面。等整個專案做完了,我在放到github上去。
api中的essay.js
const getdate = require("../../utils/formatedate");
//格式化資料
const getlist = data => ;
});};exports.getlist = getlist;
api->router中的essay.js
//隨筆
const express = require("express");
const router = express.router();
const essaymodel = require("../../models/essay");
const essayware=require("../middleware/essay");
module.exports = route => );
router.post("/add", async (req, res, next) => );
router.get("/getcount", async (req, res, next) => );
};
api中的index.js
const router=require('express').router();
const essayrouter=require('./router/essay');
module.exports= () =>
config中的index.js
module.exports =
};
loader中的express.js
//主要的頁面內容
//路由
// 跨域處理
cors()
);//中介軟體
//模板引擎
//靜態位址
// 404,沒有路由匹配的情況
next(createerror(404));
});// 錯誤處理
res.locals.message = err.message;
res.status(err.status || 500);
// res.render("error");//渲染錯誤頁面,根據預設的模板引擎目錄有關,裡面的檔案
res.send("出錯了啊");
});};
loader中的index.js
//所有載入需要組合在一起的都放在這裡,loader資料夾中的集合
const expressloader=require('./express');
}
models中的db.js
/**
* 連線資料庫,並進行資料庫操作
*/const mysql = require('mysql');
const config=require('../config');
const connection = mysql.createconnection(config.database);
connection.connect(err => );
// exports.connection = connection;
//新的資料庫操作方法
const query=(sql,values)=>else
});});
}exports.query=query;
models中的base.js
/**
* 基本的資料庫操作
* adddata 新增
* searchdata 查詢資料
* getcount 獲取總數
* 刪除(偽)
*/const db = require("./db");
const adddata = async (sql,values) => );
}else);
}};exports.adddata=adddata;
const searchdata=async (sql,values)=>);
}else);
}};exports.searchdata=searchdata;
const getcount=async (sql,values)=>);
}else);
}}exports.getcount=getcount;
models中的essay.js
const base=require('./base');
exports.add=async (request)=>
exports.search=async (request)=>
exports.count=async (request)=>
const express = require("express");
const config = require("./config");
function startserver()
console.log("我在監聽3000埠");
});}startserver();
從零開始學架構 00學習
這個專欄躺在極客時間裡已經躺了很久了,有空的時候才會去聽它,斷斷續續的學習沒有多大效果。還是希望能有時間系統的學習一遍,所以才會整理這份學習筆記,希望寫完了還回再回過頭看看吧。廢話不多說,直接總結乾貨。1.架構設計相對程式設計來說思維方式有很大的差異。架構設計是判斷和取捨,程式設計是邏輯和實現。2....
從零開始學習Express二 路由
路由是什麼 以我自己的理解,通俗易懂的講路由就是使用者訪問我們時候的乙個入口。包括兩部分,乙個位址,乙個動作。位址通常以uri形式出現,例如乙個 動作的話包括 get post put delete等等,通常我們訪問乙個 就是get了乙個 位址。明白了路由之後,我們就知道了其重要性,沒有路由,使用者...
從零開始搭建架構實施Android專案
時間 2016 01 11 23 59 00 精華區 原文主題 資料庫 安卓開發 先給出服務端的架構圖。根據需求和原型設計,可能的模組劃分如下 服務端與客戶端使用json交換資料,使用自定義json格式,約定返回code message,實體封裝在result中,支援單個實體 實體列表 多個實體列表...