150.Node.js学习笔记(四)2018.12.11

知识点

  • Express

    • 文件操作路径和模块路径
  • 文件操作路径:

// 在文件操作的相对路径中
// ./data/a.txt 相对于当前目录
// data/a.txt 相对于当前目录
// /data/a.txt 绝对路径,当前文件模块所处磁盘根目录
// c:/xx/xx… 绝对路径
//例如 :
fs.readFile(’./data/a.txt’, function(err, data){
if(err){
console.log(err)
return console.log(‘读取失败’)
}
console.log(data.toString())
})

  • 模块操作路径:

// 这里如果忽略了. , 则是磁盘根目录
require(’/data/foo.js’)
//相对路径
require(’./data/foo.js’)
模块加载的路径中相对路径不能省略 ./

1.起步:

// 0. 安装
// 初始化项目,生成package.json文件
npm init -y 
// 安装express
npm install –save express    

// 例子:hello world:
var express = require('express');

// 1. 创建 app,也就是原来的http.createServer
var app = express();

app.get('/',function(req,res){
    // res.write('hello ');
    // res.write('world ');
    // res.end();
    // res.end('hello world');
    res.send('hello world !');
})

app.get('/login',function(req,res){
    res.send('login !');
})

app.listen(3000,function(){
    console.log('app is running port 3000');
});

2. 基本路由:

什么是路由: 路由其实就是一张表,表里面有具体的映射关系。

  • 路由

    • 请求方法
    • 请求路径
    • 请求处理函数
  • get方法:

# 当你以GET方法请求/的时候,执行对应的处理函数
app.get('/login',function(req,res){
    res.send('login !');
})
  • post方法:
# 当你以POST方法请求/的时候,执行对应的处理函数
app.post('/',function(req,res){
    res.send('login !');
})

3. 修改完代码自动重启

  • 我们这里使用一个第三方命令行工具:nodemon来解决频繁修改代码重启服务器问题。
  • nodemon是一个基于Node.js开发的一个第三方命令行工具,我们使用的时候需要独立安装
# 安装nodemon,在任意目录执行该命令都可以:
npm install –global nodemon

// 查看nodemon的版本号
nodemon –version
  • 安装完毕之后,使用:
node app.js
# 使用nodemon,启动app.js文件的服务
nodemon app.js
  • 只要通过nodemon app.js启动的服务,则它会监视你的文件变化
  • 当文件发生变化的时候,会自动帮你重启服务器。

4. 静态服务

// 方式1:(一般推荐使用该种方式)
// 当以/public/ 开头的时候,在./public/目录中找对应的资源
// 这种方式更容易辨识,推荐这种方式
// app.use('/public/',express.static('./public/'));

// 方式2:
// 必须是/a/public目录中的资源具体路径,别名
// app.use('/a/',express.static('./public/'));

// 方式3:
// 当省略第一个参数的时候,则可以通过省略 /public的方式直接访问
// 这种方式的好处就是可以省略 /public/
app.use(express.static('./public/')); 

5. 在Express中配置art-template

5.1 art-template 介绍

  • art-template 是一个简约、超快的模板引擎。
  • 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能
  • 并且同时支持 NodeJS 和浏览器。

5.2 art-template 特性

  1. 拥有接近 JavaScript 渲染极限的的性能
  2. 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
  3. 支持 Express、Koa、Webpack
  4. 支持模板继承与子模板
  5. 浏览器版本仅 6KB 大小

5.3 art-template 相关链接

5.4 安装art-template:

npm install --save art-template
npm install --save express-art-template
// 或者可以并在一起来写,中间使用空格隔开
npm install --save art-template express-art-template

5.5 配置

// 配置使用 art-template 模板引擎
// 方式1:
// 第一个参数表示:当渲染以.art结尾的文件时候,使用art-template模板引擎
app.engine('art', require('express-art-template'));

// 方式2:(一般推荐使用这种方式配置,第一个参数为.html)
// 当渲染以.html结尾的文件时候,使用art-template模板引擎
app.engine('html', require('express-art-template'));

5.6 使用

  1. Express 为 Response 相应对象提供了一个方法:render
  2. render 方法默认是不可以使用,但是如果配置了模板引擎就可以使用了
  3. 第一个参数不能写路径,默认会去项目中的 views 目录(默认一般在这个目录当中)查找该模板文件
  4. 也就是说 Express 有一个约定:开发人员把所有的视图文件都放到 views 目录中
app.get('/', function (req, res) {
   // express默认会去项目中的views目录中找index.html
    res.render('index.html', { // 如果使用index.html格式的,应该将上面的 art-template 模板引擎当中的art换成html,让其保持一致
        user: {
            name: 'Jack',
            tags: ['art', 'template', 'nodejs']
        }
    });
});

如果想要修改默认的views视图渲染存储目录,可以:

// 注意: 第一个参数千万不能写错,必须是特殊的名称views
app.set('views',目录路径);

6. 在Express中获取表单GET请求参数

Express内置了一个API,可以直接通过req.query来获取参数

req.query

7. 在Express中获取表单POST请求体数据

  • 在Express中没有内置获取表单POST请求体的API,这里我们需要使用一个第三方包:body-parser

7.1 安装

npm install --save body-parser

7.2 配置

var express = require('express');
// 0. 引包
var bodyParser = require('body-parser');

var app = express();

// 配置body-parser中间件(插件,专门用来解析表单 POST 请求体)
// 只要加入这个配置,则在req请求对象上会多出来一个属性:body
// 也就是说你就可以直接通过req.body来获取表单POST请求体数据了
app.use(bodyParser.urlencoded({ extended: false}));
app.use(bodyParser.json())

猜你喜欢

转载自blog.csdn.net/youyouwuxin1234/article/details/84953854