This project tests use of react, vue, svelte, markdown and MDX components in the same project
In addition we will test use of Material-UI for React and maybe some other UI frameworks.
I followed Get started documentation to setup project. No remarks on that for now.
To add dependencies I used astro CLI
There is a eslint plugin for astro file. The link to documentation is here I have not tested it yet. Let's first see if we need it.
Major frameworks are supported, but this is just a begining, usually one will use other supporting libs of an framework. Currently CSS-in-JS is not supported, see this issue
# add react libs
npm i @astrojs/react react react-dom
npm i -D @types/react
# svelte
npm i @astrojs/svelte svelte
Astro offers integration for tailwind
The documentation describes astro component approach. It uses basics of JSX and enables passing props to components. The approach is focused on maximal plain HTML/JS/CSS support, so no need for className and cammelCase html props! It feels like a natural html file. The components use fencer --- to indicate javascript part of the component.
Passing child elements is done using <slot/> tag. It supports named slots.
Style tag can be used in components and it is scoped by default.
There are number of supported SSR solution. For me Node and Deno are most interesting.
The adapter will create output that can be runned in node server like Express.
More information is in documentation
npm i @astrojs/node
Deno
More information in documentation
npm i @astrojs/deno
š§āš Seasoned astronaut? Delete this file. Have fun!
Inside of your Astro project, you'll see the following folders and files:
/
āāā public/
ā āāā favicon.svg
āāā src/
ā āāā components/
ā ā āāā Card.astro
ā āāā layouts/
ā ā āāā Layout.astro
ā āāā pages/
ā āāā index.astro
āāā package.json
Astro looks for .astro
or .md
files in the src/pages/
directory. Each page is exposed as a route based on its file name.
There's nothing special about src/components/
, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the public/
directory.
All commands are run from the root of the project, from a terminal:
Command | Action |
---|---|
npm install |
Installs dependencies |
npm run dev |
Starts local dev server at localhost:3000 |
npm run build |
Build your production site to ./dist/ |
npm run preview |
Preview your build locally, before deploying |
npm run astro ... |
Run CLI commands like astro add , astro preview |
npm run astro --help |
Get help using the Astro CLI |
Feel free to check our documentation or jump into our Discord server.