3 ms·
Show HN: Write ajax requests with template literals
- jacobwg 10y agoI may be missing something, but how is this: let response = await request` url: https://api.myapp.com/register method: POST body: ${body} headers: ${{ Authorization: 'Bearer: token' }} ` better than: let response = await request({ url: 'https://api.myapp.com/register', method: 'POST', body: body, headers: { Authorization: 'Bearer: token' } ) Perhaps it's just personal style, but the readability of both is similar and it feels like you've created a subset of a JSON or YAML parser that isn't as bulletproof / flexible. I did enjoy the example of how template literals are parsed under the hood.
- zackify 10y agoI think the syntax is nicer if you take a look at the example of doing partial requests. I made this library for fun, but I'll be splitting out my requests into partials for an entire api. I think you get benefits from using the partials more so than your example. Either way, it was made just for fun :) partial: const twitter = { register: partial` url: https://api.twitter.com/register, method: POST ` } twitter.register` body: ${{ email: 'test@test.com', password: 'Tester' }} ` Without template literals: const twitter = { register: { url: 'https://api.myapp.com/register', method: 'POST', } } let response = await request({ ...twitter.register, body: body, })
- meh321 10y agoThe second example could be more concise IMHO: const twitter = { register: function(opts){ return request({ url: '...', method: 'POST', ...opts }); } } const resp = await twitter.register({ body }); EDIT: made it even more concise! -- back to real work :/
- zackify 10y agoSure, keep adding many methods and make new functions every time. I totally get what you're saying. I just like the syntactic sugar of Template Literals :)
- drum 10y agoI agree. Unfortunately I think this is only subjectively better to the author, provides less functionality than the example it compared itself too, and adds an extra dependency.
- zackify 10y agoThe only thing I disagree with is making an extra dependency sound like such a bad thing. Nobody uses fetch directly. You always wrap it into a more suitable api for your project. So either you're going to do that yourself, or add in a small library like this.
- mrsharpoblunto 10y agoPlus you lose all the benefits of linters, type checkers, & even things like syntax highlighting.
- stephenhandley 10y agoyikes
- twfarland 10y agoSuch mischief. Template literals make me feel very yucky. A totally unnecessary complication.