javascript - 根据 req.headers 导入动态文件夹 ['accept-language' ]

标签 javascript node.js middleware

我正在尝试实现一项新功能 - 使用 Nodejs 发送多语言邮件。

我的目录结构是这样的:

mail-templates
__index.js
__jp
____index.js
____mail1.js
____mail2.js
__en
____index.js
____mail1.js
____mail2.js

enjpindex中,我将导入和导出当前文件夹中的所有文件

mail-teamplatesindex 中,我想根据 req.headers['accept-language'] 动态导入文件夹,例如这个:

import * as Mail from `./${variable}` // variable are en or jp depending on accept-language

我的问题:我怎样才能做到这一点?我如何在这里获取接受语言来动态导入文件夹?

最佳答案

不建议在 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
    ...
});

关于javascript - 根据 req.headers 导入动态文件夹 ['accept-language' ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363605/

相关文章:

javascript - NodeJS Websocket 客户端保持挂起模式

javascript - 使用 geojson 数据和 oneeachfeature 的传单弹出窗口内的 Highcharts

javascript - 如何使用 Vanilla JavaScript 或 JQuery 实现受控组件(在 ReactJS 中)

javascript - mongodb 仅更新特定子元素

web-applications - `alice` 未调用中间件

php - 如何从表格内容中获取记录作为弹出表单的数据并显示

mysql - 如何使用 Node.js 返回 SQL 查询结果并将其存储在 localhost 窗口变量中,而不是终端中?

node.js - 仅没有范围的Nodejs DynamoDB CreateTable哈希返回ValidationException

php - 将参数传递给Laravel中的中间件

unit-testing - 访问日志中间件的情况下如何做单元测试