Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 带快递的前端和后端大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目前我正在使用express.js处理Web应用程序.我想要一个前端和后端.前端应该显示来自数据库的一些内容,在后端我想创建这个内容(类似于cms).

我从这个文件夹结构开始:

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/

我怎样才能解决这个问题?

解决方法

后端样式表由express提供的问题是express如何与您的应用程序体系结构一起处理请求的结果.

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,请注明来意。