带有url的Node.js包罗万象的路由始终使用Angular呈现索引页面,而不管url如何

亚当

本质上,当我使用包罗万象的路由并且res.redirect('/')无论输入什么URL都使用它时,它将始终呈现索引/主页(即,Angular似乎无法“看到”完整的URL),但是如果我放置res.render('index')在包罗万象的路由中一切正常。我不希望重复代码并重定向到'/'应该起作用,我可能在这里某处犯了一个愚蠢的错误,我们将不胜感激!

角路由:

app.config(function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);

$routeProvider
    .when('/', 
        {   
            templateUrl: 'partials/home.jade'
        })
    .when('/about', 
        {
            templateUrl: 'partials/about.jade'
        })
    .otherwise( {redirectTo: '/'});
});

输入site-address/about以下内容将正确呈现关于页面

app.get('/', function (req, res) {
    res.render('index');
});

app.get('/partials/:name', function (req, res) {
    res.render('partials/' + req.params.name);
});

app.get('*', function (req, res) {
    res.render('index');
});

这将始终只显示索引页面:

app.get('/', function (req, res) {
    res.render('index');
});

app.get('/partials/:name', function (req, res) {
    res.render('partials/' + req.params.name);
});

app.get('*', function (req, res) {
    res.redirect('/');
});

配置是否有帮助:

// Configuration
app.configure(function () {
    app.set('port', process.env.PORT || 1337);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(app.router);
});
艾伦

这是设计使然。

当您使用时res.redirect('/'),Node / Express发送HTTP重定向,这将更改浏览器中的URL,因此,在呈现索引模板以及运行角度代码时/,无论用户输入了什么,URL均为,整个重定向点)。

当您省略重定向并仅发送模板作为响应时,NodeJ会以HTTP 200(成功)以及HTML内容进行响应。由于URL不变,因此当您的应用程序运行时,角度路由会正确路由。

编辑添加:地址注释

与其让两条路由呈现相同的模板,不如将/所有路由都放在一起,而让包罗万象的呈现索引模板,然后将控制权移交给Angular路由器。

否则,我会考虑从概念上划分路由:将所有应用程序路由专门发送到有角路由器,并通过nodejs渲染静态路由,并使用catch all命令为缺少或未知的资源渲染更合适的页面(对于您的用户)。

您可以使用类似正则表达式的语言来指定单个处理程序:

app.get('/()|(about)|(contact)/',function(req,res) {/* handle */});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“'operator <<'的歧义过载” *没有*包罗万象的过载

来自分类Dev

如何禁用WordPress .htaccess包罗万象?

来自分类Dev

JavaScript包罗万象的定义

来自分类Dev

带有方括号的node.js URL

来自分类Dev

.NET MVC路由-路由起始处的包罗万象?

来自分类Dev

javascript(node.js)将url哈希转换为带有参数的url

来自分类Dev

如何使用带有Node.js代码的AWS Lambda从URL下载文件

来自分类Dev

创建一个包罗万象的代表

来自分类Dev

独特且包罗万象的深层链接

来自分类Dev

如何过渡到404“包罗万象”样式的路线?

来自分类Dev

如何过渡到404“包罗万象”风格的路线?

来自分类Dev

如何创建一个包罗万象的对象代理?

来自分类Dev

Solr-使用_text_包罗万象的字段

来自分类Dev

带有参数的Django URL

来自分类Dev

带有硒的多个URL

来自分类Dev

提取带有域名的URL

来自分类Dev

去掉 ?从带有htaccess的URL

来自分类Dev

带有 URL 参数的请求

来自分类Dev

如何使用带有 url 的下拉列表

来自分类Dev

带有Django URL的AngularJS路由

来自分类Dev

URL中带有斜杠“ /”的路由参数

来自分类Dev

Laravel 中带有 URL 参数的路由

来自分类Dev

带有 url 参数的 htaccess 路由

来自分类Dev

带有或不带有http和www的URL验证

来自分类Dev

获取带有或不带有 URL 斜杠的目录?

来自分类Dev

带有模式的 Angular Material url 验证

来自分类Dev

从文件中获取带有JS的URL?

来自分类Dev

Alexa技能套件输入的“包罗万象”不符合定义的意图

来自分类Dev

如何请求带有edittext的url