万众期待的router.js,是我如今最想写的一个博客。由于他包含了整个我的博客的精髓。在这里,全部的请求配置,返回的参数等等所作的业务逻辑都在这个文件里实现。node
我会详细说明这些代码的做用,因此这篇博客会有点长,但看完以后受益确定也很多!算法
formidable是一个很出名的NPM包。它在node里做为表单内容接收作处理的一个中间件,功能很强大。数据库
db.js是我在网上仿写的一个对数据库的统一操做的函数库。安全
md5是用于数据加密的文件(如今反对用md5加密,由于能够被破解)推荐用哈希算法加密的中间件Crypto服务器
fs是nodejs自带的一个文件管理,全名叫 fileSystemsession
moment是一个时间格式化的中间件app
app是引用Express 而后引用Express里的get和post方法,由代码能够看出:第一个参数是路由设置 第二个参数就是请求处理函数。而下面代码就是引用router文件下的showRegister函数函数
exprots是ES6的新写法,能够在外面暴露这个函数,要引用这个函数前提是要引用这个文件post
也就是下面这段代码引用加密
NodeJS都是回调!NodeJS都是回调!NodeJS都是回调!(重要事情说三遍)
全部请求处理函数 都会接收三个参数:request(请求),response(回应),result(结果)
nodejs里有内置的render函数,可指定模板文件。而文件格式只能是ejs。
首先实例化formidable的IncomingForm,实例化对象变量名为form
引用实例化对象下的parse方法(接收两个参数:第一个,req,第二个,函数【咱们要作的事情】)
所获得的表单信息都在fields里面,err参数就是错误信息,files就是文件信息
取到值以后就定义一个变量存储。密码加上双重MD5加密(然而并无用,仍是会被人破解。MD5再也不安全)
而后用db外置函数insertOne来向数据库新增一条数据,参数:(表名字,要存储的JSON,回调函数)
而回调函数里又接收两个参数(是否是崩溃了?是就对了,由于我当初也崩溃了。)参数:(错误信息,结果)
若是错误则返回错误信息,成功就执行session设置并返回注册成功信息
操做与doRegister函数差很少,不同的就是查询数据的时候,须要匹配帐号和密码是否正确,登陆成功以后都要写上session。
首先访问该URL要判断是否有session,没有session就是表明没有登陆,须要登陆。
服务器有session了,就渲染这个模板。
编写文章:有人可能疑问,为何将文章添加到数据库须要查询全部的文章呢?
主要我仍是想写个自增ID,想要文章的ID号。NodeJS里没有自增ID。只有随机的ID编号。
而后存储的数据都是以JSON的格式,我都以语义化来命名,你们也看得清楚明白。
在这里我用了查询网的API经过IP地址来判断访问者当前地理位置和客户端的信息。
因查询网的定位不许确,我又找了个高德的游览器定位来作了这个功能。
这里是在首页使用Ajax把数据发送到NodeJS接口来存储访问者的当前地理位置
在这个分类组件里,其他的都是同样,只是查询的时候多出了个条件。classify为JavaScript,就实现了文章分类的效果。
以上。