博客内容管理系统详解

一、更新内容

数据库重新设计,改成以用户分组的subDocs数据库结构

应数据库改动,所有接口重新设计,并统一采用和立马理财一致的接口风格

删除原来游客模式,增加登录注册功能,支持弹窗登录。

增加首页,展示最新发布文章和注册用户

增加修改密码,登出,注销等功能。

优化pop弹窗组件,更加智能,更多配置项,接近网易$.dialog组件。并且一套代码仅修改了下css,实现相同接口下pc端弹窗和wap端toast功能。

增加移动端适配

优化原来代码,修复部分bug。

更多的更新内容请移步项目CMS-of-Blog_Production和CMS-of-Blog。

二、核心代码分析

1. 数据库

对原数据库进行重新设计,改成以用户分组的subDocs数据库结构。这样以用户为一个整体的数据库结构更加清晰,同时也更方便操作和读取。代码如下:

代码一开始新定义了三个Schema:articleSchema、linkSchema和userSchema。而userSchema里又嵌套了articleSchema和linkSchema,构成了以用户分组的subDocs数据库结构。Schema是一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力。然后将将该Schema发布为Model。Model由Schema发布生成的模型,具有抽象属性和行为的数据库操作对。由Model可以创建的实体,比如新注册一个用户就会创建一个实体。

数据库创建了之后需要去读取和操作,可以看下注册时发送邮箱验证码的这段代码感受下。

后台接受到发送邮箱验证码的请求后,会初始化一个tmp的用户。通过new db.User()会创建一个User的实例,然后执行save()操作会将这条数据写到数据库里。如果在半小时内没有注册成功,通过匹配邮箱,然后db.User.remove()将这条数据删除。更多具体用法请移步官方文档。

2. 后台

将所有请求分为三种:

ajax异步请求,统一路径:/web/

公共页面部分,如博客首页、登录、注册等,统一路径:/

与博客用户id相关的博客部分,统一路径:/:id/

这样每个用户都可以拥有自己的博客页面,具体代码如下:

具体的ajax接口代码大家可以看server文件夹下的index.js文件。

3. pop/toast组件

3.1 pop/toast组件配置参数说明

pop: 弹窗的显示与否, 根据content参数,有内容则为true

css: 自定义弹窗的class, 默认为空

showClose: 为false则不显示关闭按钮, 默认显示

closeFn: 弹窗点击关闭按钮之后的回调

title: 弹窗的标题,默认’温馨提示’, 如果不想显示title, 直接传空

content(required): 弹窗的内容,支持传html

btn1: ‘按钮1文案|按钮1样式class’, 格式化后为btn1Text和btn1Css

cb1: 按钮1点击之后的回调,如果cb1没有明确返回true,则默认按钮点击后关闭弹窗

btn2: ‘按钮2文案|按钮2样式class’, 格式化后为btn2Text和btn2Css

cb2: 按钮2点击之后的回调,如果cb2没有明确返回true,则默认按钮点击后关闭弹窗。按钮参数不传,文案默认’我知道了’,点击关闭弹窗

init: 弹窗建立后的初始化函数,可以用来处理复杂交互(注意弹窗一定要是从pop为false变成true才会执行)

destroy: 弹窗消失之后的回调函数

wapGoDialog: 在移动端时,要不要走弹窗,默认false,走toast

3.2 pop/toast组件代码

3.3 pop/toast组件参数格式化代码

为了使用方便,我们在使用的时候进行了简写。为了让组件能识别,需要在vuex的action里对传入的参数格式化。

为了让移动端兼容pop弹窗组件,我们采用mediaQuery对移动端样式进行了更改。增加参数wapGoDialog,表明我们在移动端时,要不要走弹窗,默认false,走toast。这样可以一套代码就可以兼容pc和wap。

后记

这里主要分析了下后台和数据库,而且比较简单,大家可以去看源码。总之,这是一个不错的前端入手后台和数据库的例子。功能比较丰富,而且可以学习下vue.js。

相关推荐:

最全的PHP开源内容管理系统CMS

20 个 PHP CMS开源内容管理系统

基于laravel框架内容管理系统

以上就是博客内容管理系统详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2786308.html

(0)
上一篇 2025年3月8日 17:42:19
下一篇 2025年3月7日 13:48:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • react轮播图组件react-slider-light详解

    本文主要和大家分享react轮播图组件react-slider-light详解,希望能帮助到大家。 react-slider-light a lightweight slider component built with react. 一个…

    编程技术 2025年3月8日
    200
  • React组件生命周期详解

    在使用react创建组件的过程中,会调用一个render方法,以及触发若干生命周期的方法。本文主要和大家讲一讲这些生命周期的方法是何时被执行的。 理解组件的生命周期,当组件被创建或销毁时,可以执行某些操作。此外,当 props 和 stat…

    2025年3月8日 编程技术
    200
  • js控制文件拖拽及获取拖拽内容

    在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题。 拖拽事件 js能够监听到拖拽的事件有drag、dragend、dragent…

    编程技术 2025年3月8日
    200
  • JS函数实例详解

    函数是由事件驱动的或者当它被调用时执行的可重复代码块,JavaScript函数语法,函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionname(){     这里是要执行的代码 } 当调用…

    编程技术 2025年3月8日
    200
  • js编译和执行顺序详解

    Javascript是一段一段执行的,以script标签来分割,执行每一段之前,都有一个“预编译”, 预编译干的活有两:1.声明所有var变量(初始为undefined),2.解析定义式函数语句。  有个关于 “window作用域下,a =…

    编程技术 2025年3月8日
    200
  • JS原型详解说明

    本文主要和大家分享JS原型详解说明,原型的5个规则,希望本文能帮助到大家。 所有的引用类型(数组,对象,函数),都具有对象特性,即可自由扩展属性(除了“null”) var obj ={};obj.a=100//100var arr=[];…

    编程技术 2025年3月8日
    200
  • js变量提升详解

    1.JavaScript代码执行分为两个阶段: 预解析阶段:在预解析阶段,js会对以var声明的变量,和function开头的语句块进行提升,将var声明的变量和function 提升至代码的最前面。需要注意的时,function整体提升,…

    编程技术 2025年3月8日
    200
  • js普通函数和构造函数详解

    本文主要和大家分享js普通函数和构造函数,希望能帮助大家更好理解什么是js普通函数和构造函数。 1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数的区别在于:调用方式不一样 3、普通函数…

    2025年3月8日 编程技术
    200
  • js数组去重和排序详解

    本文主要和大家分享js数组去重和排序详解,希望能帮助到大家。 1、用 indexof  查看是否存在,不存在没添加 var arr = [‘aa’,’aa’,’aa’,’bb’,’bb’,3,5,8,9,4,5,4];function un…

    编程技术 2025年3月8日
    200
  • JS异步编程实例详解

    JS语言的执行环境是“单线程”为什么会出现异步编程呢? 单线程是指一次只能完成一件任务。如果有多个任务的话就必须排队,等前面的任务执行完才能执行下一个任务。 两种任务执行模式:同步和异步 “异步模式”: 回调函数是异步编程最基本的方法。每一…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论