Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 将ngRoute与Express后端一起使用_Angularjs_Node.js_Single Page Application - Fatal编程技术网

Angularjs 将ngRoute与Express后端一起使用

Angularjs 将ngRoute与Express后端一起使用,angularjs,node.js,single-page-application,Angularjs,Node.js,Single Page Application,我已经阅读了关于这个话题的其他几个答案,但我不完全理解它是如何工作的。我有一个有棱角的前端。我正在尝试使用$routeProvider为单页应用程序将部分内容加载到我的页面中。对于$routeProvider请求,我得到了404,我认为必须有一种方法来设置它,而不必为服务器上的每个部分声明路由。虽然我现在的配置中只声明了一个部分,但很快就会有更多的部分。我的routeProvider代码如下所示: myApp.config(['$routeProvider', function ($routeP

我已经阅读了关于这个话题的其他几个答案,但我不完全理解它是如何工作的。我有一个有棱角的前端。我正在尝试使用$routeProvider为单页应用程序将部分内容加载到我的页面中。对于$routeProvider请求,我得到了404,我认为必须有一种方法来设置它,而不必为服务器上的每个部分声明路由。虽然我现在的配置中只声明了一个部分,但很快就会有更多的部分。我的routeProvider代码如下所示:

myApp.config(['$routeProvider',
function ($routeProvider) {
    $routeProvider.
        when('/register', {
            templateUrl: 'partials/register',
            controller: 'registerCtrl'
        })
}])
但是转到localhost:3000/寄存器会出现404错误。我和其他一些人一样看了这个回答,但我还没有把所有的部分放在一起

从上面的帖子来看,这个解决方案怎么样

app.use('/*', function(req, res){
    res.sendfile(__dirname + '/public/index.html');
});
能够找到片段并将其返回到前端(顺便说一句,这个片段对我不起作用)

我的应用程序与使用express generator创建新的express应用程序没有太大区别。我有以下与路由相关的要求和使用声明:

var routes = require('./routes/index');
var users = require('./routes/users');
app.use('/', routes);
app.use('/users', users);
此路由用于在路由/索引中为我的主页提供服务:

router.get('/', function(req, res, next) {
  res.render('home');
});

使用前端路由时,不必为服务器上的每个部分声明路由。解决方案的最简单形式是让用户点击任何路线,并在背面进行通配符匹配,无论他们查看的是哪条路线,您只需提供相同的前端应用程序模板。因此,事实上,您在很大程度上完全取消了后端路由。一旦JS启动并从导航栏读取当前路由,它将解析相应的视图

查看其中一个教程,了解如何配置express后端以处理此问题:

由于SEO之类的原因,这种结构有一些细微的差别,以前也有争议,但谷歌现在能够解析JS并在SPA中解析视图,这其中的很多都被清除了()


当然,为了接受api请求,您实际上会在后端有一些路由,但理想情况下,除非您选择采用同构的方式,在后端预渲染js并提供完整的视图(尽管现在更适合React,至少在Angular 2.0之前)

惊人的链接。我在谷歌上找不到这样的东西。事实上,这家伙的食谱已经过时了。我想他用的是express 2或express 3