Express 网站开发_html/css_WEB-ITnose
express开发一个简单的网站,网页模板引擎使用 jade,样式基于 bootstrap,数据库使用 MongoDB
环境搭建
$ npm install express jade mongooes
首先需要是 node环境,使用 npm安装 express jade和 mongoose, 然后使用 bower 安装 bootstrap。
安装 bower 通过 npm install bower -g, bower 是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源。
$ bower install bootstrap
搭建完成后目录结构
├── app.js # 启动文件├── bower_components # bower 安装的库│ ├── bootstrap│ └── jquery├── node_modules # npm 安装的依赖库│ ├── express│ ├── jade│ ├── moment│ └── mongoose├── package.json └── views # 视图模板 ├── includes │ ├── head.jade │ └── header.jade ├── layout.jade └── pages ├── admin.jade ├── detail.jade ├── index.jade
创建视图
layout.jade基础布局,所有的网页都是基于该布局
doctypehtml head meta(charset="utf-8") title #{title} include ./includes/head body include ./includes/header block content
head.jade放一些 css js 引用
link(href="/bootstrap/dist/css/bootstrap.min.css", rel="stylesheet")script(src="/jquery/dist/jquery.min.js")script(src="/bootstrap/dist/js/bootstrap.min.js")
header.jade所有网页通用的 header
.container .row .page-header h1 #{title}
index.jade,主界面,影片列表
extends ../layoutblock content .container .row each item in movies .col-md-2 .thumbnail a(href="/movie/#{item._id}") img(src="#{item.poster}", alt="#{item.title}") .caption h3 #{item.title} p: a.btn.btn-primary(href="/movie/#{item._id}", role="button") 观看预告片
detial.jade影片详情页,展示某个影片的详细信息
extends ../layoutblock content .container .row .col-md-7 <video width="100%" controls="" autoplay="false" name="media"><source src="#{movie.flash}"></video> .col-md-5 dl.dl-horizontal dt 电影名字 dd #{movie.title} dt 导演 dd #{movie.director} dt 主演 dd #{ movie.actor} dt 国家 dd #{ movie.country} dt 语言 dd #{movie.language} dt 上映年份 dd #{ movie.publishTime} dt 类型 dd #{movie.type} dt 简介 dd #{movie.summary}
admin.jadeAdmin 界面,录入影片信息。
extends ../layoutblock content .container .row form.form-horizontal(method="post",action="/admin/movie/new") .form-group label.col-sm-2.control-label(for="inputTitle") 电影名字 .col-sm-10 input#inputTitle.col-sm-10.form-control(type="text",name="movie[title]") .form-group label.col-sm-2.control-label(for="inputDirector") 导演 .col-sm-10 input#inputDirector.col-sm-10.form-control(type="text",name="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]") .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]") .form-group label.col-sm-2.control-label(for="inputYear") 上映年份 .col-sm-10 input#inputYear.col-sm-10.form-control(type="text",name="movie[publishTime]") .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]")
list.jade影片列表编辑界面,编辑已有的文章。
extends ../layoutblock content .container .row table.table.table-hover.table-bordered thead tr th 电影名字 th 导演 th 国家 th 上映年份 //- th 录入时间 th 查看 th 更新 th 删除 tbody each item in movies tr(class="item-id-#{item._id}") td #{item.title} td #{item.director} td #{item.country} td #{item.publishTime} //- td #{moment(item.meta.createdAt).format('MM/DD/YYYY')} td: a(target="_blank", herf="../movie/#{item._id}") 查看 td: a(target="_blank", herf="../admin/update/#{item._id}") 修改 td button.btn.btn-danger.del(type="button", date-id="#{item._id}") 删除
路由
var express = require('express')var path = require('path')var port = process.env.PORT || 3000var app = express()app.set('views','./views/pages')app.set('view engine', 'jade')app.use(express.static(path.join(__dirname,'bower_components')))app.listen(port)console.log('server listening on poert:'+port)// indexapp.get('/',function (req,res) { res.render('index',{ title: '首页', movies: [ { title: '变形金刚1', _id: 1, poster: 'https://img3.doubanio.com/view/movie_poster_cover/mpst/public/p2332503406.jpg' }, { title: '变形金刚2', _id: 2, poster: 'https://img3.doubanio.com/view/movie_poster_cover/mpst/public/p2332503406.jpg' }, { title: '变形金刚3', _id: 3, poster: 'https://img3.doubanio.com/view/movie_poster_cover/mpst/public/p2332503406.jpg' }, { title: '变形金刚4', _id: 4, poster: 'https://img3.doubanio.com/view/movie_poster_cover/mpst/public/p2332503406.jpg' } ] })});// movie detailapp.get('/movie/:id',function (req,res) { res.render('detail',{ title: '详情页', movie:{ title:'美国队长3:内战', director: '安东尼·罗素 / 乔·罗素', editor : '克里斯托弗·马库斯 / 斯蒂芬·麦克菲利 / 杰克·科比 / 乔·西蒙', actor : '克里斯·埃文斯 / 小罗伯特·唐尼 / 斯嘉丽·约翰逊 / 塞巴斯蒂安·斯坦 / 安东尼·麦凯 / 更多...', type : '动作 / 科幻 / 冒险', link : 'marvel.com/captainamerica', country : '美国', language : '科萨语 / 英语 / 德语 / 俄语 / 罗马尼亚语', publishTime: ' 2016-05-06(中国大陆/美国) / 2016-04-12(加州首映)', duration : '148分钟(中国大陆) / 147分钟', alise : '美国队长3:内战 / 美国队长3:英雄内战(港/台) / 美队3 / Captain America 3', summary : '美国队长史蒂夫·罗杰斯(克里斯·埃文斯 Chris Evans 饰)带领着全新组建的复仇者联盟,继续维护世界和平。然而,一次执行任务时联盟成员不小心造成大量平民伤亡,从而激发政治压力,政府决定通过一套监管系统来管理和领导复仇者联盟。联盟内部因此分裂为两派:一方由史蒂夫· 罗杰斯领导,他主张维护成员自由,在免受政府干扰的情况下保护世界;另一方则追随托尼·斯塔克(小罗伯特·唐尼 Robert Downey Jr. 饰),他令人意外地决定支持政府的监管和责任制体系。神秘莫测的巴基(塞巴斯蒂安·斯坦 Sebastian Stan 饰)似乎成为内战的关键人物……', flash:'https://img3.doubanio.com/rda/8ffecbe972ad5cf.mp4' } })})//admin pageapp.get('/admin/movie', function (req, res) { res.render('admin', { title: 'imooc 后台录入页', movie: { director: '', country: '', title: '', publishTime: '', poster: '', language: '', flash: '', summary: '' } })})//admin pageapp.get('/admin/list', function (req, res) { res.render('list', { title: 'imooc 列表页', movies: [{ director: '乔斯·韦登', country: '美国', title: '复仇者联盟2', publishTime: '2015', _id:2, poster: 'http://img31.mtime.cn/mg/2015/03/27/120537.13212993_270X405X4.jpg', language: '英语', flash: 'http://v.youku.com/v_show/id_XODc4NDY0MjA4.html', summary: '影片讲述当钢铁侠试图启动处于休眠状态的维持和平计划时,事情出了差错。于是,在地球面临生死存亡的紧急关头时,强大的超级英雄们挺身而出承担起拯救世界的重任,他们将阻止可怕的人工智能机器人“奥创”制定恐怖计划。' }] })})
目前还是假数据,还没有使用 MongoDB。
运行 node app.js然后再浏览器打开 http://localhost:3000。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

公众号网页更新缓存,这玩意儿,说简单也简单,说复杂也够你喝一壶的。你辛辛苦苦更新了公众号文章,结果用户打开还是老版本,这滋味,谁受得了?这篇文章,咱就来扒一扒这背后的弯弯绕绕,以及如何优雅地解决这个问题。读完之后,你就能轻松应对各种缓存难题,让你的用户始终体验到最新鲜的内容。先说点基础的。网页缓存,说白了就是浏览器或者服务器为了提高访问速度,把一些静态资源(比如图片、CSS、JS)或者页面内容存储起来。下次访问时,直接从缓存里取,不用再重新下载,速度自然快。但这玩意儿,也是个双刃剑。新版本上线,

本文展示了使用CSS为网页中添加有效的PNG边框。 它认为,与JavaScript或库相比,CSS提供了出色的性能,详细介绍了如何调整边界宽度,样式和颜色以获得微妙或突出的效果

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

本文解释了HTML5&lt; time&gt;语义日期/时间表示的元素。 它强调了DateTime属性对机器可读性(ISO 8601格式)的重要性,并在人类可读文本旁边,增强Accessibilit
