大佬教程收集整理的这篇文章主要介绍了node.js – 带快递的前端和后端,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我从这个文件夹结构开始:
app/ ├── frontend/ │ ├── public //Javascript,css & images only for frontend │ ├── views //Frontend jade templates │ └── client.js │ ├── BACkend/ │ ├── public //Only BACkend css & stuff │ └── views //BACkend templates │ └── core.js │ └── server.js //Starts the whole application
server.js
var express = require('express'); var app = express(); var config = require('../app/config.json')[app.get('env')]; var BACkend = require('./BACkend/core'); var frontend = require('./frontend/client'); app.use(BACkend); app.use(frontend); app.set('port',config.port || 3000); var server = app.listen(app.get('port'),function() { console.log('Server listening on port ' + app.get('port') + ' in ' + app.get('env') + ' mode'); });
client.js
var express = require('express'); var app = express(); app.set('views',__dirname + '/views'); app.set('view ENGIne','jade'); app.use(express.static(__dirname + '/public')); app.get('/',function(req,res) { res.render('layout',{title: 'Frontpage'}); }); app.get('/about',{title: 'About us'}); }); module.exports = app;
和core.js
var express = require('express'); var app = express(); app.set('views','jade'); app.use(express.static(__dirname + '/public')); app.get('/login',{title: 'Login'}); }); app.get('/login/dashboard',{title: 'Dashboard'}); }); module.exports = app;
express.js加载正确的模板,但不加载正确的样式表.对于每个路由,都会加载后端样式表.
localhost:3000/about
应加载样式表
frontend/public/css/
和
localhost:3000/login
应该加载css
BACkend/public/css/
我怎样才能解决这个问题?
Web浏览器请求样式表/css/site.css express接受此请求并处理所有中间件和路由器.由于您设置了这样的主应用程序
app.use(BACkend); app.use(frontend);
后端应用程序首先处理请求.由于您已在后端应用程序中注册了静态中间件
app.use(express.static(__dirname + '/public'));
如果此样式表存在,则样式表/css/site.css将从您的后端应用程序提供.每个中间件和路由都会发生这种情况.因此,客户端请求的任何路由或资产(css,imagE)将首先由您的后端应用程序处理.因此,如果通过相同的路线提供服务,后端应用中的路由和资产将“隐藏”前端应用中的路由和资产.
解决您问题的一个简单方法是,您不是从主应用程序提供后端和前端应用程序,而是在server.js中启动两个Express应用程序:
var config = require('../app/config.json')[process.env.NODE_ENV]; var BACkend = require('./BACkend/core'); BACkend.set('port',config.BACkend.port || 3000); var BACkendServer = BACkend.listen(BACkend.get('port'),function() { console.log('BACkend server listening on port ' + BACkend.get('port') + ' in ' + BACkend.get('env') + ' mode'); }); var frontend = require('./frontend/client'); frontend.set('port',config.frontend.port || 3001); var frontendServer = frontend.listen(frontend.get('port'),function() { console.log('Frontend server listening on port ' + frontend.get('port') + ' in ' + frontend.get('env') + ' mode'); });
以上是大佬教程为你收集整理的node.js – 带快递的前端和后端全部内容,希望文章能够帮你解决node.js – 带快递的前端和后端所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。