ReactJS–;使用Express的公共/管理应用程序
我目前正在尝试在ReactJS中为管理员构建一个带有单独SPA的单页应用程序。我开始构建基本结构(我已经观看/阅读/跟随了4-5个端到端教程),但现在我不知道如何将应用程序的管理部分构建为一个单独的应用程序。如何让express在ReactJS–;使用Express的公共/管理应用程序,express,reactjs,single-page-application,Express,Reactjs,Single Page Application,我目前正在尝试在ReactJS中为管理员构建一个带有单独SPA的单页应用程序。我开始构建基本结构(我已经观看/阅读/跟随了4-5个端到端教程),但现在我不知道如何将应用程序的管理部分构建为一个单独的应用程序。如何让express在admin.localhost:3000或localhost:3000/admin为一个应用程序提供服务,并在根目录下为另一个(公共站点)提供服务?我将如何着手重组我的项目?目前,我的Gulp设置将/app中的所有内容捆绑到/public文件夹中。我想我可以想出如何设置
admin.localhost:3000
或localhost:3000/admin
为一个应用程序提供服务,并在根目录下为另一个(公共站点)提供服务?我将如何着手重组我的项目?目前,我的Gulp设置将/app
中的所有内容捆绑到/public
文件夹中。我想我可以想出如何设置Gulp来捆绑这两个应用程序,我只需要有关Express和结构的帮助
提前谢谢
此外,对于构建ReactJS应用程序后端的任何其他建议,我们都将不胜感激–这不是您经常在教程中看到的内容,因此我不确定我的出发点是否有效。
下面是我项目根目录中的server.js
文件
var config = require('./config');
// Models
var Show = require('./models/show');
var People = require('./models/people');
var Network = require('./models/network');
var app = express();
mongoose.connect(config.database);
mongoose.connection.on('error', function(){
console.info('Error: Could not connect to MongoDB. Did you forget to run `mongod?');
})
app.set('port', process.env.PORT || 3000);
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(req, res) {
Router.match({ routes: routes.default, location: req.url }, function(err, redirectLocation, renderProps) {
if (err) {
res.status(500).send(err.message)
} else if (redirectLocation) {
res.status(302).redirect(redirectLocation.pathname + redirectLocation.search)
} else if (renderProps) {
var html = ReactDOM.renderToString(React.createElement(Router.RoutingContext, renderProps));
var page = swig.renderFile('views/index.html', { html: html });
res.status(200).send(page);
} else {
res.status(404).send('Page Not Found')
}
});
});
var server = require('http').createServer(app);
server.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
目前,我的项目结构如下:
.
├── Gulpfile.js
├── app
│ ├── actions
│ │ ├── ...
│ ├── alt.js
│ ├── components
│ │ ├── ...
│ ├── main.js
│ ├── routes.js
│ ├── stores
│ │ ├── ...
│ └── stylesheets
│ └── ...
├── bower.json
├── config.js
├── models
│ ├── ...
├── package.json
├── public
│ ├── css
│ │ └── main.css
│ ├── favicon.png
│ ├── fonts
│ │ ├── ...
│ ├── img
│ │ ├── ...
│ └── js
│ ├── bundle.js
│ ├── bundle.js.map
│ ├── vendor.bundle.js
│ └── vendor.js
├── server.js
└── views
└── index.html
为你的管理员创建一个新的视图/页面,就像你对主页所做的那样,然后可以为“/admin”或任何你喜欢的返回你的管理员页面的内容创建一个新的路由
app.get('/admin', function(req, res) {
res.render('your admin page');
});
然后在路由上添加一些中间件以验证管理员身份验证为管理员内容创建一个新的视图/页面,就像您对主页所做的那样,然后可以为“/admin”或返回管理员页面的任何内容创建一个新路由
app.get('/admin', function(req, res) {
res.render('your admin page');
});
然后在路由上添加一些中间件以验证管理员身份验证