【发布时间】:2014-08-06 17:49:00
【问题描述】:
目前我正在使用 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', function(req, res) {
res.render('layout', {title: 'About us'});
});
module.exports = app;
和 core.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('/login', function(req, res) {
res.render('layout', {title: 'Login'});
});
app.get('/login/dashboard', function(req, res) {
res.render('layout', {title: 'Dashboard'});
});
module.exports = app;
express.js 加载正确的模板但不加载正确的样式表。对于每个路由,都会加载后端样式表。
localhost:3000/about
应该在
中加载样式表frontend/public/css/
和
localhost:3000/login
应该在
中加载cssbackend/public/css/
我该如何解决这个问题?
【问题讨论】:
-
使用 firebug 查看它是否加载了所有不同的样式表。如果是,那么问题出在您的观点上,而不是服务器上。我还想在这里解决术语使用不当的问题。
public中的所有内容通常被认为是“前端”。 Node 和 Express 是后端服务器技术。