Node——Express实现简单天气查询

基于HTTP模块,Connect提供了开发Web应用常用的基础功能,而Express基于Connect为构建整个网站以及Web应用提供了简单方便的API。

本文主要用于了解Express的用法和功能。
1、创建模块,引入相关依赖
2、创建app
3、配置模板引擎
4、定义路由
5、监听
ejs模板引擎将JavaScript代码嵌在<%和%>EJS标签中。另外,通过在<%之后加入“=”符号将变量值打印出来。

// index.ejx
const express = require('express'); 
const app = express();   // 初始化web服务器
app.set('view engine', 'ejs');   // 指定模版引擎,这样就不需要每次载入视图时都要引入
app.set('views',__dirname + '/views'); //设置应用程序视图的目录或目录数组。如果是数组,则按照视图在数组中出现的顺序查找视图。
app.get('/',function(req,res) {
    res.render('index');
});
app.listen(3000);

在这里插入图片描述
定义查询函数:
SuperAgent是一个小型的渐进式客户端和Node.js HTTP请求库,具有许多高级HTTP客户端功能。

// search.js
const request = require('superagent');
module.exports = function search(query,fn) {
    request.get('http://t.weather.sojson.com/api/weather/city/101030100')
    .query({ q: query}) // query string
    .end(function(err,res) {
        if (res.body) {
            return fn(null,res.body.cityInfo);
        }
        fn(new Error('bad response'));
    });
}

对于查询结果对应的模版

// search.ejs
const request = require('superagent');
module.exports = function search(query,fn) {
    request.get('http://t.weather.sojson.com/api/weather/city/101030100') // 该API是该某网站找到json接口
    .query({ q: query}) // query string
    .end(function(err,res) {
        if (res.body) {
            return fn(null,res.body.cityInfo);
        }
        fn(new Error('bad response'));
    });
}

查询结果如下:
在这里插入图片描述

设置

Express提供了不少特性,同时拥有对任意类型web应用都不可或缺的,就是对环境设置的管理能力。
比如,在生产环境下,为了提高性能,我们可以设置Express将模版缓存起来,这样可以加快缓存速度。。然而,若在开发模式下开启这个功能,每次对模版稍做改动就需要重启Node服务程序

app.set('view cache', true);

当有JSONP请求时,其URL请求类似:/my/route?callback=myCallback
Express会自动检测callback参数,并将相应的结果包括在myCallback文本中,这只作用于res.send和res.json

错误处理

在Node中,将错误对象作为非阻塞I/O回调函数的第一个参数是很常见的。
具体可参见文档。

定义路由

app.get(’/post/:name’,function(){}); 这里那么变量会注入到req.params对象上。
定义路由时也可以使用RegExp对象。

和中间件一样,在路由处理程序中也可以使用next。即使当一个路由匹配并得到处理,还是可以强制Express去继续匹配其他路由。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值