Node.js 在express应用程序中动态设置受支持地区的国家/地区

Node.js 在express应用程序中动态设置受支持地区的国家/地区,node.js,express,coffeescript,Node.js,Express,Coffeescript,我正在使用node cldr library()进行本地化,并且有一个国家/地区的选项列表 目前,我正在territoriesList=cldr.extractTerritoriydisplaynames('en')中设置'en',如何从请求中将lang代码推送到这个位置 我有这个 .use (req, res, next) -> code = i18next.lng().substr(0, 2) territoriesList = cldr.extractTerr

我正在使用node cldr library()进行本地化,并且有一个国家/地区的选项列表

目前,我正在
territoriesList=cldr.extractTerritoriydisplaynames('en')
中设置
'en'
,如何从请求中将lang代码推送到这个位置

我有这个

.use (req, res, next) ->
      code = i18next.lng().substr(0, 2)
      territoriesList = cldr.extractTerritoryDisplayNames(code)
      countries = []
      regions = []
      territories = __.each territoriesList, (value, index, list) ->
        if (isNaN(index))
          countries[index] = value
        else
          regions[index] = value
但这是对每个请求都这样做的,因为它像中间件一样被添加,而且中间件甚至会对每个请求运行,甚至对image/css请求也是如此

但是,由于这些值不会在请求之间更改,因此只有当用户更改语言时,才不应该使用中间件


非常感谢您的建议。

使用中间件。中间件将根据app.use声明位置执行。如果发送用户css或图像时没有语言轮换,请在.use('/js',express.static(“public/js”,maxAgesOption))之后添加此中间件

对于性能问题,您可以使用任何内存缓存存储,例如Redis。始终从内存存储中获取用户语言代码,当用户更新其设置时,只需将值更改为此用户的内存存储即可

.use (req, res, next) ->
      code = i18next.lng().substr(0, 2)
      territoriesList = cldr.extractTerritoryDisplayNames(code)
      countries = []
      regions = []
      territories = __.each territoriesList, (value, index, list) ->
        if (isNaN(index))
          countries[index] = value
        else
          regions[index] = value