学习mongo+express搭建博客和原生nodejs

express+mongo搭建博客完成用户注册、登录、登出,发表文章,上传图片等功能
保存登录状态:使用express-session中间件来保存user,req.session.user = user,登出之后直接对req.session.user设为null

校验登录:某些操作比如发表文章需要在用户登录之后才能进行,为了避免用户没有登录直接进入相应地址进行操作,所以在进入相应地址之前进行登录判断,通过对req.session.user的判断然后进行跳转到login页面或者移交控制权next()

上传图片:引入multer模块,然后设置destination输出路径和filename 输出文件名,之后我们使用form表单来提交inputfile文件,form属性中需要加入enctype="multipart/form-data",表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作. enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去

文章模块:Post构造函数属性为:title,name(用户名),head(头像),post(内容),存入数据库的object额外添加time,comments,pv,reprint_info,pv通过查询时对pv数值+1来实现,reprint_info转载时通过设置reprint_to,reprint_from来保存文章来源以及被别人使用情况,当用户转载文章时通过查询相应文章然后以新文章录入到数据库中,并根据使用者信息和作者信息对转载文章以及原文的数据进行更新

https知识:
之前在别人邮箱中看到全站https升级,了解下为什么要升级到https,什么是https
http的不足之处:通信使用明文,内容可能会被窃听;不验证通信方的身份,因此有可能遭遇伪装;无法证明报文的完整性所以有可能已遭篡改
http+加密+认证+完整性保护=https,https并非是应用层的一种新协议,只是http通信接口部分用ssl和tls协议代替而已,通常http直接和tcp通信,当使用ssl时,则演变成先和ssl通信,再由ssl和tcp通信了,简言之,所谓的https其实就是身披ssl协议这层外壳的http

学习nodejs:
assert模块:使用该模块来为应用编写单元测试,对预期值与实际值进行比较,可以使用equal和notEqual分别做相等性和不等性,相当于==和!==,会进行类型转换再比较,如果使用strictEqual就相当于===不会进行类型转换,当比较object对象的时候可以用deepEqual,

buffer模块:js中string对象存储的是字符串unicode编码,而我们在利用nodejs做服务器开发的时候,http、tcp、文件io都是传输的字节流,所以这里就需要用到buffer,他代表一个缓冲区,存储二进制数据。我们可以对缓冲区进行读写buf.write(),buf.toString(),缓冲区是有长度的,在创建时就固定了下来,创建之后不能改变。当我们要确定字符串在缓冲区中占的长度是不能使用string.length,这是utf8的编码,一个字符可能在buffer中占用多个字节。

fs模块:我们可以通过fs模块对文件进行各种操作,所有的操作都有异步和同步,而同步可能会造成io阻塞。我们可以通过fs.readFile()按照我们需要的编码格式进行读取文件内容,可以使用fs.writeFile将数据写入文件,如果文件原先存在,则会将文件替换掉;如果想在文件尾部添加内容可以使用fs.appendFile,同时我们可以使用fs模块创建目录删除目录创建文件监听文件等

你可能感兴趣的:(学习mongo+express搭建博客和原生nodejs)