我正在學習羽毛,我有一個問題。我試圖做類似於PHP的開關的文件包含。如何使用feathers.js將文件包含到index.html中?
例如:
/src/middleware/index.js
'use strict';
const handler = require('feathers-errors/handler');
const notFound = require('./not-found-handler');
const logger = require('./logger');
const cheerio = require('cheerio')
const fs = require('fs');
const path = require('path')
const filename = path.join(__dirname, '..', '..', 'public')
module.exports = function() {
// Add your custom middleware here. Remember, that
// just like Express the order matters, so error
// handling middleware should go last.
const app = this;
app.get('/record.html', function(req, res) {
var html = fs.readFileSync(filename + '/index.html');
var home = fs.readFileSync(filename + '/record.html');
var $ = cheerio.load(html);
$('#content').html(home);
res.send($.html());
});
app.use(notFound());
app.use(logger(app));
app.use(handler());
};
我糾正了我的文件。我確信自己在寫作的時候會做,但不幸的是我有一個問題。當我打開http://127.0.0.1:3030/record.html時,我只收到record.html,沒有混合文件。如果我改變records.html上record.html的路徑,例如
app.get('/records.html', function(req, res) {
var html = fs.readFileSync(filename + '/index.html');
var home = fs.readFileSync(filename + '/record.html');
var $ = cheerio.load(html);
$('#content').html(home);
res.send($.html());
});
這樣可以,但我想在URL中有原始路徑。 URL必須具有文件名稱之類的路徑。 反過來,如果我添加:file改爲records.html,如果文件不存在,我會收到錯誤「Oh no!」而不是404
例如:
app.get('/:file.html', function(req, res) {
var file = req.params.file
var html = fs.readFileSync(filename + '/index.html');
var home = fs.readFileSync(filename + '/' + file + '.html');
var $ = cheerio.load(html);
$('#content').html(home);
res.send($.html());
});
然而一個問題。
const path = require('path')
const filename = path.join(__dirname, '..', '..', 'public')
如果app.js文件是const的路徑,我必須把上面的代碼中的每個文件中像中間件或服務時,我想從公共目錄服務文件?我不能在這個應用程序中的所有文件使用全局變量?
app.js
'use strict';
const path = require('path'); <-- HERE const path
const serveStatic = require('feathers').static;
const favicon = require('serve-favicon');
const compress = require('compression');
const cors = require('cors');
const feathers = require('feathers');
const configuration = require('feathers-configuration');
const hooks = require('feathers-hooks');
const rest = require('feathers-rest');
const bodyParser = require('body-parser');
const socketio = require('feathers-socketio');
const middleware = require('./middleware');
const services = require('./services');
const app = feathers();
app.configure(configuration(path.join(__dirname, '..')));
app.use(compress())
.options('*', cors())
.use(cors())
.use(favicon(path.join(app.get('public'), 'favicon.ico')))
.use('/', serveStatic(app.get('public')))
.use(bodyParser.json())
.use(bodyParser.urlencoded({ extended: true }))
.configure(hooks())
.configure(rest())
.configure(socketio())
.configure(services)
.configure(middleware);
module.exports = app;
1)我怎麼能顯示出與混合文件與網頁文件名的路徑例如http://127.0.0.1:3030/record.html
2)如果我使用:app.get()中的文件當文件不存在時如何顯示錯誤404?
3)我是否必須在每個文件中使用const路徑,在這裏我想提供一個文件或混合文件?
太棒了!現在它的工作,謝謝:-) – SeaDog
我還有一個問題。如果我將app.get()添加到/ src/middleware中的index.js中,如何從/ public目錄中包含文件? – SeaDog
在'const path = require('path')'和'const filename = path.join(__ dirname,'..','..','public','index.html')那個文件中' – Daff