【问题标题】:How to avoid adding ExpressJS app.get() for each of my html files?如何避免为我的每个 html 文件添加 ExpressJS app.get()?
【发布时间】:2016-08-02 07:34:24
【问题描述】:

我有以下项目结构(为简洁起见省略了无关文件):

- app
    - authentication
        - authentication.controller.js
        - authentication.routes.js
        - authentication.scss
        - registration.html
        - user.model.js
    - app.js
    - app.scss
- server
    - server.controller.js
    - server.js
    - server.routes.js
- views
    - index.html

问题是,当我使用 html 文件作为 AngularJS 路由的 templateUrl 时,我收到“无法获取 /path/to/someFile.html”错误。

(function() {
    angular
        .module('appName', [
            'ngMessages',
            'ngResource',
            'ui.router'
        ])
        .config(function($stateProvider) {
            $stateProvider
                .state('registration', {
                    url: '/registration',
                    templateUrl: '/app/authentication/registration.html',
                    controller: 'AuthenticationController'
                });
        });
})();

这是否意味着我必须在 server.js 文件中为我使用的每个 html 文件添加以下代码块?

app.get('/app/authentication/registration.html', function(request, response) {
    response.sendFile(path.resolve('app/authentication/registration.html'));
});

这似乎是一种巨大的痛苦。我目前还必须为我拥有的每个 css 和 js 文件执行此操作。我可以使用 gulp 来连接它们,所以我只需要一个 app.get 来处理一个 css 和一个 js 文件,但我不能为 html 文件这样做。

有没有更好的方法来处理这个问题?每个 html 文件都有一个角度路由和一个快速路由没有多大意义。

【问题讨论】:

    标签: javascript angularjs node.js express angularjs-routing


    【解决方案1】:

    您可以使用 Express 轻松提供静态文件:

    app.use(express.static('views'));
    // http://localhost/ -> views/index.html
    

    将目录提供给您可以使用的特定路径:

    app.use('/app', express.static('app'));
    // http://localhost/app/authentication/registration.html
    //      -> app/authentication/registration.html
    

    这将解析路径并提供页面。

    如果您只想提供特定页面(例如视图),我建议您将它们全部放在一个目录中,并且只提供静态目录。

    另请参阅:Express API

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2010-11-01
      • 2021-12-08
      • 2017-03-11
      • 2012-06-27
      相关资源
      最近更新 更多