亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據 req.headers['accept-language'] 導入動態文件夾

根據 req.headers['accept-language'] 導入動態文件夾

慕田峪7331174 2021-11-18 20:23:28
我正在嘗試實現一項新功能 - 使用 Nodejs 發送多語言郵件。我有這樣的目錄結構:mail-templates__index.js__jp____index.js____mail1.js____mail2.js__en____index.js____mail1.js____mail2.js在indexof enand 中jp,我將導入和導出當前文件夾中的所有文件在indexof 中mail-teamplates,我想根據req.headers['accept-language']動態導入文件夾,如下所示:import * as Mail from `./${variable}` // variable are en or jp depending on accept-language我的問題:我怎么能做到這一點?我如何在此處獲取接受語言以動態導入文件夾?
查看完整描述

2 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

不建議在 http 回調中這樣做。解決您的問題的最佳解決方案是導入所有可用語言,并為每個請求僅使用首選語言。


例子:


在您的mail-templates/index.js:


import * as en from './en';

import * as es from './es';


const defaultLanguage = 'en';

const availableLanguages = { en, es }; 


function getMailByLanguage(language) {

    return availableLanguages[language] || availableLanguages[defaultLanguage];

}


module.exports = getMailByLanguage;

當您想使用它時,只需執行以下操作:


import * as MailTemplates from './mail-templates';


app.get("/", (req, res) => {

    const language = req.headers["language"];

    const Mail  = MailTemplates.getMailByLanguage(language);


    // Do your stuff's here

    ...

});


查看完整回答
反對 回復 2021-11-18
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您需要在請求處理程序函數中 require 模塊。


如果使用快速服務器,您可以嘗試這樣的操作。


app.get("/", async(req, res) => {

  const language = req.headers["language"] || "en";

  const module  = `./${language}.js`;

  const greet =  require(module);

  res.json(greet());

  }

)

REPL 鏈接。 https://repl.it/repls/UsedSelfishVisitor


您可以運行以下代碼段來檢查基于language標題的響應


//Fetching data using laguage: es


fetch("https://UsedSelfishVisitor--five-nine.repl.co", {

  method:"GET",

  headers: {

  language: "es"

}

}).then(res => res.json()).then(data => console.log(data));



//Fetching data using language: en

fetch("https://UsedSelfishVisitor--five-nine.repl.co", {

  method:"GET",

  headers: {

  language: "en"

}

}).then(res => res.json()).then(data => console.log(data));


查看完整回答
反對 回復 2021-11-18
  • 2 回答
  • 0 關注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號