mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-21 14:55:04 +00:00
make selector customisable
This commit is contained in:
12
connect.js
12
connect.js
@@ -21,7 +21,7 @@ module.exports = function connect(opts) {
|
|||||||
let server_routes = glob.sync('**/*.+(js|mjs)', { cwd: routes });
|
let server_routes = glob.sync('**/*.+(js|mjs)', { cwd: routes });
|
||||||
let server_route_matchers = create_matchers(server_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(
|
const webpack_compiler = create_webpack_compiler(
|
||||||
path.join(out, 'main.js'),
|
path.join(out, 'main.js'),
|
||||||
@@ -43,16 +43,22 @@ module.exports = function connect(opts) {
|
|||||||
const params = matcher.exec(url);
|
const params = matcher.exec(url);
|
||||||
const Component = require(`${routes}/${matcher.file}`);
|
const Component = require(`${routes}/${matcher.file}`);
|
||||||
|
|
||||||
const app = await webpack_compiler.app;
|
const main = await webpack_compiler.app;
|
||||||
|
|
||||||
const page = opts.template({
|
const page = opts.template({
|
||||||
app,
|
main,
|
||||||
html: Component.render({
|
html: Component.render({
|
||||||
params,
|
params,
|
||||||
query: req.query
|
query: req.query
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
res.status(200);
|
||||||
|
res.set({
|
||||||
|
// TODO etag stuff
|
||||||
|
'Content-Length': page.length,
|
||||||
|
'Content-Type': 'text/html'
|
||||||
|
});
|
||||||
res.end(page);
|
res.end(page);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ window.addEventListener('popstate', event => {
|
|||||||
navigate(window.location);
|
navigate(window.location);
|
||||||
});
|
});
|
||||||
|
|
||||||
const target = document.querySelector('main');
|
const target = document.querySelector('__selector__');
|
||||||
let component;
|
let component;
|
||||||
|
|
||||||
function navigate(url) {
|
function navigate(url) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const path = require('path');
|
|||||||
|
|
||||||
const template = fs.readFileSync(path.resolve(__dirname, '../templates/main.js'), 'utf-8');
|
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
|
// TODO in dev mode, watch files
|
||||||
|
|
||||||
const code = matchers
|
const code = matchers
|
||||||
@@ -32,7 +32,9 @@ module.exports = function create_app(routes, dest, matchers, dev) {
|
|||||||
})
|
})
|
||||||
.join(' else ') + ' else return false;';
|
.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);
|
fs.writeFileSync(path.join(dest, 'main.js'), main);
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user