|
dagger.js takes a different approach: it treats HTML, JS, and CSS as independent modules that you explicitly wire together. The reason is to keep everything buildless aurelia doesn't need a build step to wire things together.
nor does it remove transparency or flexibility. because you can still specify all parts explicitly if you want to. it should not be hard to create a function that does the same for dagger.js: a configuration like this: {
"remote_view_module": {
"uri": "./thispage.html",
"type": "view"
},
"remote_style_module": {
"uri": "./thispage.css",
"type": "style"
},
"remote_script_module": {
"uri": "./thispage.js",
"type": "script"
},
"remote_json_module": {
"uri": "./thispage.json",
"type": "json"
}
}
can easily be generated with a function: function load_modules(name) {
return {
"remote_view_module": {
"uri": "./"+name+".html",
"type": "view"
},
"remote_style_module": {
"uri": "./"+name+".css",
"type": "style"
},
"remote_script_module": {
"uri": "./"+name+".js",
"type": "script"
},
"remote_json_module": {
"uri": "./"+name+".json",
"type": "json"
}
}
}
thus reducing 18 lines to one: load_modules("thispage")
anyone who needs the flexibility can still specify the parts they want to wire together manually. this is just about making the default easier.you could even allow some names to be specified and still reduce the code a user needs to write: load_modules({ name: 'thispage', style: 'other.css', json: undefined })
that would use 'thispage' as the default name, but override the style and remove json. |
You’re right: Aurelia can avoid a build step and still preserve flexibility, and the kind of helper you sketched (load_modules("thispage")) would definitely make the default case much less verbose while still allowing people to override pieces explicitly when they need to.
With dagger.js the initial choice was to keep everything explicit to reinforce the “HTML/JS/CSS are just independent modules” idea, but I agree that adding a convention-based shortcut on top could make the developer experience smoother without removing transparency.
In future iterations, I plan to add more flexible usage patterns to better meet diverse development needs.