pzgps-preact
v1.1.5
Published
pzgps fronted by Preact.
Downloads
1
Readme
Based on Preact Boilerplate / Starter Kit
Quick-Start Guide
Installation
npm install
Development Workflow
Start a live-reload development server:**
npm start
This is a full web server nicely suited to your project. Any time you make changes within the src
directory, it will rebuild and even refresh your browser.
Production build
npm build
This will build the prod assets and put them into the build
directory.
There is code linting configured using eslint
npm run lint
Testing with mocha
, karma
, chai
, sinon
via phantomjs
npm test
Generate a production build in ./build
npm run build
You can now deploy the contents of the build
directory to production!
Start local production server with superstatic
npm run prod
Structure
Apps are built up from simple units of functionality called Components. A Component is responsible for rendering a small part of an application, given some input data called props
, generally passed in as attributes in JSX. A component can be as simple as:
class Link extends Component {
render({ to, children }) {
return <a href={ to }>{ children }</a>;
}
}
// usage:
<Link to="/">Home</Link>
CSS Modules
This project is set up to support CSS Modules. By default, styles in src/style
are global (not using CSS Modules) to make global declarations, imports and helpers easy to declare. Styles in src/components
are loaded as CSS Modules via Webpack's css-loader. Modular CSS namespaces class names, and when imported into JavaScript returns a mapping of canonical (unmodified) CSS classes to their local (namespaced/suffixed) counterparts.
When imported, this LESS/CSS:
.redText { color:red; }
.blueText { color:blue; }
... returns the following map:
import styles from './style.css';
console.log(styles);
// {
// redText: 'redText_local_9gt72',
// blueText: 'blueText_local_9gt72'
// }
Note that the suffix for local classNames is generated based on an md5 hash of the file. Changing the file changes the hash.
Handling URLS
:information_desk_person: This project contains a basic two-page app with URL routing.
Pages are just regular components that get mounted when you navigate to a certain URL. Any URL parameters get passed to the component as props
.
Defining what component(s) to load for a given URL is easy and declarative. You can even mix-and-match URL parameters and normal props.
<Router>
<A path="/" />
<B path="/b" id="42" />
<C path="/c/:id" />
</Router>
License
MIT