NodeJS博客系统
1.NodeJS博客系统实战;
2.使用前提:会html,css,js的基础知识。
骑着代马去流浪
这个作者很懒,什么都没留下…
展开
-
NodeJS博客实战01_安装模块、创建项目目录和启动第一个服务
安装好nodejs是项目开始前必须的条件,安装好后即可在终端查看node版本:1.安装模块在一个父级以及父级以上非中文命名的文件夹新建一个文件夹,当做该博客项目目录(如果含有中文安装模块会报错),这里命名为blog文件夹打开终端进入该文件夹运行:npm init根据提示输入相应的项目名称,项目名称后面的其他选项直接回车默认,最后在blog文件夹下生产一个package.json的文件{ "na...原创 2018-03-20 23:00:39 · 1726 阅读 · 0 评论 -
NodeJS博客实战02_模板引擎的配置和使用
当页面内容比较多的时候,在绑定路由使用app.send()方法返回大量的html字符串是不现实的,需要配置模板使其返回对应的页面。配置swig模板引擎分为四个步骤:1)加载模板引擎2)配置模板引擎应用模板3)设置模板文件存放目录4)注册模板5)路由中返回模板代码如下://应用程序的启动入口文件//加载express模块var express = require('express');//创...原创 2018-03-21 13:19:59 · 893 阅读 · 0 评论 -
NodeJS博客实战03_静态文件托管
与模板文件的配置一样,样式或脚本等可以通过路由的方式或者托管的方式进行引入1.路由方式引入//应用程序的启动入口文件var express = require('express'); //加载express模块var swig = require('swig'); //加载模板处理模块var app = express(); //创建app应用,相当于nodeJS的http.createS...原创 2018-03-22 10:30:40 · 940 阅读 · 0 评论 -
NodeJS博客实战04_分模块开发
该博客项目的模块分为前台展示,后台管理和API接口三个模块,在app.js里面划分好这些模块,在各自模块进行开发app.js://应用程序的启动入口文件//加载模块var express = require('express'); //加载express模块var swig = require('swig'); //加载模板处理模块var app = express(); //创建app...原创 2018-03-22 21:46:29 · 1067 阅读 · 0 评论 -
NodeJS博客实战05_数据库连接和创建数据库模型类
1.数据库连接连接mongodb数据之前现在在当前操作系统上安装mongodb数据库并开启,安装方法如下连接:win10系统64位安装mongodbUbuntu16.04安装mongodb数据库默认mongodb开启后端口为27017;该博客项目中使用的是mongoose连接和操作mongo数据库,在app.js中先判断连接数据库是否成功,再执行端口监听防止连接失败继续执行以后的模块;使用mong...原创 2018-03-22 22:29:19 · 1807 阅读 · 0 评论 -
NodeJS博客实战06_前端注册页面
app.js文件为://应用程序的启动入口文件//加载模块var express = require('express'); //加载express模块var swig = require('swig'); //加载模板处理模块var app = express(); //创建app应用,相当于nodeJS的http.createService()var mongoose = requ...原创 2018-03-26 09:09:35 · 940 阅读 · 0 评论 -
NodeJS博客实战07_body-parser模块的使用
前端发送的数据请求需要后端获取,express的中间件模块body-parser可用于获取前端Post提交的数据在app.js中加载该模块,并进行配置,body-parser提供了bodyParser.json(),bodyParser.raw(),bodyParser.text(),bodyParser.urlencode()四种解析数据的方法,其中最后一种支持utf-8的解析方式,bodyPa...原创 2018-03-26 23:16:54 · 2516 阅读 · 0 评论 -
NodeJS博客实战08_用户注册和数据库验证
1.注册写入数据库在上一篇文章中在后端验证了用户注册输入信息不合法的情况,本篇主要讲解当用户输入合法后数据库写入的内容写入数据则需要对数据库进行操作,前面介绍了使用mongoose模块的Schema对象方法定义user的表结构,使用moogoose的model方法定义了模型类,通过对模型类的操作来操作数据库在api.js引入之前定义的数据库模型类命名为User,moogoose模型类提供了find...原创 2018-03-27 00:22:43 · 2296 阅读 · 0 评论 -
NodeJS博客实战09_用户登录的实现
用户登录与用户注册功能类似,都是将获取的数据发送给后端进行合法性判断,然后在执行数据库操作前端使用ajax将获取的登录信息发送给后端;将返回的信息展示在前端页面上,若登录成功,展示出欢迎面板,并附上用户名和隐藏登录面板;public/js/index.js:$(function(){ var toLogin = $('a.toLogin'), toRegister = $('a.toRegi...原创 2018-03-27 21:31:44 · 1553 阅读 · 1 评论 -
NodeJS博客实战10_cookie的使用
用户登录博客后退出前再次进入博客,用户进入博客的登录验证,还有用户信息的展示都可以通过cookies的设置实现;cookie的设置在该项目中需要依赖cookies模块;流程为:当用户登录后,后端将用户信息以cookie的形式发送给浏览器,当浏览器再次刷新或重新打开的时候,如果这cookie没有被清除,则浏览器会将其放在头部发送给服务器;服务器获取cookie后会尝试进行解析,解析成功是用户登录信息...原创 2018-03-27 23:05:27 · 880 阅读 · 0 评论 -
NodeJS博客实战11_普通用户与管理员登录
普通用户和管理员的区别空通过在数据库中增加一个字段实现,给每个用户设置一个字段为idAdmn,如果该用户为管理员,则值为true,否则为false;当用户登录后返回的userInfo存入cookie,处于安全性考虑,不含isAdmin字段,而是通过该用户id查询该用户是否是管理员,再将其返回给前端模板;前端模板通过判断该值展示对应的信息1.给数据库增加字段isAdmin/schemas/users...原创 2018-03-30 09:22:40 · 2509 阅读 · 4 评论 -
NodeJS博客实战12_后台管理功能和界面搭建
源码地址:点击打开链接管理员登录后点击可以进入管理页面,管理页面位于views/admin文件夹下;1)当非管理员用户通过url强制进入管理员页面时,需给出对应的提示并阻止其进入;在views/admin文件夹下新建index.html文件,在routers/admin.js的路由配置中,对于非管理员给出提示,对于管理员则调用模板文件并返回信息routers/admin.js:var expres...原创 2018-04-01 15:44:05 · 3124 阅读 · 0 评论 -
NodeJS博客实战13_后台管理注册用户展示
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog主要实现功能:1)登录后台管理后进入用户管理界面,通过查询数据库获取所有注册用户信息2) 将注册用户信息展示在界面上1.查询数据库获取所有用户信息调用moogose的user模型类的find()方法var express = require('express');var router = ...原创 2018-04-01 21:38:11 · 815 阅读 · 0 评论 -
NodeJS博客实战14_后台管理注册用户分页原理和实现
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog主要功能点:1)数据库的分页查询2)前台分页传参3)后端分页数据返回4)页头和页尾的分页处理实现思路:前端点击上一页或者下一页的时候将下一页的page信息传到后台,前提是前端的page为当前页信息,因此需要后台将page返回;后台获取前端传过来的page信息req.query.page默认p...原创 2018-04-01 21:38:19 · 1227 阅读 · 2 评论 -
NodeJS博客实战15_博客分类的添加
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog主要功能:1)在后台管理页面添加分类管理页面2)点击添加分类可以跳转到表单页面3)填写分类添加提交后台对分类进行非空验证4)将分类存入mongo数据库5)添加成功或者失败则跳转到成功或失败页面并提供跳转连接实现思路:1)首先要定义分类category的数据库结构,定义在schemas文件夹下...原创 2018-04-01 21:38:27 · 565 阅读 · 0 评论 -
NodeJS博客实战16_博客分类的修改和删除
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1)主要功能分类的列表展示;分类的修改;分类的删除;2)实现思路从数据库中获取分类,使用模板渲染到页面上;点击分类修改将该分类的id传到后台,在数据库中根据该id查找对应的分类信息到编辑页面,并对查找不到的信息进行处理,编辑提交需要对提交的分类名称在数据库中进行同名验证;删除分类直接根据id...原创 2018-04-04 10:24:25 · 513 阅读 · 0 评论 -
NodeJS博客实战17_前台分类的展示和排序
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog实现功能:1)在前台展示分类2)最新添加非分类展示在最前方实现思路:1)在routers/main.js中将分类从数据库中取出使用模板渲染到前台2)使用sort()方法对取出的categories数据进行排序1.前台分类展示routers/main.js:调用Category的模型类,从数据...原创 2018-04-08 09:12:44 · 665 阅读 · 0 评论 -
NodeJS博客实战18_博客内容的添加功能实现
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1,主要功能1)博客内容的添加2)博客内容添加页面展示分类列表3)博客列表展示关联分类2,实现思路1)创建博客内容的结构表,并在表中关联category表2)添加博客内容页面读取category表并展示出来3)博客列表展示使用populate方法关系category表3.代码展示:1)创建c...原创 2018-04-14 16:19:45 · 524 阅读 · 0 评论 -
NodeJS博客实战19_博客内容修改和删除
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能1)编辑内容页面的渲染2)编辑内容的分类加载3)编辑内容的的提交验证4)内容的删除2.实现思路1.使用findOne方法根据传过来的id查找相应的内容并返回2.使用模板渲染将返回的内容渲染到页面3.查找分类并渲染到列表上4.使用populate联表查到分类的id,使用模板渲染判断...原创 2018-04-14 20:05:03 · 554 阅读 · 0 评论 -
NodeJS博客实战20_博客添加阅读量,作者和创建时间扩展
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能1)添加创建者字段2)添加创建时间3)添加阅读量字段2.实现方法1)在创建content表结构中关联User表的字段,在读取内容列表时使用populate方法也把对应的创建者信息读取到2)在content表结构中添加时间字段,默认时间函数new Date(),使用模板引擎的过滤器...原创 2018-04-14 23:32:40 · 762 阅读 · 0 评论 -
NodeJS博客实战21_前台博客内容展示和分页
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能1)前台首页获取博客的所有内容信息,包括时间,用户,页数,分类等内容信息,并按照创建时间越晚越靠前的顺序返回给前台2)前台对数据进行模板渲染3)前台使用模板引擎进行分页使用到的都是之前用过的一些功能点2.主要代码1)routers/main.jsvar express = req...原创 2018-04-15 00:29:56 · 400 阅读 · 0 评论 -
NodeJS博客实战22_前台博客分类展示
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能点及实现:1)点击首页头部分类分别展示该分类下的文章,在头部a标签中添加href的category信息作为参数传到后端2)后端接收category和page参数作为查询条件3)使用模板语法处理前台分类展示的高亮状态4)每个分类的分页传参加上category条件2.相关代码1)ro...原创 2018-04-15 13:10:20 · 386 阅读 · 0 评论 -
NodeJS博客实战23_前台博客内容详情页和阅读数处理
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能及实现1)在前台点击阅读全文跳转到文章详情页面,因此需要在阅读全文按钮添加连接href为/view?contentid={{content.id}}2)后端根据contentid在数据库中查找对应的文章3)查找文章的同时就阅读数view自增1并保存4)前端的头部和右侧信息版面是公...原创 2018-04-15 13:10:08 · 548 阅读 · 1 评论 -
NodeJS博客实战24_前台博客评论展示
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能以及实现1)登录和未登录在评论区给出提示,使用模板条件判断,对未登录的给出登录提示2)评论提交包含评论当前文章的id,内容,时间和用户信息,其中用户信息是从session中获取3)在数据库中查找该文章的信息,并将评论存入,再返回所有的评论用户展示4)前台使用ajax提交评论,得到...原创 2018-04-15 13:17:37 · 649 阅读 · 1 评论 -
NodeJS博客实战25_前台博客评论分页展示
源码地址:https://github.com/RidingACodeToStray/Nodejs_blog1.主要功能1)每次打开文章加载评论2)若该文章没有评论则展示没有评论的信息3)对于上一页和下一页点击使用ajax的方式进行请求,没有上一页和没有下一页做处理4)分页中相关参数的计算等2.主要代码:1)public/js/comment.jsvar perpage = 2;var page...原创 2018-04-15 14:32:06 · 500 阅读 · 0 评论 -
NodeJS博客实战26_源码与总结
该系列的文章是根据《Nodes入门项目实战》课程敲出来的,是一个非常非常简陋的博客,几乎没对css样式做优化,也几乎没有做安全上的优化,因此仅作为新手的练习项目。项目源码地址:https://github.com/RidingACodeToStray/Nodejs_blog相关截图:首页:评论区:后台管理首页:用户管理:分类管理:内容管理:...原创 2018-04-15 14:38:31 · 3019 阅读 · 2 评论