node.js入门到放弃Day2——npm工具 + Express 框架 + 封装异步API案例

6. npm

6.1 npm 命令行工具

查看版本号:

npm -v

升级npm:

npm install --global npm

npm i -g npm

常用命令:

npm init -y 

npm i -S 包名

npm un -S 包名

npm help

npm 命令 --help

 

node.js入门到放弃Day2——npm工具 + Express 框架 + 封装异步API案例_第1张图片

7.Expess

原生的 http 在某些方面表现不足以应对我们的开发需求,所以我们就需要使用框架来加快我们的开发效率,框架的目的就是提高效率,让我们的代码更高度统一。

在node 中,有很多 Web 开发框架,我们这里以学习 express 为主。

var express = require('express');
var app = express();

// 当服务器收到 get 请求 / 的时候,执行回调处理函数
app.get('/', function (req, res) {
  // 在 Express 中可以直接通过 req.query 来获取查询字符串参数
  console.log(req.query)
  res.send('hello express');
});

app.get('/pinglun',funciton(req,res){
     //   req.query
     //   在 Epress 中使用模板引擎有更好的方式: res.render ('文件名',{模板对象})
	// art-template 结合 Express 来使用
});

// 公开指定目录,只要这样做了,你就可以直接通过 /public/xx 的方式访问 public 目录中的所有资源了
app.use('/public/',express.static('./public/'));

// 相当于 server.listen
app.listen(3000,function(){
    console.log('server is running...');
});

7.1 起步

安装:

npm install --save express

hello world:

const express = require('express');
const app = express();

app.get('/', (req, res) => res.send('hello express!'));

app.listen(3000, () => console.log('app is running on 3000....'))

7.1.2 基本路由

概念:一个端口就是一个路由

路由就是一张表;这个表有具体的映射关系;

get:

// 当你请求 / 的时候,对应相应的功能也就是后面的func
app.get('/',funciton (req, res) {
        res.send('hello world')
})

post:

// 当你请求 / 的时候,对应相应的功能也就是后面的func
app.post('/',funciton (req, res){
	res.send('this is post req')
})

7.1.3 静态服务(开放资源)

// 直接访问具体的路径
app.use(express.static('public'));

// 这个写法比较好,两个都可以
// '/static' 这里是个别名 可以起其它别名
app.use('/static',express.static('public'));

app.use('/static',express.static(path.join(__dirname,'public')));

7.2 在 Express 中配置 art-template 模板引擎

https://github.com/aui/art-template仓库

https://aui.github.io/art-template/中文文档

安装:

npm i -S art-template
npm i -S express-art-template

配置:

app.engine('art',require('express-atr-template'));

使用:

app.get('/',funciton(req, res) {
	// express 默认回去项目中国的views 中去找 index.html
    res.render('index.html', {
		title: 'hello world'
    })
})

node.js入门到放弃Day2——npm工具 + Express 框架 + 封装异步API案例_第2张图片

如果希望修改默认的 view 视图渲染储存目录,可以:

// 第一个参数 别写错
app.set('views', 目录路径);

node.js入门到放弃Day2——npm工具 + Express 框架 + 封装异步API案例_第3张图片

回到首页

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

Express 内置了一个API, 可以直接 req.query

req.query

7.4 在 Express 获取表单 POST 请求体数据

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

安装:

npm install body-parser -S

配置:

// 注意: 一定配置模板引擎和 body-parser 一定要再  app.user(router) 挂载路由之前
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

修改完代码自动重启

nodemon 来解决我们频繁修改代码重启服务器问题:

安装:

npm i -g nodemon

使用:

nodemon app.js

只要是 nodemon 启动的服务,它会自动监视你代码是否改动,改动了自动刷新

文件操作的相对路径中

文件操作路径:

  • ./data/a.txt 相对于当前目录
  • data/a.txt 相对于当前目录
  • /data/a.txt 绝对路径,当前文件模块所处磁盘根目录
  • c:/data/xx…/a.txt 绝对路径

模块操作路径:

// 这里如果忽略了 . 也是磁盘根目录
require('/data/foo.js')
    
// 相对路径
require('./data/foo.js')

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

演讲技巧:

node.js入门到放弃Day2——npm工具 + Express 框架 + 封装异步API案例_第4张图片


封装异步 API

function fn(callback) {
    // 这里相当于有这段代码:
    // var callback = function(data)
    setTimeout(function() {
        var data = 'hello';
        callback(data);
    }, 1000)
}

// 如果需要获取一个函数中异步操作的结果,则必须通过回调函数来获取
fn(function(data) {
    console.log(data);
})

// 回调函数: 获取一步操作的结果

案例写不出,笔记又整理的乱。。我太难了
点击跳转Day3——MongoDB+回调地狱讲解

你可能感兴趣的:(Vue与Node学习)