代码之家  ›  专栏  ›  技术社区  ›  xrisk

Coffeescript:如何在一行中导入快递模块

  •  0
  • xrisk  · 技术社区  · 10 年前

    目前,我必须写

    app = require 'express'
    app()
    

    要获得等效的Javascript:

    var app;  
    app = require('express');
    app();
    

    我如何在一行中做到这一点?

    4 回复  |  直到 10 年前
        1
  •  2
  •   Leonid Beschastny Dmitry Chirkin    10 年前

    我想把这里的事情弄清楚。

    首先,这里是 常见的 导入express模块并创建应用程序的方法:

    express = require 'express'
    app = express()
    

    app 这里的变量保存一个新创建的express应用程序,而 express 变量保存框架本身。

    现在,假设这里不需要express框架,只需要一个应用程序。在这种情况下,您可以写:

    app = do require 'express'
    

    如果你不需要一个变量来保存你的应用程序,你可以这样写:

    do express = require 'express'
    

    尽管我无法想象为什么有人会想要它。当然,您可以将所有内容链接起来:

    do express = require 'express'
      .use(express.static('public'))
      .listen(3000)
    

    但对我来说,这看起来一团糟。

        2
  •  1
  •   MT.    10 年前

    你可以这样做: require('express')() 。但这种方法的缺点是,您将无法访问 app 变量

        3
  •  1
  •   Lenar Fattahov    10 年前

    试试这个

    do app = require 'express'
    
        4
  •  1
  •   JD Byrnes    10 年前

    有多种方法可以满足您的要求。。。

    对于正确答案(有 准确的 javascript输出),请尝试以下操作之一:

    app = require 'express'; do app
    app = require 'express'; app()
    

    其他一些选项包括:

    (app = require 'express') null
    do app = require 'express'
    app = require 'express'; app null
    

    这导致Javascript输出略有不同,但工作完全相同。