基于Node.js + jade + Mongoose 模仿gokk.tv
基于Node.js + jade + Mongoose 模仿gokk.tv
原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn
关于gokk 大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高 。站长会推荐评分很高广受好评的电影给大家免费下载,整体来说真是不错,但前两月由于版权问题被迫转型 这也是没办法的事,程序员更应该尊重版权问题,我们也能理解,后来站长又开了gokk个不是给地址让你 下载,而是将网络一些优秀视频站点资源提供出来观看,质量变低了,好怀念以前的goxiazai啊。。
最近在学习Node.js,也看了imooc的源码 ,自己模仿gokk.tv的前台搭建了一个基于Node.js + Mongoose + Bootstrap,很简单的页面, 花了两天时间,第一次Node体验就交给gokk了,向goxiazai致敬!
展示 home首页一home
首页二home详情页home新增页
获取源码 源码托管于git
点击获取 https://github.com/hacke2/gokk
部署于运行 使用npm将项目打包,大家检出来后使用npm install即可安装
使用node app运行,数据库使用Mongdb,请自行安装,测试数据在test/db.js下
希望您能提出建议或意见
数据结构 movies 下面有columnName 表示栏目的名称,如电影、动画、娱乐等 movie是一个数组 里面放入Json对象,表示改栏目下的所有电影,这样非关系数据库的好处就是之前如果遵循低冗余 原则必须建立两张表来使column和movie一对多,后来感觉应该用两个Schema更合理
功能 首页、详情页、新增
未实现:分页、查看列表、后台删除、编辑
什么原因让我只写了个新增功能? 由于是第一次编写node,在编写的过程中遇到很多问题,虽然node提供了分页limit,但是 只能分一张表内的,比如movies这张表,不能对一条数据低下movie数组集合下分量取出。
后来在Mongoose学习参考文档——基础篇 看到有这么一个东西Sub Docs
如同SQL数据库中2张表有主外关系,Mongoose将2个Document的嵌套叫做Sub-Docs(子文档)简单的说就是一个Document嵌套另外一个Document或者Documents:
这可能是我想要的,但是第一次开发重点不是在Mongoose上,node的书还不是看的很多,这算是我的 一个学习过程中的小测试吧!计划开发两天时间,如果修改会越陷越深,我明白我现在的node开发流程有很大问题,流程不不正确 。我把在这上面越陷越深,写起来感觉效率真的不是很高,所以其他功能立即停止开发。
基于Node.js + Jade + Mongoose 模仿gokk.tv
关于gokk
大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高。站长会推荐评分很高广受好评的电影给大家免费下载,整体来说真是不错,但前两月由于版权问题被迫转型。这也是没办法的事,程序员更应该尊重版权问题,我们也能理解。后来站长又开了gokk,它不是一个给地址让你下载,而是将网络一些优秀视频站点资源提供出来观看,质量变低了,好怀念以前的goxiazai啊。
最近在学习Node.js
最近在学习Node.js,也看了imooc的源码,自己模仿gokk.tv的前台搭建了一个基于Node.js + Mongoose + Bootstrap的简单页面,花了两天时间,第一次Node体验就交给gokk了,向goxiazai致敬!
展示
- 首页:展示各个栏目的电影列表。
- 详情页:展示某部电影的详细信息。
- 新增页:允许用户添加新的电影信息。
获取源码
源码托管于GitHub:
<a href="https://github.com/hacke2/gokk">https://github.com/hacke2/gokk</a>
部署与运行
使用npm将项目打包,大家检出来后使用npm install
即可安装。
# 使用npm安装依赖
npm install
# 使用node app运行项目
node app
数据库使用MongoDB,请自行安装。测试数据在test/db.js
下。
数据结构
movies
集合下有一个columnName
字段,表示栏目的名称,如电影、动画、娱乐等。movie
是一个数组,里面放入JSON对象,表示该栏目下的所有电影。这样非关系数据库的好处就是之前如果遵循低冗余原则必须建立两张表来使column
和movie
一对多,后来感觉应该用两个Schema更合理。
功能
- 首页
- 详情页
- 新增页
未实现的功能
- 分页
- 查看列表
- 后台删除
- 编辑
为什么只实现了新增功能?
由于是第一次编写Node.js,在编写的过程中遇到了很多问题,虽然Node提供了分页limit
,但是只能分一张表内的数据,比如movies
这张表,不能对一条数据的movie
数组集合下分量取出。
后来在Mongoose学习参考文档——基础篇看到有这么一个东西叫Sub Docs
(子文档)。这可能是我想要的,但是第一次开发的重点不是在Mongoose上,Node的书还不是看的很多,这算是我的一个学习过程中的小测试吧!计划开发两天时间,如果修改会越陷越深,我明白我现在的Node开发流程有很大的问题,流程不正确。我把在这上面越陷越深,写起来感觉效率真的不是很高,所以其他功能立即停止开发。
项目半成品的原因
这也是项目半成品的一个原因,可以访问我的GitHub仓库查看代码:GitHub
以上内容展示了如何基于Node.js、Jade和Mongoose模仿gokk.tv进行开发,并且提供了部分示例代码和详细的开发过程说明。希望这些信息对你有所帮助。
基于Node.js + Jade + Mongoose模仿gokk.tv的项目展示了如何使用Node.js框架构建一个简单的电影网站。该项目主要包含了首页、详情页和新增页面的功能,同时利用Jade模板引擎进行页面渲染,并通过Mongoose与MongoDB进行数据交互。
以下是项目的一些关键点:
-
技术栈:
- Node.js作为服务器端JavaScript运行环境。
- Jade(现更名为Pug)作为模板引擎,用于生成HTML。
- Mongoose作为MongoDB的对象建模工具,用于处理数据库相关的逻辑。
-
数据结构:
movies
集合包含多个电影条目,每个条目包含columnName
字段,用于表示电影所属类别(如电影、动画、娱乐等)。movie
字段为一个数组,其中包含具体的电影信息。
-
功能实现:
- 首页显示所有电影分类及其对应的电影列表。
- 详情页展示单个电影的具体信息。
- 新增页面允许用户添加新的电影信息。
-
限制:
- 目前项目只实现了首页、详情页和新增页面的基本功能,尚缺乏分页、查看列表、后台管理等功能。
- 使用Mongoose时遇到了一些挑战,例如对数组集合进行分页处理的问题。
-
代码示例: 以下是一个简单的代码示例,展示了如何使用Mongoose定义电影模型和查询电影数据:
// models/movie.js const mongoose = require('mongoose'); const movieSchema = new mongoose.Schema({ columnName: String, movies: [{ title: String, description: String, year: Number, poster: String }] }); module.exports = mongoose.model('Movie', movieSchema);
// routes/movies.js const express = require('express'); const Movie = require('../models/movie'); const router = express.Router(); router.get('/movies', async (req, res) => { try { const movies = await Movie.find(); res.render('movies', { movies }); } catch (error) { console.error(error); res.status(500).send('Server Error'); } }); module.exports = router;
在上述代码中,我们定义了一个
Movie
模型,并在路由中通过Mongoose查询所有的电影信息,并将结果传递给Jade模板进行渲染。 -
获取源码: 该项目的源码托管于GitHub,你可以通过访问链接https://github.com/hacke2/gokk来获取并部署该项目。
-
部署运行: 通过
npm install
命令安装项目依赖,然后使用node app
命令启动项目。确保MongoDB已经安装并运行,数据库配置在项目的配置文件中设置。
希望这个项目能够帮助你更好地理解和实践Node.js、Mongoose和Jade的结合使用。