Javascript nodejs中的语法巴贝尔
晚上好。我遇到了一个语法问题,我正在迁移到babel,我在下面的语法中遇到了问题。需要一个未命名的模块。在nodejs的默认导入中,我可以导入而不必命名导出的模块并传入应用程序,在babel es6中,我已经找不到类似的东西,但已经成功了 节点默认值 出口Javascript nodejs中的语法巴贝尔,javascript,node.js,express,syntax-error,babeljs,Javascript,Node.js,Express,Syntax Error,Babeljs,晚上好。我遇到了一个语法问题,我正在迁移到babel,我在下面的语法中遇到了问题。需要一个未命名的模块。在nodejs的默认导入中,我可以导入而不必命名导出的模块并传入应用程序,在babel es6中,我已经找不到类似的东西,但已经成功了 节点默认值 出口 router.get('/',(req,res)=>res.send('test')) module.exports=app=>app.use('/test',路由器) 需要() require('./routes/uploader')(应用
router.get('/',(req,res)=>res.send('test'))
module.exports=app=>app.use('/test',路由器)
需要()
require('./routes/uploader')(应用程序)
巴别塔
出口
router.get('/',(req,res)=>res.send('test'))
导出默认应用=>app.use('/test',路由器)
进口
从“./routes/uploader”导入路由器
路由器(应用程序)
在babel中,我只能通过命名并将应用程序传递到路由器中来执行导入。我做了很多研究,但没有找到更简单的方法。您是否有更好的办法通过在babel上传递应用程序来导出路由器?
require
仍然可以在babel中使用,如果这样做的话
import router from './routes/uploader'
router(app)
考虑到路由器
功能是/routes/uploader
默认导出,这是ES模块的实现方式。这不是巴贝尔特有的
路由器
导入名称是自我记录的,可以在不是函数而是其他东西的情况下进行调试。而require('./routes/uploader')(app)
是Node.js中常见的快捷方式,可能难以读取和调试
你有没有更好的办法通过在babel上传递应用程序来导出路由器
import
语句应该是静态分析的,它不包含应该计算的代码。没有其他方法可以导出它,ES模块是一个对象,所有导出都是对象属性,它是默认的或命名的导出
尽管模块可以设计为不需要使用函数包装导出
它可以是整个应用程序中使用的app
实例。应用程序应该有一个专用模块,以避免循环依赖:
app.js
index.js
routes.js
另一种更流行的方法是将路由器与应用程序实例解耦。可以安装快速路线,这是一个主要优点:
index.js
route.js
在某些情况下,使用
app=>{…}
包装导出是有益的,但在这里没有必要。无论如何,对于那些确实需要app
实例的模块来说,这是一个很好的约定,例如,要到达app.locals
我认为这样做是个好主意const router=require('./routes/uploader');路由器(应用)
也没有Babel。是的,我同意你的看法,我正在采用Babel,但我会混合一些节点已经支持的内容或Babel,这是一个很好的答案。
export default express();
import app from './app';
import './routes';
app.listen(...);
import app from './app';
app.get(...);
import router from './routes';
const app = express();
app.use(router)
app.listen(...);
const router = express.Router();
router.get(...);
export default router;