Node.js学习笔记(六)

Node.js 第六天笔记

知识点

  • 多人社区案例

其他

path路径操作模块

  • path.basename 获取一个路径的文件名(默认包含扩展名)
  • path.dirname 获取一个路径中的目录部分
  • path.extname 获取一个路径的扩展名部分
  • path.parse 把一个路径转为对象,
    • root 根路径
    • dir 目录
    • base 包含后缀名的文件名
    • ext 后缀名
    • name 不包含后缀名的文件名
  • path.join 当你需要进行路径拼接时候,推荐使用该方法
  • path.isAbsolute 判断一个路径是否是绝对路径

Node中的其他成员

在每个模块中,除了require、exports等模块相关 API之外,还有连个特殊的成员

  • __dirname 动态获取可以用来获取当前文件模块所属目录的绝对路径
  • __filename 动态获取可以用来获取当前文件的绝对路径
  • __dirname和__filename是不受执行node命令所属路径影响的

在文件操作中,使用相对路径是不可靠的,因为在Node中文件操作的路径被设计为相对于node命令所处的路径(不是bug,这样设计是有使用场景的)。

所以为了解决这个问题。很简单,只需要把相对路径变为绝对路径就可以了

那这里我们就可以使用__dirname或者__filename来帮我们解决这个 问题了。

在拼接路劲的过程中,为了 避免手动拼接来的一些低级错误,所以推荐多使用:path.join()来辅助拼接的。

fs.readFile(path.join(__dirname,'./a.txt'),'utf8',function(err,data){

})

所以为了尽量避免刚才所描述的问题,大家以后在文件操作 中使用的相对路径都统一转换为动态的绝对路径

补充:模块中的路径标识和这里的路径没有关系,不受影响(相对于文件模块)

模块中的路径标识和文件操作中的相对 路径标识不一致

模块中的路径标识就是相对于当前文件模块,不受执行node命令所处路径影响

require(‘./b’)

模板引擎

在node中,有很多第三方模板引都可以使用,不是只有 art-template

  • art-template
  • ejs
  • jade(pug)
  • handlebars
  • nunjucks

复习

  • MongoDB数据库
    • 灵活
    • 不用设计数据库
    • 业务的改动不需要关心数据表结构
    • DBA架构师 级别的工程师都需要掌握这项技能
  • mongoose
    • mongodb 官方包也可以操作MongoDB数据库
    • 第三方包: WrodPress 项目开发团队
  • Promise
    • callback hell 回调地狱
    • 回调函数中套回调函数
    • Promise(ES6)中新增的语法 API

1. 项目目录结构

|- app.js
|- controllers
|- models
|- node_modules 第三方包
|- package.json 包描述文件
|- package-lock.json 第三方包版本锁定文件(npm 5 以后才有)
|- public 公共的静态资源
|- README.md 项目说明文档
|- routes
|- views 存储视图目录

mkdir blog

cd blog

npm init -y

git init

git init 使用git上传至github

新建 .gitignore用于限制上传github的文件

cnpm i express mongoose

2. 模板页

  • art-template 子模板
    • {{include ‘./header.art’}}
      {{include ‘./header.art’ data}}
  • art-template 模板继承
    • {{extend ‘./layout.art’}}
      {{block ‘head’}} … {{/block}}

3. 路由设计

路径 方法 get参数 post参数 是否需要权限 备注
/ GET 渲染首页
/register GET 渲染注册页面
/register POST email、nickname、password 处理注册请求
/login GET 渲染登录页面
/login POST email、password 处理登录请求
/logout GET 处理退出请求

4. 模型设计

5. 功能实现

6. 书写步骤

  • 创建目录结构
  • 整合静态页-模板页
    • include
    • block
    • extend
  • 设计用户登录、退出、注册的路由
  • 用户注册
    • 先处理好客户端页面的内容(表单控件的name,收集表单数据)
    • 服务端
    • 获取客户端表单请求的数据
    • 操作数据库
      • 如果有错,发送500告诉客户端服务器错了
      • 其他根据业务发送不同的响应数据
  • 用户登录
  • 用户退出

在Express配置使用express-session插件

参考文档:https://github.com/expressjs/session

安装:

npm install express-session

配置:

// 该插件会为req请求对象添加一个成员:req.session默认是一个对象
// 这是最简单的配置方式,暂且先不用关心里面参数的含义

猜你喜欢

转载自blog.csdn.net/yw00yw/article/details/82453788