繁体   English   中英

NodeJs 设置生产和开发

[英]NodeJs setting up production and development

在完成基础课程后,我正在学习 NodeJs 高级概念。

我正在关注 stepehen 磨床课程,我们将在那里使用他的以下回购

我最初正在浏览 repo,那里的东西对我来说是新鲜的

我的主要问题围绕他在 repo 中的index.js文件展开这不是主要问题,但首先他做了这样的事情

require('./routes/authRoutes')(app);
require('./routes/blogRoutes')(app);

这是否等同于这样的事情

const auth = require('./routes/auth.js') 
const profile = require("./routes/profile.js")
app.use('/auth', auth)
app.use('/profile', profile)

第二,初级问题,在他的 index.js 文件中,他做了这样的事情

if (['production'].includes(process.env.NODE_ENV)) {
  app.use(express.static('client/build'));

  const path = require('path');
  app.get('*', (req, res) => {
    res.sendFile(path.resolve('client', 'build', 'index.html'));
  });
}

这对我来说根本没有意义,有人可以解释一下上面的代码是做什么的吗? 还有一篇有趣的文章,可以帮助我理解。

另外,有人可以告诉我path模块有什么作用吗? 我浏览了他们的 do 文档,并且能够理解该路径允许我们访问节点项目之外的文件。 这是正确的理解吗?

关于你的第一个问题:

这是不一样的。 app.use(...)定义了一个在所有路由上执行的中间件。 在这里,两个路由文件都导出一个函数,它接受一个参数:应用程序(ExpressJS 服务器)实例。 因此, require('./routes/blogRoutes')为您提供了一个函数app => {...} ,通过添加括号和app变量作为参数,您可以立即使用当前服务器(应用程序)实例执行此函数。 这最终将创建路由文件中定义的所有路由。

关于你的第二个问题:

if正在测试 NODE_ENV 变量是否等于生产。 如果是生产模式, app.use(express.static('client/build')); 告诉 ExpressJS 从client/build文件夹提供静态文件。 其余代码app.get('*', ...)发送 index.html 文件以调用除两个路由文件中定义的路由之外的任何路由。 path.resolve唯一作用是轻松构建index.html文件的绝对路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM