express.static
中的静态路径只能是public下的吗?
我用Bower下了bootstrap 但是引用bower_components 中的bootstrap 一直是404
app.use(express.static(path.join(__dirname, 'bower_components')));
app.use(express.static(path.join(__dirname, 'public')));
把bower_components 放到public就正常,否则一直404,多个静态路径怎么设置?
那就把它放到 public 目录下啊!这个也是合理的做法吧。 根目录下建一个 .bowerrc 然后: { "directory": “public/assets” } 这样每次 bower install 就会安装到 public/assets ,当然,使用原来的bower_components也可以。
@klesh 我最后的做法是:
app.use("/bower_components",express.static(path.join(__dirname, 'bower_components')));
是不是很low
@hoozi low 不 low 看你的需求,不作评论。我的看法是这样, public 是用来存放可以公开的静态资源的。当我们在布署站点的时候,一般会有一个前端反向代理如nginx,这个东西其实就是个 web server , 那么它需要指定一个根目录,根目录只有一个,我们进行布置的时候直接把 nginx 指到这个目录下,把 static 中间件去掉就万事大吉了。是不是比较简单。而把它放在根目录,有几个不好的地方,从组织结构上来讲,把静态资源放在两个地方实在没有必要。布署的时候也要多配置一个虚拟路径,麻烦。bower 管理的都是客户端包,都是静态资源,需要开放给客户访问的,暗合 public 的含义。