標籤:取數 url setting 資料 index war res com on()
const Koa = require(‘koa‘);const Router = require(‘koa-router‘);const app = new Koa();const router = new Router();const views = require(‘koa-views‘);const json = require(‘koa-json‘);const onerror = require(‘koa-onerror‘);const bodyparser = require(‘koa-bodyparser‘);const path = require(‘path‘);const logger = require(‘koa-logger‘);const request = require(‘request‘);// error handleronerror(app)// middlewaresapp.use(bodyparser()) .use(json()) .use(logger()) .use(require(‘koa-static‘)(__dirname + ‘/public‘)) .use(views(path.join(__dirname, ‘/views‘), { options: { settings: { views: path.join(__dirname, ‘views‘) } }, map: { ‘html‘: ‘nunjucks‘ }, extension: ‘html‘ })) .use(router.routes()) .use(router.allowedMethods())// x-response-timeapp.use(async function(ctx, next) { const start = new Date(); await next(); const ms = new Date() - start; ctx.set(‘X-Response-Time‘, `${ms}ms`);});// loggerapp.use(async function(ctx, next) { const start = new Date(); await next(); const ms = new Date() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}`);});app.on(‘error‘, (err, ctx) => log.error(‘server error‘, err, ctx));router.get(‘/‘, async(ctx, next) => { var bd = "bd"; // 從伺服器擷取資料 bd = await getData(); ctx.state = { title: ‘Koa2‘, name: bd } // 發送到頁面 return await ctx.render(‘index‘, ctx.state) })//擷取伺服器資料async function getData(){ return new Promise((resolve,reject)=>{ request("https://www.baidu.com",(error,response,body)=>{ if(error){ reject("error") }else{ resolve("thank you");//body } }) })}router.get(‘/b‘, async(ctx, next) => { ctx.state = { title: ‘Koa2‘, name: ‘小明-list‘ } await ctx.render(‘b‘, ctx.state)})app.listen(3000);console.log(‘listen http://localhost:3000‘);
nodejs擷取伺服器資料到頁面