【问题标题】:change href url in all pages in javascript nodejs在javascript nodejs中更改所有页面中的href url
【发布时间】:2019-06-24 01:57:39
【问题描述】:

我已经实现了具有多种语言下拉菜单的引导导航栏,当我选择语言时,它将翻译页面,如何更改其他页面的 url 和按钮文本 当我选择french 时,将所有网址更改为/fr/about/fr/contact。 如何使用 javascript

//app.js
var express = require('express');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs')
var languageRouter = require('./routes/language');

app.use('/:lan', languageRouter);
app.use('/:lan/contact', contactusRouter);
app.use('/:lan/aboutus', aboutusRouter);
//language.js
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
    res.render('index.ejs'});
});
module.exports = router;
//aboutus.js
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
    res.render('aboutus.ejs');
});
module.exports = router;
//header.ejs
<body>
  <nav>
    <div class="dropdown">
 <ul class="navbar-nav mr-auto">
            <li class="nav-item dropdown mr-4">
                <a class="nav-link dropdown-toggle" href="/en/about" id="navbarDropdownProvider" data-toggle="dropdown"
                    aria-haspopup="true" aria-expanded="false">
                   about us
                </a>
</li>
<li class="nav-item dropdown mr-4">
                <a class="nav-link dropdown-toggle" href="/en/contact" id="navbarDropdownProvider" data-toggle="dropdown"
                    aria-haspopup="true" aria-expanded="false">
                   contact us
                </a>
</li>
</ul>
      <button id="language" class="btn btn-warning dropdown-toggle" type="button" id="dropdownMenu2"
        data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" onclick="clickButton()">
        English
      </button>
      <div id="languagelist" class="dropdown-menu" aria-labelledby="dropdownMenu2" onclick="clickItem(); return false">
        <a class="dropdown-item" href="/en">English</a>
        <a class="dropdown-item" href="/fr">French</a>
      </div>
    </div>
  </nav>
</body>
//index.ejs

  <%- include header.ejs %>
  <h1>Welcome to My Site</h1>

【问题讨论】:

  • 运气好了吗?
  • @jonahe 感谢您的回复,但还没有,当我单击下拉列表french 时,它应该更改所有导航链接,如 about ,联系/fr/about /fr/contact
  • 如果您学习并了解此处使用的方法背后的原理stackoverflow.com/a/56731675/4763083,您可能会看到您可以扩展它以将您选择的语言代码也传递给您的模板(.ejs-files),然后您可以使用语言代码根据选择的语言动态构建不同的href

标签: javascript html ajax navbar


【解决方案1】:

应该可以用 express 来“嵌套”路由。 (例如查看这个答案Rest with Express.js nested router

在你的情况下,我认为这意味着你的旧代码

var languageRouter = require('./routes/language');

app.use('/:lan', languageRouter);
app.use('/:lan/contact', contactusRouter);
app.use('/:lan/aboutus', aboutusRouter);

变成这样:

var languageRouter = require('./routes/language');

app.use('/:lan', languageRouter);
languageRouter.use('/:lan/contact', contactusRouter);
languageRouter.use('/:lan/aboutus', aboutusRouter);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多