3

少し戸惑います。Nodejs の使用

フォルダ構成イメージを添付します。

index.htmlClient フォルダーのルートに置くと、すべてが正常に機能します。

一方、画像のようにviewsフォルダーに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'));

});

app.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);

    }])

index.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/viewsexpress.static

クライアント全体を静的に含める必要があります。そうしないと、静的プロバイダーに各ディレクトリを含める必要があります。

app.use(express.static(__dirname + '/client/views'));/client/views から何かを提供しているが、そのディレクトリの外側には何も提供していないことを意味します。

app.use(express.static(__dirname + '/client/js'));JS フォルダーを提供できますが、ルートでアクセスされます。2 つの静的プロバイダーを使用できますが、競合が発生した場合は最初のプロバイダーが優先されます。app.use(express.static('/js', __dirname + '/client/js'));client/js にアクセスするすべての方法を実行することもできますyoursite.com/jsが、それは私には奇妙に思えます。

ここで express.static の使用について読んでください: http://expressjs.com/api.html#middleware

于 2013-06-10T16:44:11.710 に答える