美文网首页
Koa和Nunjucks的API使用总结

Koa和Nunjucks的API使用总结

作者: geekMole | 来源:发表于2017-06-07 09:47 被阅读535次

    一、Koa的使用:

    //1.导入Koa模块. 注Koa2开始, 导入的是一个class
    const Koa = require('koa');
    //2.创建Koa对象
    const app = New Koa();
    //3.调用异步执行的方法, 处理网络请求
    app.use(async (ctx, next) => {
        await next();//执行next则会跳转执行下一个middleware
        ctx.response.type = 'text/html';
        ctx.response.body = '<h1>Hello, koa2!</h1>';
    });
    //4.绑定端口监听
    app.listen(3000);
    console.log('app started at port 3000...');
    

    二、Koa-router处理不同URL

    const Koa = require('koa');
    const app = new Koa();
    const bodyParser = require('koa-bodyparser');//用来处理post请求的json数据,注:在router被注册到app之前执行
    //1.引入,引入的接口是一个函数, 下面选择直接执行函数获得router对象
    const router = require('koa-router')();
    //2.接收网络请求, 执行下一个middleware
    app.use(async (ctx, next) => {
        console.log(`Process ${ctx.request.method} ${ctx.request.url}...`);
        await next();
    });
    app.use(bodyParser());//注册bodyParser用来处理json解析
    //3.使用router匹配url get请求
    router.get('/hello/:name', async (ctx, next) => {
        var name = ctx.params.name;
        ctx.response.body = `<h1>Hello, ${name}!</h1>`;
    });
    router.get('/',async(ctx, next)=>{
       ctx.response.body = '<h1>Index</h1>';
    });
    //post请求
    router.post('/signin', async (ctx, next) => {
            var name = ctx.request.body.name || '',
            password = ctx.request.body.password || '';
        console.log(`signin with name: ${name}, password: ${password}`);
        if (name === 'koa' && password === '12345') {
            ctx.response.body = `<h1>Welcome, ${name}!</h1>`;
        } else {
            ctx.response.body = `<h1>Login failed!</h1>
            <p><a href="/">Try again</a></p>`;
        }
    });
    //4.把routers添加进middleware
    app.use(router.routes());
    
    app.listen(3000);
    console.log ('app started at port 3000...')
    

    三、Nunjucks的使用

    const nunjucks = require('nunjucks');
    //1.定义函数用于使用nunjucks对象创建environment
    function createEnv(path, opts) {
        var
            autoescape = opts.autoescape && true,
            noCache = opts.noCache || false,
            watch = opts.watch || false,
            throwOnUndefined = opts.throwOnUndefined || false,
            env = new nunjucks.Environment(
                new nunjucks.FileSystemLoader('views', {
                    noCache: noCache,
                    watch: watch,
                }), {
                    autoescape: autoescape,
                    throwOnUndefined: throwOnUndefined
                });
        if (opts.filters) {
            for (var f in opts.filters) {
                env.addFilter(f, opts.filters[f]);
            }
        }
        return env;
    }
    //2.创建environment
    var env = createEnv('views', {
        watch: true,
        filters: {
            hex: function (n) {
                return '0x' + n.toString(16);
            }
        }
    });
    //3.使用environment对象渲染html文件
         //注:html文件放在views目录下
    var s = env.render('hello.html', { name: '小明' });
    console.log(s);
    

    四、Koa-router框架注册url, 以及配合Nunjucks框架的MVC封装

    参考:廖雪峰JavaScript教程

    相关文章

      网友评论

          本文标题:Koa和Nunjucks的API使用总结

          本文链接:https://www.haomeiwen.com/subject/mbngfxtx.html