我怎样才能服务的HTML,CSS和JS全部保持路由在一个module.export在不同的文件? 现在只有html服务

我是一个新手使用快递,结果是通过使这个networking应用程序我的方式笨拙。

我在一个名为route.js的module.ex里面有一个不同的path,我在app.js里面pipe理所有这些,我希望能够提供一个HTML页面并保存在模块中。 我已经使用sendFile这样做了,但它不提供CSS和JS。 我能做些什么来解决这个问题?

app.js

//setup var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); var port = process.env.PORT || 3000; var mongoose = require('mongoose'); var flash = require('connect-flash'); var passport = require('passport'); var session = require('express-session'); var path = require('path'); //db var configDB = require('./config/database.js'); mongoose.connect(configDB.url); require('./config/passport')(passport); // view engine setup //app.set('views', path.join(__dirname, 'views')); //app.set('view engine', 'jade'); app.set('view engine', 'ejs'); //routes //app.use('/', index); //app.use('/users', users); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); //passport app.use(session({secret: 'secret'})); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); //routes require('./app/routes.js')(app, passport); // catch 404 and forward to error handler /*app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });*/ // error handler /*app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); });*/ module.exports = app; //launch app.listen(port); console.log('Website starting on port ' + port); 

routes.js

 module.exports = function(app,passport) { ... //--timesheet section--- app.get('/timesheet', function(req, res) { var path = require('path'); res.sendFile(path.resolve('public/timesheet.html')); }); ... } 

你想使用一个视图引擎和一个静态目录。 你已经有一些代码了。

您使用.ejs视图引擎:

 app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); 

你可以定义你的静态并指定一个path前缀:

 app.use('/assets', express.static(path.join(__dirname, 'public'))); 

在你的views目录中,把你的htmls加上.ejs扩展名,例如.ejs 。 然后,您可以为您的css / js / image文件创buildassets目录,并使用/assets/style.css在您的timesheet.ejs引用它们。

最后,在你的路线中,你需要渲染模板:

 res.render('timesheet')