mongodb学习笔记

1.下载:http://www.mongodb.org/downloads

2.安装

3.启动mongodb

3.1mongod 设置数据库路径

mongod --dbpath 路径

3.2 连接数据库

mongo

使用mongo服务时不能关闭mongodb进程,并且因为mongodb不是服务所以每次开机都得执行一次,如果不想每次开机都执行一次可以将mongodb弄成服务。

4.简单使用

> db //查看当前数据库
test> db.zmz.insert({hello:123}) //如果没有zmz这个数据库则新建一个并且插入一条数据
WriteResult({ "nInserted" : 1 })> db.zmz.find() //查看zmz这个数据库中所有的数据
{ "_id" : ObjectId("5827eb8f1625be96b146c9e3"), "hello" : 123 }
>

"show dbs" 命令可以显示所有数据的列表。
"db" 命令可以显示当前数据库对象或集合。
"use"命令,可以连接到一个指定的数据库。

MongoDB学习笔记

项目目录结构

CSS预处理器stylus

1.安装

npm install stylus -g

2.编译并且生成压缩文件

stylus -c -w ./

-c 编译
-w 监控文件变化
./ 要编译到的文件路径

不知道为什么不支持../

nodejs

1.nodejs修改了代码以后自动刷新

下载supervisor

npm -g install supervisor

执行

supervisor app.js

2.安装express和ejs

3.Express 托管静态文件

var express = require('express');
var app = express();
app.use(express.static('路径'));

http://www.expressjs.com.cn/starter/static-files.html

4.修改ejs后缀名

4.1引入ejs

var ejs = require('ejs');

4.2注册html模板引擎:

app.engine('html',ejs.__express);

4.3将模板引擎换成html:

app.set('view engine', 'html');

4.4修改模板文件的后缀为.html。

页面设计的一些假想

目前效果是这样的,如图

首先头部有一个标题和一段文字内容,另外因为页面多个地方需要用到,因此需要把它做成组件,接着是一个导航条,也是一个公共的也需要弄成组件,但做成组件以后有一个小小的问题,就是当前选中的那个需要加一个状态,原本想用:target来写,但因为链接到的是不同的页面,因此也不太行。想来想去也只能用JS来实现了,不知道大家都用的什么方法。

下面就是主体内容部分了,开始部分放一篇推荐文章,打算把阅读量高的或者评论高的,又或者随机推荐一篇,这还在考虑之中,接着左边放最新文章,但考虑到有些可能加图片,因此还需要进行调整,另外屏幕比较小的时候放图片上去会有些问题,因此用了一下媒体查询,过小就隐藏。屏幕过小标题也得重新设计一下,因为默认是居中对齐的,但屏幕太小的时候,文字会断行,断后的那个文字也会居中,实在太难看了,还有一点就是应该给标题来一个首行缩进。右边就是猜你喜欢,这个功能我是这样想的,如果用户是第一次过来,那么就放浏览量高的,如果用户浏览过本站的一些文章,那么把它浏览过的文章标题记录下来,做一个分析,到时候这个就推荐关于用户喜欢的一些文章,按照浏览量排序。现在想到一个更好一点的部分,如果说直接分析标题,还是有些困难的,想起那些文章都是有分类的,因此提取一下用户访问的分类就好了。

列表也通过判断访问的参数显示相应的内容,如下图

代码是这样的

<link rel="stylesheet" href="nav/css/nav.css">
<nav class="navbar"><a href="./" class="active">首页</a><a href="./list?css">CSS指南</a><a href="./list?html5">HTML5</a><a href="./list?javascript">Javascript</a><a href="./list?life">学会生活</a><a href="./list?message">我有话说</a>
</nav>

而显示对应的列表内容则通过查询数据库articleClass字段来筛选

// 插入一篇文章
data.insert('zmz','article',{title:'5555',content:'这是内容',img:'httt',date:new Date().getTime(),url:'/article?' + new Date().getTime(),author:'追梦子',articleClass:'CSS指南',articleClassUrl:'list?css',readquan:2222,recommendcount:5435
});

因为mongodb本身没有自增,所以打算通过发布时间作为每一篇文章的唯一ID,到时候查询的时候就好办了,也就是下图这个

html页面是这样的

数据库的封装

这个封装是从网上找的,然后修改了一下,一些细节还不是很理解,项目完成以后还得再看看。

查询时代码

后台管理

