nodejs--框架学习(持续更新中)

可以尝试 进入 http://localhost:3000/?search=koa&keywords=context 创建一个node项目

Koa -- 基于 Node.js 平台的下一代 web 开发框架

Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。

Egg 继承于 Koa:

Koa 是一个非常优秀的框架,然而对于企业级应用来说,它还比较基础。

Egg 选择 Koa 作为其基础框架,在它的模型基础上,进一步对它进行了一些增强

一:exports和module.exports的区别

exports方式使用方法是:exports.[function name] = [function name]

moudle.exports方式使用方法是

两者根本区别是:

   exports 返回的是模块函数
          module.exports 返回的是模块对象本身,返回的是一个类
          使用上的区别是:
          exports的方法可以直接调用
          module.exports需要new对象之后才可以调用

例子:

/*module.exports*/
var app = {
    name: 'app',
    version: '1.0.0',
    sayName: function(name){
        console.log(this.name);
    }
}
module.exports = app;

//使用
var app = require('./app.js');
app.sayName('hello');  //hello

====================================

/* exports */
var func1 = function() {
   console.log("func1");
};
 
var func2 = function() {
   console.log("func2");
};
 
exports.function1 = func1;
exports.function2 = func2;

//使用
var functions = require("./functions");
functions.function1();
functions.function2();

二:node 常见的ctx详解

1:简单介绍一下什么是ctx

    ctx是context的缩写,一般称之为上下文,可以理解为上(request)下(response)沟通的环境,所以koa中把他们两都封装进了ctx对象

 app.context 是从其创建 ctx 的原型。您可以通过编辑 app.context 为 ctx 添加其他属性 

   作为请求的上下文对象(在 Koa 1 中为中间件的 this,在 Koa 2 中作为中间件的第一个参数传入)第一个参数为 ctx,代表当前请求的上下文,是 Context 的实例

2:ctx结构

{
    request: {
        method: 'GET',
        url: '/',
        header: {
            host: 'localhost:3000',
            connection: 'keep-alive',
            'cache-control': 'max-age=0',
            'upgrade-insecure-requests': '1',
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
            accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'accept-encoding': 'gzip, deflate, sdch, br',
            'accept-language': 'zh-CN,zh;q=0.8'
        }
    },
    response: {
        status: 200,
        message: 'OK',
        header: {
            'content-type': 'text/plain; charset=utf-8',
            'content-length': '25'
        }
    },
    app: {
        subdomainOffset: 2,
        proxy: false,
        env: 'development'
    },
    originalUrl: '/',
    req: '<original node req>',
    res: '<original node res>',
    socket: '<original node socket>'
}

    3:ctx对象常用的属性和方法

/*ctx.request*/
ctx.request.url
ctx.request.query
ctx.request.querystring
ctx.request.method
ctx.request.path
ctx.request.on('data', func)
ctx.request.accepts()

//代码示例
const koa = require('koa');
const app = new koa();

app.use(async ctx => {
    ctx.response.body = {
        url: ctx.request.url,
        query: ctx.request.query,
        querystring: ctx.request.querystring
    }
})

app.listen(3000, () => {
    console.log('server is listening at http://localhost:3000');
})

/*ctx.response*/
ctx.response.body
ctx.response.status
ctx.response.type
ctx.response.redirect(url, [alt])

/*ctx.state*/
//ctx.state是推荐的命名空间,通过中间件传递信息和前端视图
ctx.state.user = yield User.find(id) //把user属性存放到ctx.state对象里,以便能被另外一个中间件读取。

/*ctx.cookies*/
ctx.cookies.set(name, value, [options]);
ctx.cookies.get(name, [options]);

/*ctx.throw*/
ctx.throw(500)   //用于抛出错误,把错误信息返回给用户。

其中 ctx.cookies.set(name, value, [options]);  option 的配置表如下图所示

在这里插入图片描述

对于ctx详情可参考 https://koa.bootcss.com/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值