Node.js项目

这里mongose语言可以参考https://www.jianshu.com/p/2f54b90efe15

首先配置好入口文件app.js

app.js中比较重要的两个模块是express  swig(用于解析模板内容)

文件解析模板swig的配置

利用res.render()解析指定目录下的文件  由于我们在前面配置swig的时候我们已经指定了路径为./views

所以当我们render的时候只需要写index就会自动查找到 views目录下的index后缀为html的文件并解析给前端

开发过程中  我们可以设置在 app.js入口文件中将cache为false 以便不用每次都重启服务

那么我们如何处理静态文件呢??比如处理css js文件?

答案是在app.js入口文件上使用app.use()中间键

当link href='localhost:8081/public/main.css'时会找到public目录下的main.css并解析

当然如果我们将所有的模块都写在app.js中,那这个文件会显得很臃肿  我们可以在app.js中充分使用 app.use()

来进行分模块开发

我们来看看router目录下admin.js文件怎么写

这样写的意思是当我们url为:localhost:8081/admin/..时通过中间键我们就会进入router目录下admin.js中并会通过router.get()找到对应的/user请求

注意的是必须要将文件exports出去  注意是module.exports

相当于将router对象通过require给app.use()作为第二个参数

注意一下这里api.js的作用主要是用于连接前端js的ajax请求与后端简单数据库操作

体现分模块开发的思想

在这些准备工作做好后就开始搭建和设计我们的数据库结构,这里用的是芒果

安装好mongoDB后切换到cmd  cd到MG安装目录输入以下 开启服务

主要这里dbpath为项目存储数据库内容的目录地址  port为端口号

像Mysql一样  我们可以利用可视化软件来操作 这里我们利用Robomongo

然后回到node中 利用mongose来建立与数据库的连接

接着我们在schema目录下建一个user.js用来创建数据库表结构

(注意schema目录只用于设计芒果数据库文档结构!!!)

接着再建立一个modle目录用来创建增删改查的mg类!

(注意models目录只用于数据库文档结构的增删改查类的创建!!!)

mongoose.model()会返回一个对象  对象里有操作数据库的api  比如creat()   save()等

接着我们可以开始写首页的HTML内容了 

先实现注册功能:

然后接口实现:

首先我们require body-parser模块来处理post请求的参数

并且使用app.use()注册 以便在其他js文件的req对象中具备body方法

这里我们就可以通过req.body获得post请求到的参数

注册api实现

 然后将我们注册信息写入mongoDB中

注意后面那个then()是user.save()return出来的primise

另外  我们如果是要增删改等操作数据库时必须是使用schemas的实例 也就是说必须先new 

比如下面的new User({}) 才能使用save()

注意这里返还数据给前端JS是通过res.json()的方式 (而node后端如果要渲染页面则是通过res.render('xxx.html',{传递的参数})) 返回一个对象给前端

然后前端js根据返回的信息进行下一步操作(通过显示登录模块,隐藏注册模块)

登录的逻辑和注册基本一致  只要跟数据库存放的数据全等就返回登录成功

为了保持用户登录状态  我们这里用到了cookier模块

利用app.use()注册 意思是当用户一进入界面就开始执行function中的内容

用了模板做登录状态判断后  我们就可以直接刷新页面重新发送带有cookier的请求就能判断状态了

然后写退出逻辑

后台处理

在api.js中 通过重新设置cookies并将值设为null  这里当前端刷新的时候就取不到cookier值  则显示未登录状态

接着我们通过在数据库中增加一条字段来判断登录者是否为管理员

接下来就可以开始编写后台管理界面了

后台界面的书写可以借用bootstrap  还有我们可以利用模板给我们提供的继承与占位功能来实现模块化开发

后台用户管理界面实现

利用jsp来渲染数据

当我们前端要渲染的数据较多时 我们需要进行分页展示,前端通过在url中添加page参数

优化了一下分页逻辑  增加了对page取值的判断  不能大于总页数  不能为负数

将总条数count   总页数pages   每页几条数据limit等信息传给html中

然后进行文章管理

搭建数据库表结构

实现删除功能

前端分类信息渲染

所有的路由路径都需要加个/  比如/admin/index    不然会默认在前面补全地址 从而导致404

注意:这里Content要替换成Category

数据库内容修改!::

内容删除:

猜你喜欢

转载自blog.csdn.net/weixin_41421227/article/details/81736217