diff --git a/connect.js b/connect.js index 532d245..245ca64 100644 --- a/connect.js +++ b/connect.js @@ -21,7 +21,7 @@ module.exports = function connect(opts) { let server_routes = glob.sync('**/*.+(js|mjs)', { cwd: routes }); let server_route_matchers = create_matchers(server_routes); - create_app(routes, out, page_matchers, opts.dev); + create_app(routes, out, page_matchers, opts); const webpack_compiler = create_webpack_compiler( path.join(out, 'main.js'), @@ -43,16 +43,22 @@ module.exports = function connect(opts) { const params = matcher.exec(url); const Component = require(`${routes}/${matcher.file}`); - const app = await webpack_compiler.app; + const main = await webpack_compiler.app; const page = opts.template({ - app, + main, html: Component.render({ params, query: req.query }) }); + res.status(200); + res.set({ + // TODO etag stuff + 'Content-Length': page.length, + 'Content-Type': 'text/html' + }); res.end(page); return; } diff --git a/templates/main.js b/templates/main.js index 7e3bf74..d4089d7 100644 --- a/templates/main.js +++ b/templates/main.js @@ -13,7 +13,7 @@ window.addEventListener('popstate', event => { navigate(window.location); }); -const target = document.querySelector('main'); +const target = document.querySelector('__selector__'); let component; function navigate(url) { diff --git a/utils/create_app.js b/utils/create_app.js index 921c998..3c16b11 100644 --- a/utils/create_app.js +++ b/utils/create_app.js @@ -3,7 +3,7 @@ const path = require('path'); const template = fs.readFileSync(path.resolve(__dirname, '../templates/main.js'), 'utf-8'); -module.exports = function create_app(routes, dest, matchers, dev) { +module.exports = function create_app(routes, dest, matchers, options) { // TODO in dev mode, watch files const code = matchers @@ -32,7 +32,9 @@ module.exports = function create_app(routes, dest, matchers, dev) { }) .join(' else ') + ' else return false;'; - const main = template.replace('// ROUTES', code); + const main = template + .replace('__selector__', options.selector || 'main') + .replace('// ROUTES', code); fs.writeFileSync(path.join(dest, 'main.js'), main); }; \ No newline at end of file