首页 > 代码库 > Nodejs电影建站开发实例(上)

Nodejs电影建站开发实例(上)

网站环境:使用express框架、bootstrap样式、jade模板、mongoose数据库

npm insatll express -gnpm insatll jada -gnpm insatll mongoose -g

1、创建express工程:myMovie

进入工程执行npm install,npm start 后 访问很正常,可以往下继续了

 技术分享

2、创建路由

初拟可能浏览的入口================

网站跟目录:localhost:3000/

某个电影详情页:localhost:3000/movie/1

后台电影添加页:localhost:3000/admin/add

后台列表页:localhost:3000/admin/list

根据所需修改app.js

var express = require("express");var app=express();//访问网站跟目录:localhost:3000/app.get("/",function(req,res){    res.send("网站首页");});//localhost:3000/movie/1app.get("/movie/:id",function(req,res){    res.send("电影详情");});//localhost:3000/admin/addapp.get("/admin/add",function(req,res){    res.send("后台电影添加页");});//localhost:3000/admin/listapp.get("/admin/list",function(req,res){    res.send("后台电影列表");});app.listen(3030,function(){    console.log("请访问http://localhost:3030");});

 

3、jade准备视图

index.jade主页、add.jade后台添加页、detail.jade(电影详情)、list.jade(后台电影列表)的准备,为了便于观察,放入基本的信息,用于关联jade视图

技术分享

app.js

var express = require("express");var app=express();var path = require(‘path‘);//设置模板引擎app.set("view engine",‘jade‘);app.set(‘views‘,‘./views/pages‘);//设置静态资源app.use(express.static(path.join(__dirname, ‘./public‘)));//访问网站跟目录:localhost:3000/app.get("/",function(req,res){    res.render(‘index.jade‘,{        title:‘网站首页‘,        movies:{}    });});//localhost:3000/movie/1app.get("/movie/:id",function(req,res){    res.render(‘detail.jade‘,{        title:‘电影详情‘,        movie:{}    })});//localhost:3000/admin/addapp.get("/admin/add",function(req,res){    res.render(‘control.jade‘,{        title:‘后台电影添加页‘,        movie:{}    });});//localhost:3000/admin/listapp.get("/admin/list",function(req,res){    res.render(‘list.jade‘,{        title:‘后台电影列表‘,      movies:{}    });});app.listen(3000,function(){    console.log("请访问http://localhost:3000");});

layout.jade

doctype htmlhtml   head    meta(charset="utf-8")    title #{title}    include ./includes/link.jade  body    include ./includes/header.jade    block content

header.jade

.container    .row        .page-header            h1 #{title}

index.jade、control.jade、detail.jade、list.jade

extends ../layout.jadeblock content

 

 

4、jade数据深化

app.js

技术分享
var express = require("express");var app=express();var path = require(‘path‘);//设置模板引擎app.set("view engine",‘jade‘);app.set(‘views‘,‘./views/pages‘);//设置静态资源app.use(express.static(path.join(__dirname, ‘./public‘)));//访问网站跟目录:localhost:3000/app.get("/",function(req,res){    res.render(‘index.jade‘,{        title:‘网站首页‘,        movies:[            {            _id:1,            title:"海绵宝宝3D",            poster: ‘http://img31.mtime.cn/mg/2015/11/17/094620.70277104_170X256X4.jpg‘            },             {            _id:2,            title:"星际迷航3",            poster:‘http://img31.mtime.cn/mg/2016/09/01/143653.31713698_170X256X4.jpg‘            },            {            _id:3,            title:"惊天绑架团",            poster:‘http://img31.mtime.cn/mg/2016/07/12/091819.79722823_170X256X4.jpg‘            },            {            _id:4,            title:"爱宠大机密",            poster:‘http://img31.mtime.cn/mg/2016/06/21/093149.12209704_170X256X4.jpg‘            },             {_id:5,            title:"冰川时代4",            poster:‘http://img31.mtime.cn/mt/2012/07/19/131845.38602455_170X256X4.jpg‘            }        ]    });});//localhost:3000/movie/1app.get("/movie/:id",function(req,res){    res.render(‘detail.jade‘,{        title:‘电影详情‘,        movie:{        title:‘海绵宝宝3D‘,        director:‘保罗·蒂比特‘,        country:‘美国‘,         language:‘英语‘,        year:2016,        poster:‘http://img31.mtime.cn/mg/2015/11/17/094620.70277104_170X256X4.jpg‘,        summary:‘安东尼奥·班德拉斯饰演的大反派海盗杰克现身,他找到了一本神奇的宝书,可是想要获得完全的力量,一定要找到书中的最后一页。经过调查,这宝贵的最后一页,正存在海绵宝宝的家里。‘,        flash:‘#‘        }    })});//localhost:3000/admin/addapp.get("/admin/add",function(req,res){    res.render(‘control.jade‘,{        title:‘后台电影添加页‘,        movie:{            title:‘‘,            director:‘‘,            country:‘‘,             language:‘‘,            year:‘‘,            poster:‘‘,            summary:‘‘,            flash:‘‘        }    });});//localhost:3000/admin/listapp.get("/admin/list",function(req,res){    res.render(‘list.jade‘,{        title:‘后台电影列表‘,      movies:[        {            _id:1,            title:‘海绵宝宝3D‘,            director:‘保罗·蒂比特‘        }      ]    });});app.listen(3000,function(){    console.log("请访问http://localhost:3000");});
View Code

