Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 用Koa进行子域路由?_Node.js_Subdomain_Koa - Fatal编程技术网

Node.js 用Koa进行子域路由?

Node.js 用Koa进行子域路由?,node.js,subdomain,koa,Node.js,Subdomain,Koa,我希望能够做到以下几点: mydomain.com/this/that github.com/bmullan91/express-subdomain 应以不同的方式重定向到: a.sub.domain.mydomain.com/this/that 我看到Express有以下功能: mydomain.com/this/that github.com/bmullan91/express-subdomain Koa有一个: github.com/demohi/koa-subdomain 正

我希望能够做到以下几点:

mydomain.com/this/that
github.com/bmullan91/express-subdomain
应以不同的方式重定向到:

a.sub.domain.mydomain.com/this/that
我看到Express有以下功能:

mydomain.com/this/that
github.com/bmullan91/express-subdomain
Koa有一个:

github.com/demohi/koa-subdomain

正如你所看到的,它已经死了。无论如何,在使用膝关节炎的情况下实现这一点?

你可以编写一个子域中间件来实现这个。
var koa = require('koa');
var app = koa();


routeMain = function *(next) {
    this.body = 'mydomain.com';
};


routeSub = function *(next) {
    this.body = 'sub.mydomain.com';
};


// subdomain middleware
subdomain = function (domain,route){
    return function *(next){
        var s=this.subdomains[0] || '';
        if (s === domain) {
            yield route.call(this,next);
        }
        else{
            yield next;
        }
    };
};


app.use(subdomain('sub', routeSub));
app.use(subdomain('', routeMain));

app.use(function *(next){
    console.log("done");
});


app.listen(3000);

您可以编写子域中间件来实现这一点

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


routeMain = function *(next) {
    this.body = 'mydomain.com';
};


routeSub = function *(next) {
    this.body = 'sub.mydomain.com';
};


// subdomain middleware
subdomain = function (domain,route){
    return function *(next){
        var s=this.subdomains[0] || '';
        if (s === domain) {
            yield route.call(this,next);
        }
        else{
            yield next;
        }
    };
};


app.use(subdomain('sub', routeSub));
app.use(subdomain('', routeMain));

app.use(function *(next){
    console.log("done");
});


app.listen(3000);

我非常自豪地为koa展示我的第一个中间件

受express subdomain的启发,但在通配符方面具有更大的灵活性,并使用生成器函数代替路由器。
它是为配合Koa路由器而开发的

我非常自豪地为koa展示我的第一个中间件

受express subdomain的启发,但在通配符方面具有更大的灵活性,并使用生成器函数代替路由器。
它是为配合Koa路由器而开发的

您的问题不清楚,路由与域没有任何关系,请发布您的代码…@Karl Morrison:您注意到有一个新的koa子域插件@Danny Make吗?最后一个答案包含您的完美解决方案。我用过它-这是伟大的工作!您的问题不清楚,路由与域没有任何关系,请发布您的代码…@Karl Morrison:您注意到有一个新的koa子域插件@Danny Make吗?最后一个答案包含您的完美解决方案。我用过它-这是伟大的工作@幼虫:我对行
var s=this.subdomains[0]| |“”这是如何工作的?Koa是通过收集所有的app来做这个吗?使用(子域名和堆叠这个到这个子域名数组?@丹尼:因为膝关节炎正在创建一个<代码>这个上下文< /代码>,对于每个请求,在<代码>中至少有一个条目。
array.
this.subdomains
不是从
应用程序创建的。使用
-它是一个数组,因为它还包含子域…例如
this.subdomains['bar','foo']
对于
foo.bar.example.com
@subrata:我对行
var s=this.subdomains[0]感到困惑Koa如何通过收集所有的App.使用(子域和堆叠到这个子域名数组?@丹尼:因为膝关节炎正在创建一个<代码>这个上下文< /代码>每个请求,在<代码>中至少有一个条目。
array.
this.subdomains
不是从
应用程序创建的。使用
-它是一个数组,因为它还包含子域…例如
this.subdomains['bar','foo']
对于
foo.bar.example.com
我将查看此信息!@KarlMorrison:cool-让我知道这是否回答了您的问题。也可以随意添加愿望作为问题-我通过集成项目管理组织进一步开发。非常欢迎您的反馈!我将查看此信息!@KarlMorrison:cool-让我知道是回答您的问题。也请随意添加愿望作为问题-我组织进一步发展与综合项目管理。非常欢迎您的反馈!