zoukankan      html  css  js  c++  java
  • 用Node.JS+MongoDB搭建个人博客(万众期待的router.js)(四)

    万众期待的router.js,是我现在最想写的一个博客。因为他包含了整个个人博客的精髓。在这里,所有的请求配置,返回的参数等等所做的业务逻辑都在这个文件里实现。

    我会详细说明这些代码的作用,所以这篇博客会有点长,但看完之后受益肯定也不少!

    第一部分:引用文件

    formidable是一个很出名的NPM包。它在node里作为表单内容接收做处理的一个中间件,功能很强大。

    db.js是我在网上仿写的一个对数据库的统一操作的函数库。

    md5是用于数据加密的文件(现在反对用md5加密,因为可以被破解)推荐用哈希算法加密的中间件Crypto

    fs是nodejs自带的一个文件管理,全名叫 fileSystem

    moment是一个时间格式化的中间件

    第二部分:注册组件

    app是引用Express 然后引用Express里的get和post方法,由代码可以看出:第一个参数是路由设置 第二个参数就是请求处理函数。而下面代码就是引用router文件下的showRegister函数

    exprots是ES6的新写法,可以在外面暴露这个函数,要引用这个函数前提是要引用这个文件

    也就是下面这段代码引用

    NodeJS都是回调!NodeJS都是回调!NodeJS都是回调!(重要事情说三遍)

    所有请求处理函数 都会接收三个参数:request(请求),response(回应),result(结果)

    nodejs里有内置的render函数,可指定模板文件。而文件格式只能是ejs。

    doRegister函数

    首先实例化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,就实现了文章分类的效果。

    以上。

  • 相关阅读:
    linux 用户、组,修改文件权限
    linux下获取帮助
    PHPSESSID的cookie//session_start()
    【python】import 模块、包、第三方模块
    python练习——最长的递减子序列
    python练习——水仙花数
    Linux目录结构
    Scala入门3(特质线性化)
    Scala入门2(特质与叠加在一起的特质)
    人工智能我见及特征提取mfcc算法理解
  • 原文地址:https://www.cnblogs.com/scottjeremy/p/7238941.html
Copyright © 2011-2022 走看看