-
文件路径和模块操作路径的区别
'./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就是端口,用来加载配置的
模块要单一化,所以把请求的功能单独写出来
/**