3

我有一点困惑。使用 Node.js

附上文件夹结构图。

如果我放在index.html客户端文件夹的根目录下,那么一切正常。

另一方面,如果我像在图像中那样将 index.html 移动到视图文件夹中,那么 js 文件不会加载但 index.html 正在加载。

Nodejs - server.js

app.configure(function () {
    app.set('port', process.env.PORT || 3000);

    app.use(express.favicon());
    app.use(express.cookieParser());
    app.use(express.bodyParser());
    app.use(express.logger('dev'));  //tiny, short, default
    app.use(express.methodOverride());
    app.use(express.cookieSession({secret: "sdfr"}));

    //app.set('views', __dirname + '/client/views/');
    app.use(express.static(__dirname + '/client/views'));

});

应用程序.js

app.config(['$routeProvider', function ($routeProvider) {

        $routeProvider.when('/',
            {
                templateUrl: 'partials/home.html',
                controller: 'HomeCtrl'
            });
        $routeProvider.when('/login',
            {
                templateUrl: 'partials/login.html',
                controller: 'LoginCtrl'
            });
        $routeProvider.when('/register',
            {
                templateUrl: 'partials/register.html',
                controller: 'RegisterCtrl'
            });

        $routeProvider.when('/404',
            {
                templateUrl: 'partials/404.html'
            });
        $routeProvider.otherwise({redirectTo: '/404'});

        //$locationProvider.html5Mode(true);

    }])

索引.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html ng-app="contactManager">
<head>
    <meta charset="utf-8">
    <title>Angular Demo</title>
</head>

<body>


<a href="#/">Home</a><br/>
<a href="#/login">Login</a><br/>
<a href="#/register">Register</a><br/>
<a href="#/private">Private</a><br/>
<a href="#/admin">Admin</a><br/>
<a href="#/404">404</a><br/>

<div>
    <div ng-view></div>
</div>

<script src="../lib/vendor/angularjs/1.1.5/angular.min.js"></script>

<script src="../js/app.js"></script>
<script src="../js/controllers.js"></script>

</body>

文件夹结构

错误

4

1 回答 1

3

目前您不包括 JS 中的express.static. index.html 文件中包含的 JS 源代码../js无处可去,因为client/views它是唯一由express.static.

您应该只将整个客户端包含在您的静态中,否则您必须将每个目录包含到您的静态提供程序中。

app.use(express.static(__dirname + '/client/views'));意味着您从 /client/views 提供任何内容,但在该目录之外没有任何内容。

app.use(express.static(__dirname + '/client/js'));将允许您提供 JS 文件夹,但可以在根目录下访问它。您可以使用两个静态提供程序,但第一个将在发生冲突时获胜。你也可以这样做app.use(express.static('/js', __dirname + '/client/js'));,所有你都可以访问客户端/js,yoursite.com/js但这对我来说似乎很奇怪。

在此处阅读有关使用 express.static 的信息:http: //expressjs.com/api.html#middleware

于 2013-06-10T16:44:11.710 回答