This practice covers the following:
- OOP in JS.
- Design Patterns in JS.
- ES6 features.
- BDD with Mocha and Chai.
- NPM infrastructure.
Also touches the following:
- LESS CSS preprocessor.
- Jade template engine.
- BEM methodology.
- DOM API.
- Canvas 2D and optimized rendering.
- Touch events API.
This compound task has been conceived as play ground for design patterns practice. The final decision should look like material points system simulator. A lot of points bouncing and moving around through fancy paths ;)
- Review already implemented modules to discover or repeat some ES6 basic theory.
- Implement DissipativeForce and GravityForce. Add them to the "scene".
- Implement PointsSystemFactory (abstract factory pattern) to generate systems with different "configurations" (wheel, bridge, house, or any physical object you want).
- Refactor view layer to meet better architecture. Use MVC pattern.
- Implement TouchBasedController to move points by tapping and dragging them. Use PointTouchEventEmitter module.
Additional:
Extend controller's layer to control different physical parameters (gravity constant, dissipative constant, and so on).
- Fork this repository.
- Checkout forked repository.
- Install Node.js.
- Install project dependencies by
npm install
. - Run tests by
npm run test
. - Run project in development mode
npm run dev
and open localhost:8080. - Go to the src folder and implement tasks listed above.
- As necessary part of implementation write tests inside test folder.
- And don't forget to commit working decision ;)