目前的想法,如下图

已经实现的效果图


话说有点丑,不过能实现就挺不错的了。

新增文章页的一些细节

如上图我把每一个li都添加了一个自定义属性,这个用来确定选择的分类,提交数据的时候有用。因为首页有个分类功能,如下图

在选择分类的时候将选中的元素上的自定义属性赋值给标题元素,如下

// 选择分类
$(className).attr("data-articleClassUrl",$(this).attr("data-articleClassUrl"));

发送数据时

而对应的nodejs端则如下处理接收的数据

因为nodejs无法直接接收post数据,因此用了如下方法

function parseJSON(req,res,next){var arr = [];req.on("data",function(data){arr.push(data);});req.on("end",function(){var data= Buffer.concat(arr).toString(),ret;next(data);})
}

但它获取的数据是form类型的字符串,因此使用了一个nodejs自带的功能

var qs = require('querystring');
qs.parse(data);

关于后台编辑器

原本打算用markdown,但因为一些原因,最后还是自己写了个小脚本,写作方式如下:

<zmz><h1>h111111111</h1><h2>h222222222</h2><h3>h333333333</h3><h4>h444444444</h4><h5>h555555555</h5><h6>h666666666</h6><ul>123123/li/123123/li/</ul><ol>111111/li/222222/li/333333/li/</ol><bgtitle>带背景的标题</bgtitle><captitle>带大写数字的标题</captitle><lowtitle>带大写数字的标题</lowtitle><info>Alternate elements/h4/提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息/p/</info><a>是吗</a><blockquote>模式啊</blockquote><code>alert</code><center>居中</center><left>居左</left><right>居右</right>
</zmz>

最外层是一个包含块,好去获取代码,里面可以使用html来写,以及少量的自定义元素,效果如下

但最后发现这根本就是一个没用的设计,最初的想法无非就是为了方便写作,而设计这些条条框框即是为了能够正常匹配。因此这些设计反倒没有简单多少,实际上我们只需要写一份CSS就可以了。

图片上传

图片上传笔记

访客系统

访客系统笔记

一些问题

1.组件应该包含其自身的所有文件。

头部和导航是一个公共的,于是就提取出来了,一开始是这样引入的,如下图:

但感觉这样太麻烦了,每次还得分别引入多个文件,于是我把css直接在header.ejs里面引入,如下图:

于是每次只需要引入一个文件就好了,这里说一下,link标签不一定得写到head里面,只是加载的顺序不一样罢了,因为有些东西具体的实现还是根据浏览器厂商的。

2.职责明确

是布局的就不应该和组件混乱,比如说下图这个

这个main实际上是用来布局的,就是让它水平居中,如下:

.main{display:flex;width:70%;margin-left:auto;margin-right:auto;
}

如果说你打算把里面的一些东西当做一个单独的模块,那么就不要和这个main挂上关系,而是单独起一个class,比如说里面的那个推荐,代码我写成了这样

rec-articles.styl

@import "../../global.styl".like-article& h2margin-bottom:0.25rem;font-size:1rem;text-align:center;& h3font-size:0.9rem;line-height:1.5rem;text-align:center;& h2,& acolor:g-color2;& afont:0.8rem "宋体", Arial, Helvetica, sans-serif;

rec-articles.html

<link rel="stylesheet" href="articles/css/rec-articles.css">
<nav class="like-article"><h2>猜你喜欢</h2><h3><a href="#">标题</a></h3><h3><a href="#">标题</a></h3>
</nav>

另外代码的抽离也需要注意一点,实际上.like-article页面中是用了这么一句的

.like-articleflex:1;

但想想这个肯定是不能放到组件里面的,而是需要的地方单独去写,因为这个都是不确定的,不一定每个页面都需要用到。

整个项目分享:点我下载

mongodb数据库文件下载 :点我下载

