V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ff1m80
V2EX  ›  Node.js

pug 引擎如何加载静态文件?

  •  
  •   ff1m80 · 2016-09-08 20:22:06 +08:00 · 7094 次点击
    这是一个创建于 2998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    node 环境下,利用 express+pug 开发一个页面,静态文件配置如下:

    app.use('/static', express.static(__dirname + '/public'));
    

    然后在 pug 模板中引入 css 文件:

    link(href='/static/css/layout.css' type='text/css' rel='stylesheet')
    

    这样的话,在开发环境下是正常的,但是当我部署到生产环境下,绑定在域名 www.aaa.com/bbb 的时候,静态文件仍然会访问 www.aaa.com/static/css/layout.css, 这种情况该怎么处理?

    如果不用专门的静态服务器呢,只有三五个 css 文件不需要啊。

    7 条回复    2016-09-10 18:09:25 +08:00
    bdbai
        1
    bdbai  
       2016-09-08 22:47:54 +08:00 via Android
    bdbai
        2
    bdbai  
       2016-09-08 22:53:27 +08:00 via Android
    额 把 /static 前面的斜杠去掉就行。
    bdbai
        3
    bdbai  
       2016-09-08 22:54:48 +08:00 via Android
    @bdbai 我是说 pug 模板里的斜杠
    ff1m80
        4
    ff1m80  
    OP
       2016-09-08 23:07:52 +08:00
    @bdbai 去掉斜杠的话,相对目录读取的是当前文件夹下的。

    不过我找到解决方法了。
    在 app.js 里:
    ```
    app.locals.assetUrl = function() { return config[env].assetHost;}
    ```
    然后在 pug 文件里
    ```
    link(href=assetUrl('/static/css/layout.css') type='text/css' rel='stylesheet')
    ```

    哈哈哈,我就是看隔壁的那个 kails 学会的
    ff1m80
        5
    ff1m80  
    OP
       2016-09-08 23:08:40 +08:00
    囧, md 写错了
    ff1m80
        6
    ff1m80  
    OP
       2016-09-08 23:11:26 +08:00
    囧, assetUrl 那个函数也写错了,没有把参数加进去, 应该是 function(asset) { return config[env].assetHost + asset; }
    sensui7
        7
    sensui7  
       2016-09-10 18:09:25 +08:00
    @ff1m80 我想起了被 ci 中的 site_url 支配的日子
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 11:26 · PVG 19:26 · LAX 03:26 · JFK 06:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.