3 ms·
Alright, I'm skimming this whole idea of newfangled "static site generators" that involve a lot of Javascript and I'm left with a whole lot of "Isn't this just
by jrm4 5y ago
Alright, I'm skimming this whole idea of newfangled "static site generators" that involve a lot of Javascript and I'm left with a whole lot of "Isn't this just ____ with extra steps?"
I'm seeing "shortcodes" and I'm like -- as in variables and/or configuration files?
Or, more broadly -- why Javascript for the backend? This looks like a silly level of complexity. I'd start thinking about it in Bash and then probably head over to e.g. Python once databases et al start getting involved. What am I missing here?
- valenterry 5y ago> What am I missing here? People usually start their projects with the language they feel most comfortable in, not the one that is best suited for the project.
- nickreese 5y agoShortcodes as they are implemented in Elder.js (what the article is about) are borrowed from WordPress. Basically they are a placeholder such as [[lastestTweet/]] that let you add dynamic content into otherwise static content. While Elder.js does allow for full server side rendering making "Javascript the backend" the goal of the static site generator is generate static HTML/CSS/JS that can be hosted from a CDN, S3, or other static host. That said, one of the biggest pitfalls with building a major site on a static site generator is there is often no upgrade path to server rendering. Elder.js does offer that out of the box.
- frabert 5y agoCurious you mention bash! I did exactly that some time ago when I thought about starting blogging... And then never started blogging! https://blog.frabert.me/posts/2018/11/11/blash.html https://blog.frabert.me/posts/2018/11/11/blash.html
- brundolf 5y ago> why Javascript for the backend?...[I'd] probably head over to e.g. Python once databases et al start getting involved I could ask the same thing: why Python for the back-end? Both languages have similar feature-sets and are roughly equally suitable to this task. Given that, a person should use whichever they're most comfortable with. Lots of people are comfortable with JavaScript these days, ergo there's lots of activity in the JavaScript SSG space.
- jrm4 5y agoFair -- but let me be more precise then. I do like the idea of "use what you learned and are most comfortable in." That being said, I think what I mean by "e.g. Python" is specifically - "older slash more text oriented slash proven" If you like Javascript, fine. But I think there's a case to be made that there is a completely unnecessary "bloat" to Javascript -- especially even as the author himself has suggested that at the end of the day it's all string concatenation. If that's the case, (as it frequently is) it ends up boiling down to "what handles text well and in an established and smooth way," and Javascript does not score high there, I'd suggest.
- brundolf 5y agoIt doesn't sound like you write much JavaScript :) > I think there's a case to be made that there is a completely unnecessary "bloat" to Javascript "Bloat in JS" is something of a trope, and I'm not really even sure what you mean by it here. Typically people mean "too many JS dependencies are often drawn in for web pages", but that's not really relevant. Maybe you mean syntax bloat (method calls instead of list comprehensions)? If so, you're not totally wrong, but it's also not really a big deal in my experience. If you're talking about runtime/performance, well... V8 tends to be faster than CPython in raw compute (excluding native modules) because Google has put so much work into optimizing it (not that that matters much for a SSG either) > it ends up boiling down to "what handles text well and in an established and smooth way," and Javascript does not score high there Whenever I need to process some nontrivial text, the first thing I do is open up a Chrome tab for the JS repl. I think the following it pretty smooth: const csv = ` Name,Email,Phone Number,Address Bob Smith,bob@example.com,123-456-7890,123 Fake Street Mike Jones,mike@example.com,098-765-4321,321 Fake Avenue` const lines = csv.trim().split('\n').map(line => line.split(',')) const [headings, ...data] = lines const objs = data.map(datum => Object.fromEntries( headings.map((heading, index) => [heading, datum[index]]))) console.log(objs) // output: [ { "Name": "Bob Smith", "Email": "bob@example.com", "Phone Number": "123-456-7890", "Address": "123 Fake Street" }, { "Name": "Mike Jones", "Email": "mike@example.com", "Phone Number": "098-765-4321", "Address": "321 Fake Avenue" } ] Not to mention template-strings, which I use extensively in my own website: const header = ` <h1>Welcome to ${pageTitle}</h1> ` Of course it's all subjective and Python does have format strings and some slick dedicated syntaxes. But I don't think it's fair to say "JavaScript does not score high" when it comes to text-shuffling.