【问题标题】:Paths in nodejsnodejs中的路径
【发布时间】:2015-04-27 11:34:37
【问题描述】:

我在 nodeJs 中遇到了路径问题,当他像这样在 url 中指定语言时,我将用户路由到索引页面:

   app.all('/:locale?/index',function(req,res,next){
      if(!req.params.locale){
         console.log('no param');
     res.render('index');
      } else {
       var language = req.params.locale;
        i18n.setLocale(language);
       res.render('index');
      }
    });

但是,在我的 index.html 页面中,图像的来源是这样指定的: ./images/img1.png ,当我路由用户时,我的 index.html 显示图像未找到,因为它考虑了路径“ lang/ images/img1.png ,它考虑了我网址中的语言,你能帮忙吗?

谢谢

【问题讨论】:

    标签: javascript node.js i18n-node


    【解决方案1】:

    路径中的. 告诉应用查看当前文件夹,即lang。您应该可以通过指定 URL 来解决此问题:

    <img src="http://myApp.com/images/img1.png">
    

    或通过指定根目录的路径(除http://myApp.com 之外的所有内容)

    <img src="/images/img1.png">
    

    这可能是一个更好的解决方案,因为您可以轻松地交换您的域;例如,在本地机器上工作 (http://localhost:3000/) 与部署的应用程序 (http://myApp.com)

    一般来说,我几乎总是使用从根目录开始的路径而不是相对路径(例如,./...),因为我可能会在重构中移动页面,并且在以下情况下查找直接引用比查找相对引用更容易我必须改变任何东西。

    【讨论】:

    • 谢谢你的回答,我会试试这个,让你知道他的结果。顺便说一句,你知道模块 i18n 吗?我只想确认我的开发方式是否正确/最好
    • @yatikamika 我用过 i18n,但我当然不是专家。不过,我相信您可以在谷歌上搜索最佳实践(例如,快速搜索发现 ejohn.org/blog/a-strategy-for-i18n-and-node,这似乎是一个好的开始)。它推荐子域(lang.myApp.com),但我也会检查其他来源。
    • 我已经检查过了,但严重的是我没有找到问题的答案,我将使用子目录,但我不知道将语言放在此处是否更好 www.example.com /fr-FR/index.html 或 www.example.com/index.html/fr-FR。我不知道我是否必须重定向,或者只使用渲染将 fr-FR 保留在 URL 中,您对这类问题有什么想法吗?
    • 不幸的是,这超出了我的专业范围。也许另一个问题是有道理的?
    • Yes :) ,当我们检测到 index '/:locale?/index' 之前的变量时,如何检查它是否存在于支持的语言中?因为实际上当我输入 www.example.com/somethingAnything/index.html 时,它会重定向我:/ 它认为SomethingAanything 是一种语言,并且它不会在支持的语言中自动检查它,我不得不做一个循环为了检查。?
    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2020-06-27
    • 2020-06-29
    • 2015-04-07
    相关资源
    最近更新 更多