Elderjs / template

Elder.js template project. It is part template, part tutorial. Dive in!
https://elderjs.pages.dev/
MIT License
113 stars 32 forks source link

Less "meta" demo of hooks #37

Open floer32 opened 3 years ago

floer32 commented 3 years ago

I like how there's a demonstration of hooks, and some documentation. It'd be cool if that was the "advanced" section/post about hooks. It'd be great if there was a very simple hooks example -- some async data fetches. The docs (or the post, don't remember which off-top) -- show an example of an async data fetch, in a code-block. So we could put that, or a dummy of that, in the template.

I'd just do a PR, but I'm actually suggesting this because I'm blocked. I think I'm missing something[s] obvious, as I'm rusty on full-stack JS, and bundlers.

Thoughts? Suggestions?

swyxio commented 3 years ago

haha, this is a good request indeed. for what its worth my site is in elderjs so perhaps a little less meta for you. https://github.com/sw-yx/swyxdotio/

nickreese commented 3 years ago

@hangtwenty @sw-yx

I've added another bare bones data fetching example to the docs (below) and a link to the repo where I'm collecting some common ones (https://github.com/Elderjs/hooks/tree/main/hooks).

// ./src/hooks.js
const fetch = require('node-fetch');
module.exports = [
  {
    hook: 'bootstrap',
    name: 'addExternalData',
    description: 'Adds arbitrary external data to the data object available in all hooks and routes.',
    run: async ({ settings, data }) => {
      const externalData = await fetch('https://yourapi.here').then((res) => res.json());
      return {
        data: {
          ...data,
          externalData, // this data is now available in the `all` and `data` functions of your `/routes/routeName/route.js`.
        },
      };
    },
  },
};

Any other examples that would be useful?