首页 文章

使用express提供Angular 2/4代码

提问于
浏览
0

在角度1中,我能够为前端和后端都有一个项目,因为我可以使用快速功能来提供前端代码

app.use('/frontEnd', express.static('frontend'));

这种方法有一个错误,因为目前使用angular 4快速启动种子,index.html不在根前端文件夹中,而是在根前端文件夹中的src . 所以为了解释我试过的:

app.use('/frontEnd', express.static('frontend/src'));

那"works"但是当你拉起 localhost:8080/frontEnd 时它会中断 .

QUESTION :这方面的工作是什么?

ALTERNATE QUESTION :如果这不再可用,1 . 有没有办法为两端都有一个项目或2.是否正确的程序只是让双方在他们自己的项目中分开?

1 回答

  • 0

    由于History API,Express需要捕获所有请求并提供 index.html 然后让Angular处理路由 .

    因此,您应该在Express应用中使用的代码段是:

    // Include the path module
    include path from 'path'
    
    // Specify your static path
    app.use('/assets', express.static(path.join(__dirname, 'frontend/src/assets')));
    
    // Then catch all requests made to http://localhost:8080/frontEnd
    app.get('/frontEnd/*', (req, res, next) => {
      res.sendFile(path.join(__dirname, 'frontend/src/index.html'));
    });
    

    现在,当您要加载静态此类图像,脚本等时,路径 /assets 将从 frontend/src/assets 加载静态 . 如果您未指定资产路径,则每个资产请求都将返回index.html!

    另外,当你去刺激时,想想server-side rendering . :)

相关问题