博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DoraCMS 源码知识点备注
阅读量:6410 次
发布时间:2019-06-23

本文共 2130 字,大约阅读时间需要 7 分钟。

项目需要研究了下DoraCMS这款开源CMS,真心做的不错:)。用的框架是常用的express 4 + mongoose,代码也很规范,值得学习。

源码中一些涉及到的小知识点备注下:

https://github.com/doramart/DoraCMS

1、Robots协议 

  1)当搜索引擎访问到网站目录时,会判断当前是否存在Robots.txt;

  2)若存在则按照该文件的要求来限制访问;
  3)规则:
    User-agent: * 这里的*代表的所有的搜索引擎种类
    Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
    Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
    Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件
    Sitemap: 网站地图 告诉爬虫这个页面是网站地图

2、CMS的实现

  1)利用ueditor及node下插件

var ueditor = require('ueditor-nodejs');        app.use('/ueditor/ue', ueditor({
//这里的/ueditor/ue是因为文件件重命名为了ueditor,如果没改名,那么应该是/ueditor版本号/ue configFile: '/ueditor/jsp/config.json',//如果下载的是jsp的,就填写/ueditor/jsp/config.json mode: 'local', //本地存储填写local accessKey: '',//本地存储不填写,bcs填写 secrectKey: '',//本地存储不填写,bcs填写 staticPath: path.join(__dirname, 'public'), //一般固定的写法,静态资源的目录,如果是bcs,可以不填 dynamicPath: '/upload/blogpicture' }));

  2)ueditor 将编辑的信息以html格式传入后台并存储在数据库中,上述配置中的dynamicPath实现本地上传的图片,即保存一个本地的路径;

3、利用res.locals 存储一些全局变量,模板中可以直接使用

res.locals.logined = req.session.logined;res.locals.userInfo = req.session.user;

4、站点地图

  1)、通常是sitemap.xml 存储整个网站的结构, 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页;

  2)、在DoraCMS中,sitemap.xml并不是本地存储的文件,而是在用户访问时通过读取数据库生成,但利用redis缓存,缓存时间为1天;
    即当天的文档不更新至缓存;

5、利用validator扩展实现校验

validator.extend('isEn', function (str) {        return /^\S+[a-z A-Z]$/.test(str);        });

6、使用Redis缓存

getContentsCount : function(req,res,cateParentId,cateQuery,callBack){        cache.get(settings.session_secret + '_' + cateParentId + '_contentCount',function(contentCount){            if(contentCount) {                callBack(contentCount);            }else{                Content.count(cateQuery,function(err,count){                    if(err){                        res.end(err);                    }else{                        cache.set(settings.session_secret +  '_' + cateParentId + '_contentCount', count, 1000 * 60 * 60 * 24); // 缓存一天                        callBack(count)                    }                })            }        });    }

转载于:https://www.cnblogs.com/Fredric-2013/p/5761892.html

你可能感兴趣的文章
spring事务学习(转账案例)(二)
查看>>
[官方教程] [ES4封装教程]1.使用 VMware Player 创建适合封装的虚拟机
查看>>
http协议与http代理
查看>>
【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例...
查看>>
Redis+Spring缓存实例
查看>>
Storm集群安装详解
查看>>
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
分享Silverlight新鲜事 - Silverlight Firestarter全球会议
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>