设为首页 收藏本站
查看: 1272|回复: 0

[经验分享] 使用express4.X + jade + mongoose + underscore搭建个人电影网站

[复制链接]
发表于 2017-2-23 10:11:06 | 显示全部楼层 |阅读模式
  (-。-;), 周末过得真是快啊,  很久以前就看到imooc上有个搭建个人电影网站一期 ,二期的视频, 这两周宅家里撸玩没事干, 我也学着搭了一个, 这些东西都是基础, 只要花点时间很好学的, nodeJS这东东就是轻量级, 哪里不爽点哪里。
  如果你学着写完可以学到:


  •   express新建项目
  •   express自带的jade模板引擎的使用
  •   express的路由管理
  •   express中的权限管理
  •   express如何与mongoose结合, 以及mongoose中的schema和model的使用方法, and CRUD( you know what do i say o(^▽^)o)
  •   underscore的前端模板的使用
  •   grunt的nodemon模块和concurrent模块使用方法;
  •   如何通过mongo-connect这个npm模块保存用户的信息(session);
  ....
  整个网页主要包含了以下四个模块:



主页 ( ?? ω ?? )y;
列表页
电影详情页
管理页
电影新增
电影删除
电影信息编辑
注册
登陆
登出
通过路由进行权限管理

用户的评论
用户评论互评

  慕课网nodeJS的讲师Scott提供的Github地址是:打开  ,这个项目的express是3.x系列的,所以使用express4.x系列的肯定跑不起来,然后我自己写了一个4.x的,Github的项目地址是:没有, 但是你可以点击这里下载源码, 作为学习的参考, 等我把界面再做漂亮点, 功能更好的时候就传Git;
  项目的主要目录结构跟平常的express默认结构差不多
DSC0000.png

  项目所依赖的模块还挺多的.... 全安装就好了; DSC0001.png
  其实bower, less和jslint, mocha, karma, kaola....我都没有用, 太高端了用不起来..工具真心太多了;
  主界面大概是这样的,可以先睹为快:
DSC0002.png

  视频界面如下, 新增视频的时候填写的地址默认有一个youku的视频地址, 图片默认是博客园的logo图片;
DSC0003.png

  在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进行刷新, 界面的美化(无视这句话)等; DSC0004.jpg
  end

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346057-1-1.html 上篇帖子: 淘宝RubyGems和NPM镜像的使用 下篇帖子: 新生帝之2015年的计划!必须完成!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表