使用express4.X + jade + mongoose + underscore搭建我的電影網站

  (-。-;), 週末過得真是快啊,  好久之前就看到imooc上有個搭建我的電影網站一期 ,二期的視頻, 這兩週宅家裏擼玩沒事幹, 我也學着搭了一個, 這些東西都是基礎, 只要花點時間很好學的, nodeJS這東東就是輕量級, 哪裏不爽點哪裏。前端

  若是你學着寫完能夠學到:node

  1.   express新建項目
  2.   express自帶的jade模板引擎的使用
  3.   express的路由管理
  4.   express中的權限管理
  5.   express如何與mongoose結合, 以及mongoose中的schema和model的使用方法, and CRUD( you know what do i say o(^▽^)o)
  6.   underscore的前端模板的使用
  7.   grunt的nodemon模塊和concurrent模塊使用方法;
  8.   如何經過mongo-connect這個npm模塊保存用戶的信息(session);

  ....git

 

  整個網頁主要包含了如下四個模塊:github

主頁 ( ?? ω ?? )y;
列表頁
電影詳情頁

管理頁
電影新增
電影刪除
電影信息編輯

註冊
登錄
登出

經過路由進行權限管理
用戶的評論 用戶評論互評

 

  慕課網nodeJS的講師Scott提供的Github地址是:打開  ,這個項目的express是3.x系列的,因此使用express4.x系列的確定跑不起來,而後我本身寫了一個4.x的,Github的項目地址是:沒有, 可是你能夠點擊這裏下載源碼, 做爲學習的參考, 等我把界面再作漂亮點, 功能更好的時候就傳Git;ajax

 

  項目的主要目錄結構跟日常的express默認結構差很少mongodb

 

  項目所依賴的模塊還挺多的.... 全安裝就行了;數據庫

 

   其實bower, less和jslint, mocha, karma, kaola....我都沒有用, 過高端了用不起來..工具真心太多了;express

   主界面大概是這樣的,能夠先睹爲快:npm

 

  視頻界面以下, 新增視頻的時候填寫的地址默認有一個youku的視頻地址, 圖片默認是博客園的logo圖片;小程序

 

 

  在mongoose中定義模型的靜態方法實例方法是比較重要的, 以及經過設置字段類型爲ObjectId進行關聯引用別的表指定_id的字段,我貼上些代碼防忘記:

var mongoose = require("mongoose");
var ObjectId = mongoose.Schema.Types.ObjectId;
console.log(  mongoose.Schema.Types.ObjectId )
var CommentSchema = new mongoose.Schema({
    movie_id : String,
    replys : [
        {
            to : {
                //至關因而引用了User表下_id值爲指定值的單元
                type : ObjectId,
                ref : "UserSchema"
            },
            from : {
                type : ObjectId,
                ref : "UserSchema"
            },
            content : String,
            time : {
                type : String,
                default : Date.now()
            }
        }
    ]
});

CommentSchema.statics = {
    fetch : function(cb) {
        return this.find({}).exec(cb);
    },
    findById : function(id,cb) {
        return this.findOne({_id:id}).exec(cb);
    },
    findByMovieId : function(movie_id,cb) {
        return this.findOne({movie_id:movie_id}).exec(cb)
    },
    findByMovieIdExec : function(movie_id) {
        return this.findOne({movie_id:movie_id});
    }
};

//每一次保存以前會調用這個方法;
CommentSchema.pre("save",function(next) {
    next();
});

//爲mongodb定義了這個數據模型, 這個數據模型和當前的數據庫綁定了;
                                       //這個就是數據庫內部的table名字;
var Comment = mongoose.model("CommentSchema",CommentSchema);
module.exports =  Comment;

 


  對於慕課網中的教程進行了一些改進, 好比評論的發佈和拉取我經過ajax實時刷新獲取, 以及視頻的刪除不跳轉界面等, 也經過ajax進行刷新, 界面的美化(無視這句話)等;

end

做者: NONO
出處:http://www.cnblogs.com/diligenceday/
企業網站:http://www.idrwl.com/ 廈門點燃將來網絡科技
開源博客:http://www.github.com/sqqihao
QQ:287101329
微信:18101055830 

廈門點燃將來網絡科技有限公司, 是廈門最好的微信應用, 小程序, 微信網站, 公衆號開發公司

相關文章
相關標籤/搜索