index.jade

技术分享
extends ../layout.jadeblock content .container    .row        each item in movies           .col-md-2             .thumbnall                a(href="/movie/#{item._id}")                    img(src="#{item.poster}",alt="#{item.title}")                .caption                    h3 #{item.title}                    p: a.btn.btn-primary(href="http://www.mamicode.com/movie/#{item._id}") 查看详情
View Code

detail.jade

技术分享
extends ../layout.jadeblock content    .container        .row            .col-md-7                video(src="#{movie.flash}",autoplay="true",width="720",height="400")            .col-md-5                dl.dl-horizontal                    dt 电影名字                    dd=movie.title                    dt 导演                    dd=movie.director                    dt 国家                    dd=movie.country                    dt 上映年份                    dd=movie.year                    dt 简介                    dd=movie.summary
View Code

list.jade

技术分享
extends ../layout.jadeblock content    .container        .row            table.table.table-hover.table-bordered                thead                    tr                        th 电影名字                        th 导演                        th 查看                        th 更新                        th 删除                tbody                    each item in movies                        tr                            td #{item.title}                            td #{item.director}                            td: a(target="_blank",href="http://www.mamicode.com/movie/#{item._id}") 查看                            td: a(target="_blank",href="http://www.mamicode.com/movie/update/#{item._id}") 修改                            td                                 a.btn.btn-danger.del(type="button",href="http://www.mamicode.com/admin/delete?id=#{item._id}") 删除
View Code

control.jade

技术分享
extends ../layout.jadeblock content    .container        .row            form.form-horizontal(method="post",action="/admin/movie/do")                //电影名字                .form-group                    label.col-sm-2.control-label(for="inputTitle") 电影名字:                    .col-sm-10                        input#inputTitle.form-control(type="text",name="movie[title]",value="http://www.mamicode.com/#{movie.title}")                 //导演                .form-group                    label.col-sm-2.control-label(for="inputTitle") 导演:                    .col-sm-10                        input#inputDirector.form-control(type="text",name="movie[director]",value="http://www.mamicode.com/#{movie.director}")                 //国家                .form-group                    label.col-sm-2.control-label(for="inputCountry") 国家:                    .col-sm-10                        input#inputCountry.col-sm-10.form-control(type="text",name="movie[country]",value="http://www.mamicode.com/#{movie.country}")                 //语言                .form-group                    label.col-sm-2.control-label(for="inputLanguage") 语言:                    .col-sm-10                        input#inputLanguage.col-sm-10.form-control(type="text",name="movie[language]",value="http://www.mamicode.com/#{movie.language}")                //上映年份                .form-group                    label.col-sm-2.control-label(for="inputYear") 上映年份:                    .col-sm-10                        input#inputYear.col-sm-10.form-control(type="text",name="movie[year]",value="http://www.mamicode.com/#{movie.year}")                //简介                .form-group                    label.col-sm-2.control-label(for="inputSummary") 简介:                    .col-sm-10                        input#inputSummary.col-sm-10.form-control(type="text",name="movie[summary]",value="http://www.mamicode.com/#{movie.summary}")                .form-group                    .col-sm-2                    .col-sm-10                        input.btn.btn-default(type="submit",name="submit")
View Code

 各页效果预览

技术分享

 下载>>

目前,静态页面已经准备完毕,接着将接入mongodb

Nodejs电影建站开发实例(上)