记录从前端到后端--博客项目相关推荐

  1. 实战react技术栈+express前后端博客项目(8)-- 前端管理界面标签管理+后端对应接口开发...

    项目地址:https://github.com/Nealyang/R... 本想等项目做完再连载一波系列博客,随着开发的进行,也是的确遇到了不少坑,请教了不少人.遂想,何不一边记录踩坑,一边分享收获呢 ...

  2. 实战react技术栈+express前后端博客项目(3)-- 后端路由、代理以及静态资源托管等配置说明...

    项目地址:github.com/Nealyang/Re- 本想等项目做完再连载一波系列博客,随着开发的进行,也是的确遇到了不少坑,请教了不少人.遂想,何不一边记录踩坑,一边分享收获呢.分享当然是好的, ...

  3. Go后端博客项目实战_持续更新ing

    前言 因为是仿写他人的优秀博客后端,已经把博客代码拉下,进行分析. 但是在分析的过程中自己理解的很困难. 所以想出了一种解决方法: 将原项目代码拉下后,大概研究一下该项目实现的基本功能有哪些?自己能不 ...

  4. 码神之路博客项目构建记录

    个人博客项目 Blog 一.项目搭建(2021.10.6) pom文件导入相关依赖 application配置文件配置 Mybatis Plus配置 跨域问题解决 二.首页配置 首页分页显示文章信息 ...

  5. 从0到1编写个人博客项目使用springboot+vue(前后端分离) 到 购买服务器上传项目 到 GitHub开源项目、此过程下所遇问题及解决方法,至少你帮你少走70%弯路

    个人博客编写 后记 2022.12.2.4 : 30.此项目告一段落. ​ 编撰此博客本意里除去对找工作的帮助.更多地是想帮助未走过的人去探探路.总结经验.少走弯路.知识的宝贵不在于无价.而是无私.天 ...

  6. 前后端分离_博客项目

    1,前后端分离 1.1 什么是前后端分离 ​ 前端: 即客户端,负责渲染用户显示界面[如web的js动态渲染页面, 安卓, IOS,pc客户端等] ​ 后端:即服务器端,负责接收http请求,处理数据 ...

  7. Spring Boot + vue-element 开发个人博客项目实战教程(二十五、项目完善及扩展(前端部分))

    ⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程 ⭐专栏内容:零基础学Java.个人博客系统 ⭐我的文档网站:http://xyhwh- ...

  8. SpringBoot+vue前后端分离博客项目

    SpringBoot+vue前后端分离博客项目 Java后端接口开发 1.前言 2.新建Springboot项目 3.整合mybatis plus 第一步:导入jar包 第二步:然后去写配置文件: 第 ...

  9. 超详细!4小时开发一个SpringBoot+vue前后端分离博客项目!!

    小Hub领读: 前后端分离的博客项目终于出来啦,真是花了好多心思录制咧.文末直接进入B站看视频哈! 作者:吕一明 项目代码:https://github.com/MarkerHub/vueblog 项 ...

最新文章

  1. 输入n,求n位以内的水仙花数
  2. android 加壳 方案,android加壳思路
  3. matlab gui自定义图片做背景,matlab GUI自定义图片做背景
  4. Elasticsearch和MongoDB对比
  5. python类与对象示意图_2020Python作业——类与对象,
  6. SAP Success factor自定义launchpad
  7. 解决toolbar左边空出一部分的问题
  8. Struts1 tag
  9. java netty swap高_Netty 超时机制及心跳程序实现
  10. Bootstrap网页模板
  11. 企业开展网络营销常用的十九种方法
  12. 苹果Mac 3D 模型展开工具:Unfolder
  13. 人民币持续升值,百姓感受渐深
  14. finereport帮助文档中期学习总结
  15. 数据库之Mysql索引、事务与存储引擎
  16. ubuntu cron 定时任务
  17. 利用Python基础代码语句,实现2G时代文字小游戏,学会难道不香吗?
  18. 通过位运算来进行2的幂运算
  19. dSYM-如何获取dSYM UUID并快速定位到已发布程序的crash位置(二)
  20. 席裕庚《预测控制》学习记录 (一)-基于阶跃响应的动态矩阵控制(DMC)包含仿真

热门文章

  1. python清洗数据去除停用词_Python从pandas数据帧中删除停用词
  2. cstring判断是否包含子串_leetcode76. 最小覆盖子串
  3. 程序员吐槽_某程序员吐槽一程序员大佬竟然放弃百度offer,回老家进烟草公司!是不是脑子有坑?网友:你才脑子有坑!...
  4. java https通讯_Kubernetes - HTTPS在服务之间进行通信
  5. 前端HTML5CSS3基础知识点
  6. maven项目 错误: 找不到或无法加载主类
  7. 在页面加载完后执行jQuery代码
  8. java Socket通信(一)
  9. 世界上第一个程序员竟然是女性,难以置信......
  10. JAVAEE框架之Spring新注解