Javascript Express.js';app&x27;一行而不是两行

Javascript Express.js';app&x27;一行而不是两行,javascript,node.js,express,ecmascript-6,Javascript,Node.js,Express,Ecmascript 6,使用Express时,我总是必须这样做 const express=require('express'); 常量app=express(); 或者,为了让它更有凝聚力,我有时会这样做 const express=require('express'), app=express(); 有没有一种方法可以把它写成一行而不是两行?使用es6很容易:const[]=[] const[app=express()]=[require('express'); 这种类型的语法糖是ES6JavaScript真

使用Express时,我总是必须这样做

const express=require('express');
常量app=express();
或者,为了让它更有凝聚力,我有时会这样做

const
express=require('express'),
app=express();

有没有一种方法可以把它写成一行而不是两行?

使用es6很容易:
const[]=[]

const[app=express()]=[require('express');
这种类型的语法糖是ES6JavaScript真正令人惊奇的地方

如果我想添加更多模块,如
fs
path
,它可以被分解以公开方法,这样在使用附加方法之前,您就不必总是键入
fs
path

const[fs,path,app=express()]=[require('fs')、require('path')、require('express')]
现在我已经声明了通常只有一行中有4行的内容

通过使用解构,它可以更进一步,例如,我想异步读取文件,这通常需要
fs
方法和
path
方法

const[{readFileSync},{resolve,join},app=express()]=[require('fs')、require('path')、require('express')]
所以,最终它变得有点马虎,把理智带回到断线的地方

const[
{readFileSync},
{解析,加入},
app=express()
]=[require('fs')、require('path')、require('express')]
现在,通过
es6
的魔力,您可以进一步简化代码

const[
{readFileSync:read,writeFileSync:write},
{解析,加入},
app=express()
]=[require('fs')、require('path')、require('express')]

在这个场景中,我现在只需要调用
read
而不是
readFileSync
write
而不是
writeFileSync

这是其中的一个“仅仅因为你可以,并不意味着你应该”。像js这样的无关联语言的优点是没有我不应该做的事情。我有做任何我想做的事的自由。从实际意义上讲,这是没有用的。如果你只习惯于用express写独白,那么阅读上面的内容是在浪费你的时间。但express不仅仅是一个东西,它只能用作一个快速的无意义的页面服务器,使用读流管道来写流响应,或者作为一个容器中运行的微服务。我相信干净的代码和协作。使用它,或者不使用它。这是你的选择。我当然支持“干净的代码和协作”,但像这样的非传统代码是不干净的,这使得协作更加困难。你最终得到了一些难以理解的东西,并且使用了更多的台词;即使我同意节省垂直空间应该是一个目标,你还是错过了。当然你可以在很多事情上使用Express(或者…导入,我想是吧?),但这与这里的讨论完全是正交的,不清楚你为什么认为这是一个理由。当然,这是一个选择,但一些敏感和缺乏经验的人可能会做出错误的选择。而且要明确的是,对于这些人来说,每个导入的对象分解和别名都是好的,所有导入的数组分解使得读取、重用和重构更加困难。此外,回想起来,我意识到这根本不起作用。在
const[foo=bar]=[…]
中,只有当数组中的第一个元素
未定义时(例如,当数组为空时),才会计算默认值
bar
<代码>应用程序
仍将是
require(“express”)
(除非这导致
未定义
,在这种情况下会导致引用错误)。还要注意,规范与约定不是一回事。