node.js dayfour

  1. 文件路径和模块操作路径的区别
    './data/a.txt'
    'data/a.txt' 相对路径,相对目录

    '/data/a.txt'
    'c:/data/a.txt' 绝对路径下的文件路径,基本不用

    模块路径;模块加载路径的中的相对路径不能省略

    require( '/data/foo ')
    require( ' ./data/foo')

知识点

  • Express
  • 基于文件做一套 CRUD

express的安装
npm init --yes
npm install -S express
npm express -version

安装 nodemon ,解决服务器手动重启的问题
npm install --global nodemon

global 是全局的意思,支持随便安装在任意目录

express 的静态资源,意思就是开放目录

app.use( ' /a/' , express.static('./public/'))
这里的/a/相当于public的别名,访问的时候必须加入/a/才能访问publi目录下的文件
如果不加 /a/ ,就是直接访问到public目录下的文件了
/a/相当于一道门,打开了才能进入,而public则只是规定了这个房间,用只能用这个房间里的东西

express中的static-server的静态资源: 在express中配置art-template模板引擎
art-template gitHub仓库,管饭文档

安装art-template 和express -art-templata
npm init --yes

配置:

配置使用 art-template 模板引擎
第一个参数,表示,当渲染以 .art 结尾的文件的时候,使用 art-template 模板引擎
express-art-template 是专门用来在 Express 中把 art-template 整合到 Express 中
虽然外面这里不需要记载 art-template 但是也必须安装
原因就在于 express-art-template 依赖了 art-template
app.engine(‘html’, require(‘express-art-template’))

Express 为 Response 相应对象提供了一个方法:render
render 方法默认是不可以使用,但是如果配置了模板引擎就可以使用了
res.render(‘html模板名’, {模板数据})
第一个参数不能写路径,默认会去项目中的 views 目录查找该模板文件
也就是说 Express 有一个约定:开发人员把所有的视图文件都放到 views 目录中
如果想要修改默认的 views 目录,则可以app.set(‘views’, render函数的默认路径)

基本配置:

cmd : npm i -S express
var express = require('express')
var app = express()
app.use('/public/',express.static('pulic'))
app.get('/',function(request,response){ response.send('page') })
app.get('/post',function(request,response){ response.send('post page') })
app.listen(3000,function(){ console.log('running.....') })

开始安装art-template

cmd: npm install --sava art-template
npm install --sava express-art-template

  • 配置使用模板引擎
    app.engine('html',require('express-art-template'))
    esponse.send 变成 response.render(404.html)
  • 渲染的意思,它不用写直接指定路径,而是默认找到使用view中的配置文件
  • 如果想要修改默认的 views 目录,则可以在view中新建一个目录。把配置文件放里面
    然后在用engine访问时,添加路径 admin/404.html 同时get请求目录也得修改

app.get('/',function(request,response){ response.render('404.html',{ title: '自定义内容' }) }) 后面跟的是渲染内容

  • post 不是用url传送数据,所以不能再url中获取,而是在from data里
  • get提交都是在url提交,而post是表单或者api

express中的req请求对象没有获取post请求对象的功能,需要引入中间体

这样req请求对象上会多出一个属性body,这样就可以通过req.body来获取表单post
请求题数据了

npm i --S body-parser

var bodyParser = require('body-parser')

// 配置 body-parser 中间件(插件,专门用来解析表单 POST 请求体)
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

app.post('/post',function(request,response){
var comment = req.body
comment.dateTime = '2017-11-5 10:41:10'
comments.unshift(comment)
res.redirect('/')
// res.statusCode = 302
// res.setHeader('Location','/')
})

  • res.send 和 res.redirect 这些方法会自动结束响应

crud 的起步,搭建数据管理页面 start

在bootstrp上有多数模板,这也可以理解为使用框架的第一步
npm i -S --yes
安装node_modul
基本配置:
npm i -S express
npm i -S atr-template express-art-template
开放目录
修改css文件引入路径
遍历主要内容 each

遇到的问题 :
项目中的node_module不可复制粘贴使用,否则会报告找不到debug模块
解决的方法就是通过包文件配置直接下载全部模块 npm install --production

从文件中读取数据,也就是直接读取数据库文件,和数据库没什么关系,这里把数据都储存在
json文件中,通过node的api直接获取就ok了

fs.readFile(dbPath, 'utf8', function (err, data)
这里的第二个参数是直接让读取文件的结果以utf-8的格式遍历成字符串
也可以用tostring的方式
然后用过JSON.parse(data)来转换成对象
因为在student.json里student数据是以对象的形式呈现,所以在后面点出对象
JSON.parse(data).students
判断对象类型用 typeof

感悟:

在node中你想引入别的js文件,就要想到用加载挂载模块的思路
初步想之前挂载可以把函数对象挂载过来使用,所以可以自己封装函数
模块也就是一系类的封装函数,这是直接必须要想到的方法!!!

app.js就是端口,用来加载配置的
模块要单一化,所以把请求的功能单独写出来

/**

  • router.js 路由模块

  • 职责:
  • 处理路由
  • 根据不同的请求方法+请求路径设置具体的请求处理函数
  • 模块职责要单一,不要乱写
  • 我们划分模块的目的就是为了增强项目代码的可维护性
  • 提升开发效率
    */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值