将HTML5与Angularjs和Node / Express以及MEAN.js样板文件结合使用

时间:2015-05-15 14:17:07

标签: javascript angularjs node.js html5 express

我使用mean.js(http://meanjs.org/generator.html)样板作为应用程序的起点,因为我喜欢内置的身份验证/授权。

但是,我在使用HTML5时遇到了问题。

在我的角度应用程序中,我设置了HTML5(true),我知道我需要为所有其他重定向请求设置一条捕获路径。

我在快递上有以下路由作为root和catchall:

///这是app / controllers / core.server.controller:

exports.index = function(req, res) {
    res.render('index', {
        user: req.user || null,
        request: req
    });
};

exports.catchall = function(req, res){
      res.redirect('/');
};

然后是路由本身

'use strict';
module.exports = function(app) {
    // Root routing
    var core = require('../../app/controllers/core.server.controller');
    app.route('/').get(core.index);
    app.route('*').get(core.catchall);
};

现在,当我输入的路径只是垃圾时,页面重定向没有问题,但是当我输入存在于express中的路由时(没有关联的视图,我正在获取服务器输出)。

这是我所说的快递路线:

'use strict';
/**
 * Module dependencies.
 */
var users = require('../../app/controllers/users.server.controller'),
    articles = require('../../app/controllers/articles.server.controller');

module.exports = function(app) {
    // Article Routes
    app.route('/articles')
        .get(articles.list)
        .post(users.requiresLogin, articles.create);

    // Finish by binding the article middleware
    app.param('articleId', articles.articleByID);
};

我在Express / Node中没有与此相关的视图 - 只是在Angular中。

因此,当我通过链接导航到localhost:3000 /文章时,角度管理路线并呈现正确的角度模板。

但是,当输入localhost:3000 / articles并按回车键(或刷新此网址上的浏览器)时,我会收到以下信息:

[{"_id":"5555ede9dac9d0d99efae164","user":{"_id":"5554fa21141c5aef7b0354d7","displayName":"heny as"},"__v":0,"content":"This is the blurb for him","title":"VP, Global Marketing","created":"2015-05-15T13:00:25.177Z"}]

但我希望从角度

获取渲染的页面模板

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这是因为你调用服务器url(与ajax调用相同),你需要

  1. 服务器端的拦截请求类型(ajax | not ajax)和重定向都没有ajax到根路径(/)和angular将使用ajax来获取客户端的文章。

  2. 定义单个根目录(/)以便为您的单个Web应用程序提供服务,并使用(/ api / ...)来处理所有的ajax请求。