摘要:項目啟動簡單啟動首先,新建一個項目工程目錄,然后在目錄下創建啟動文件。這里會用到框架來實現相關功能,所以,需要先安裝它。然后我們就開始修改視圖頁面,添加單擊事件,例如注冊對應函數,大致如下通過方法進行序列化表單值,創建文本字符串。
1、項目啟動
簡單啟動
首先,新建一個項目工程目錄,然后在目錄下創建啟動文件app.js。
這里會用到Express框架來實現相關功能,所以,需要先安裝它。
在啟動文件添加如下內容,來測試Express框架是否引用成功。
let express = require("express"); let app = express(); app.get("/", function (req, res) { res.send("Hello World!"); }); app.listen(80);
瀏覽器查看結果顯示"Hello World!",如收到響應信息則表明我們項目的第一步已經成功搞定。
2、創建目錄項目已經啟動成功,下面我們開始創建相關目錄,用于存儲不同的文件。
public目錄:存放靜態文件。
routes目錄:存放路由文件。
views目錄: 存放頁面文件。
common目錄:存放公共文件。
public目錄(可不選),新建javascripts、stylesheets、images三個目錄用以存儲js、css、img相關文件。
這里我們內置了一些js、css文件來實現簡單頁面樣式和操作,在頁面視圖中直接使用即可,引用方法如下:
3、添加注冊視圖頁面
添加文件
有了目錄,我們開始添加文件,先來添加一個登錄頁面register.html,便于管理和開發,統一把視圖頁面放到views目錄下。
views目錄,添加register.html注冊視圖頁,如下簡單效果圖:
有了視圖頁面,我們就可以訪問它了,那要如何訪問呢,這里就要使用到ejs模板了,安裝方法npm install ejs --save,引用如下:
app.set("view engine", "html"); app.engine(".html", require("ejs").__express);
使用engine函數注冊模板引擎并指定處理后綴名為html的文件。
設定視圖存放的目錄:
app.set("views", require("path").join(__dirname, "views"));
如果是在本地項目中,我們還要指定本地靜態資源訪問的路徑,如下設置:
app.use(express.static(require("path").join(__dirname, "public")));4、訪問注冊視圖頁面
訪問注冊頁
有了視圖頁面,下面我們就開始訪問它,app.js文件部分內容,引入相關模塊資源,然后簡單訪問如下:
app.get("/", function (req, res) { res.render("register"); }); app.listen(80);
啟動訪問80端口,如成功看到注冊頁面則表示項目已經運行成功,如未看到,查看相關錯誤信息,是否缺少相關模塊,安裝和引用即可。
5、定義user集合Schema定義Schema
首先在common目錄內添加models.js文件用來保存各個集合的Schema文件(集合屬性),也便于我們查看和訪問,具體內容如下所示:
module.exports = { user: { name: {type: String, required: true}, password: {type: String, required: true}, gender: {type: Boolean, default: true} } };
有了集合的Schema文件,如何訪問呢,接著我們會介紹如何使用Model模型操作這些屬性。
6、創建公共方法還是common目錄,我們在新建一個公共方法 —— dbHelper.js文件,來操作這些Schema,因為后面還會涉及此問題,所以我們寫成一個公共的方法,dbHelper文件內容如下:
let mongoose = require("mongoose"), Schema = mongoose.Schema, models = require("./models"); for (let m in models) { mongoose.model(m, new Schema(models[m])); } module.exports = { getModel: function (type) { return _getModel(type); } }; let _getModel = function (type) { return mongoose.model(type); };
如上所示我們通過getModel可獲取集合的Model模型就可以對數據庫有實質性的操作了。
關于Model,簡單介紹:由Schema構造生成的模型,具有數據庫操作的行為。
7、添加注冊頁單擊函數添加函數
關于dbHelper.js文件里方法的訪問很簡單,如下所示:
global.dbHelper = require("./common/dbHelper");
這里我們使用global來定義全局變量dbHelper,那么dbHelper就可以在任何模塊內調用了。
然后我們就開始修改register視圖頁面,添加單擊事件,例如:
對應register()函數,大致如下:
function register() { //通過serialize()方法進行序列化表單值,創建文本字符串。 var data = $("form").serialize(); //例如:"username=張三&password=12345" $.ajax({ url: "/register", type: "POST", data: data, success: function (data, status) { if (status == "success") { location.href = "register"; } }, error: function (res, err) { location.href = "register"; } }) }8、添加注冊頁請求路由
添加路由
這里我們需要新建一個文件register.js,專門用來處理來自register頁面的post請求, 在后面還會有多個不同處理文件,所以統一管理在routes目錄下,在實際開發中我們可能需要針對不同文件請求給出相應文件的處理,所以我們就做分開處理。
這里register.js文件處理get和post請求的相關代碼如下:
//app:express對象 module.exports = function (app) { app.get("/register", function (req, res) { res.render("register"); }); app.post("/register", function (req, res) { var User = global.dbHelper.getModel("user"), uname = req.body.uname; User.findOne({name: uname}, function (error, doc) { if (doc) { req.session.error = "用戶名已存在!"; res.send(500); } else { User.create({ name: uname, password: req.body.upwd }, function (error, doc) { if (error) { res.send(500); } else { req.session.error = "用戶名創建成功!"; res.send(200); } }) } }) }) };9、模塊的加載和引用
register的post請求處理中,我們使用了session(express-session模塊)還有處理post請求數據的body屬性(body-parser和multer模塊),需先安裝他們,然后引用即可,如下參考:
//引用模塊 var bodyParser = require("body-parser"); var multer = require("multer"); var session = require("express-session"); //調用中間件 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(multer());
后面還會再次添加多個路由記錄,所以便于管理和訪問,我們可以把他們統一放到一起,比如routes目錄下新建index.js文件專門用來存放添加的文件,代碼如下:
module.exports = function (app) { require("./register")(app); };
那么我們在app.js文件中直接引用index.js文件就可以訪問這些文件了,在index.js下寫入:
require("./routes")(app);//app:express對象10、中間件傳遞信息
這里我們就一步到位,在register的post請求處理中我們使用了express-session模塊來保存相關信息,這里我們就使用中間件來傳遞這些提示信息,中間件內容如下所示:
app.use(function (req, res, next) { res.locals.user = req.session.user;//保存用戶信息 var err = req.session.error;//保存結果響應信息 res.locals.message = "";//保存html標簽 if (err) { res.locals.message = "" + err + "" } else { next(); } });
這里注意中間件的安放位置,還有我們設置了變量message并為其簡單添加了樣式,這里我們在register視圖里就用它來作為操作結果的信息提示,直接添加<%- message %>到視圖第一個div內即可。
關于注冊我們基本已經準備就緒,開始打開連接數據庫并設置用戶過期時間(注意執行順序,應放置在首個中間件位置),app.js條件內容如下:
mongoose.Promise=global.Promise; mongoose.connect("mongodb://127.0.0.1/test"); app.use(session({ secret: "secret", cookie: { maxAge: 1000 * 60 * 30 } }));
到這里,注冊功能已經完畢,在用戶注冊的信息錄入中,我們沒有進行相關的為空、兩次密碼的不匹配等等驗證等等(可自行添加),趕緊注冊試試吧,本地的話可以通過MongoVUE(可視化客戶端)來查看數據是否成功寫入數據庫。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19012.html
摘要:用戶注冊模塊的設計與實現注冊模塊功能設計介紹功能本模塊主要用于新用戶注冊,用戶通過表單提供用戶名和密碼信息,系統根據用戶提供的注冊信息對用戶進行具體操作。如果身份合法,則用戶可進入商品頁面。 1、用戶注冊模塊的設計與實現 注冊模塊功能設計介紹 功能:本模塊主要用于新用戶注冊,用戶通過表單提供用戶名和密碼信息,系統根據用戶提供的注冊信息對用戶進行具體操作。 輸入操作:用戶名、密碼、確認密...
摘要:登錄之后,用戶可以對相關商品進行選購并添加到購物車。結構劃分項目主要分為以下幾大模塊注冊模塊,登錄模塊,商品模塊購物車模塊結算模塊。購物車模塊對相關商品進行增加減少刪除操作。結算模塊對購物車內已選擇商品進行結算。 1、功能介紹 用戶可以完成注冊、登錄,登錄后對商品進行瀏覽。 登錄之后,用戶可以對相關商品進行選購并添加到購物車。 用戶可以對購物車里面的商品進行增加、減少、刪除操作。 用...
摘要:添加商品頁視圖商品頁視圖用戶登錄成功之后則跳轉至視圖頁面商品主頁,就可以進行對商品的瀏覽和選擇了。 1、添加登錄視圖 添加視圖 前面我們已經實現了注冊功能,用戶可以成功注冊,接著我們就開始讓用戶登錄了,此節我們就實現用戶的登錄功能,并且登錄成功后跳轉商品頁面查看商品。 首先,我們還是在views目錄下添加登錄視圖頁面 —— login.html,效果圖如下: showImg(http:...
閱讀 429·2019-08-29 12:44
閱讀 3008·2019-08-26 17:49
閱讀 2425·2019-08-26 13:40
閱讀 1183·2019-08-26 13:39
閱讀 3660·2019-08-26 11:59
閱讀 1823·2019-08-26 10:59
閱讀 2461·2019-08-23 18:33
閱讀 2695·2019-08-23 18:30