EJS Node.JS Express – 超过1个参数的URL时的CSSpath问题
首先为我可怜的英语感到抱歉!
那么,我正在开发一个使用NodeJS / Express和EJS作为模板引擎的Web应用程序。
我目前正面临一个问题。
这是我的文件夹层次结构
App folder/ |___ server.js / |___ node_modules / |___ required / |___ bootstrap / |___ css / |___ font-awesome / |___ images / |___ views / |___ default.ejs |___ home.ejs |___ mission.ejs |___ mission / |___ create.ejs |___ delete.ejs
这是我的server.jsconfiguration:
// Setup le serveur http var app = express(); var code = 4567; ////// CONFIGURATION // Définit le chemin relatif pour tous les fichiers utilisés dans l'app app.use(express.static(__dirname)); console.log(__dirname + ""); app.set('views',__dirname + '/views'); app.get('/:app', function(req, res) { if (req.session.logged == false) { res.render('login.ejs'); }else{ if(api.page_exist(req.params.app)){ res.render('default.ejs', {app:req.params.app}); }else{ /*console.log("La page demandée n'existe pas"); */ res.redirect('/home'); } } }); app.get('/:app/:action', function(req,res){ if(api.page_folder_exist(req.params.app,req.params.action)){ console.log(__dirname); res.render('default.ejs', {app:req.params.app, action:req.params.action}); }else{ res.redirect('/'); } });
基本上,我有两个路线: /:app/
我加载到模板default.ejs的价值,我包括app.ejs
应用程序可以是“家”,“任务”等…此路线运作良好
其他路线是: /:app/:action
其中:app定义文件夹,例如文件夹任务和动作定义动作,例如创build 。 使用URL /mission/create
包含default.ejs
的模板/mission/create.ejs
并显示它。
它的工作,但我有一个关于加载CSS的path的问题。 通过使用这个路由,浏览器试图得到: http://localhost:8333/mission/required/font-awesome-4.5.0/css/font-awesome.min.css
而不是http://localhost:8333/required/font-awesome-4.5.0/css/font-awesome.min.css
就像在第一个路由中一样。
这是我如何链接我的CSS文件:
<link href="required/css/normalize.css" rel="stylesheet"> <link href="required/css/common.css" rel="stylesheet"> <link href="required/css/style.css" rel="stylesheet">
你有什么主意吗 ? 我认为这是关于我的路线configuration,但我找不到解决scheme。
看起来你可能想尝试这个。
Express按照您使用express.static中间件function设置静态目录的顺序查找文件。
要为express.static函数提供的文件创build虚拟path前缀(path实际上不存在于文件系统中),请为静态目录指定一个装载path,如下所示:
app.use('/required', express.static('required'));
这应该可能代替你的代码
// Définit le chemin relatif pour tous les fichiers utilisés dans l'app app.use(express.static(__dirname));
现在,您可以从/静态path前缀加载公共目录中的文件。
例如:
http://localhost:8333/required/bootstrap/somefile.css http://localhost:8333/required/css/somefile.css http://localhost:8333/required/font-awesome/somefile.css
更多信息在这里