当前正在使用MERN(mongodb,expressjs,reactjs,nodejs)开发Web应用程序,并且由于一切都相互依赖,因此我陷入了什么部分将留在服务器(服务器端)以及哪一部分是将在发出请求时发送给客户端(客户端)。
我正在使用https://github.com/keithweaver/MERN-boilerplate这种架构作为基础。
例如,这是server.js文件的内容:
const express = require('express');
const fs = require('fs');
const historyApiFallback = require('connect-history-api-fallback');
const mongoose = require('mongoose');
const path = require('path');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const config = require('../config/config');
const webpackConfig = require('../webpack.config');
const isDev = process.env.NODE_ENV !== 'production';
const port = process.env.PORT || 8080;
// Configuration
// ================================================================================================
// Set up Mongoose
mongoose.connect(isDev ? config.db_dev : config.db);
mongoose.Promise = global.Promise;
const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
// API routes
require('./routes')(app);
app.use(express.static(path.resolve(__dirname, '../dist')));
app.get('*', function (req, res) {
res.sendFile(path.resolve(__dirname, '../dist/index.html'));
res.end();
});
app.listen(port, '0.0.0.0', (err) => {
if (err) {
console.log(err);
}
console.info('>>> Open http://0.0.0.0:%s/ in your browser.', port);
});
module.exports = app;
这部分代码会在网站加载后发送给客户端。我们可以看到,如果尝试使用mongoose
连接到数据库,则会从客户端建立与数据库的连接。
当所有这些部分(react.js文件和express.js文件)都相互依赖时,我感到很困惑,不要迷失其行为。