Git Product home page Git Product logo

bobril's Introduction

Bobril Logo Bobril

npm version

Component oriented framework inspired by ReactJs (Virtual DOM, components with state) and Mithril (small size, more complete framework). Easy automatic generation of code and its speed has higher priority over simplicity. Basically Bobril has most interesting features from ReactJs plus is faster, more complete, smaller, more polyfills for IE9. Isomorphic JavaScript is not implemented because it would increase size and is not needed for SEO anyway (Google bot supports JavaScript). Because it is already used in Production code, further development must not broke any functionality. Any new feature must be optional or its perceived value to minified size ratio must be high enough.

If you need compatibility with IE8 look at 2.x branch.

Examples: http://bobris.github.io/Bobril/

Getting started video [cz]:

Getting started video

See it in vdom-benchmarks: http://vdom-benchmark.github.io/vdom-benchmark/

Documentation: https://github.com/Bobris/Bobril/blob/master/src/bobril.md

Chrome plugin to help you to inspect running Bobril application: https://chrome.google.com/webstore/detail/clouseau/npfemnefhbkiahihigplihehpbgkbhbj (Github source for it is here: https://github.com/klesta490/bobril-clouseau)

If you want to speed up your Angular app use: https://github.com/karasek/ngBobril

Flux implementation for Bobril is here: https://github.com/karelsteinmetz/bobflux

Bobril Material Icons: https://github.com/bobril/bobril-m-icons

Available in npm as bundle of most interesting and useful plugins

Features in core:

  • No additional dependencies
  • Virtual DOM diffing
  • Components remember state in VDom cache
  • Components does not need to be HTML Elements - where is component(0-1) to HTMLNode(0-n) mapping (New in 2.0)
  • Support for partial invalidates for even faster redraws (including recursion deepness limited new in 2.0)
  • Normalization of Events
  • support for IE9+, Android 4.1+ (Support for IE8 removed in 3.0)
  • batching of redrawing
  • any html element could be root
  • automatic passing of global configuration/context to children
  • automatic adding of "px" to length like inline style (New in 2.0)
  • reference to children nodes ala React (New in 2.0)
  • under 14kb minified (6kb gzip)

Features in extensions:

  • OnChange event and value attribute normalization
  • Key events
  • Mouse, Touch and Swipe Events (includes polyfill pointerEvents:none and userSelect:none) (Swipe events not in bundle)
  • Vector graphic in spirit of React-Art just very limited in features, but under 2kb with SVG backend (only SVG helpers in bundle)
  • Router inspired by https://github.com/rackt/react-router/
  • Media detection
  • Focus, Blur, FocusIn, FocusOut events
  • Transparently add vendor prefixes for inline styles
  • Asap (setImmediate) and Promise A+ polyfill - simplified https://github.com/taylorhakes/setAsap and https://github.com/taylorhakes/promise-polyfill
  • Scroll notification
  • Drag and Drop - uses browser one except on IE9, multi touch, allows animating drag, state of the art as usual
  • Style - create css dynamically for even faster speed, allow recomputing styles for theming
  • G11N - Globalization - behind uses moment.js and others (this is in separate npm bobril-g11n)

All extensions + core are 46kb minified (20kb gzip) Of course you don't need all extensions, it is pure a la carte, so actual application could be shorter.

Near term planned extensions:

  • G11N, Style -> finish build system around bobril-build

Longer term extensions:

  • New/Deleted Node animation (prototype in Router2 example)
  • Prevent exit (Should be integrated with Router)
  • Ajax (should mostly copy Mithril implementation)

Uses NodeJs, NPM, TypeScript 1.5, Karma, Jasmine, Coverage

MIT Licensed

How to develop

Use npm up to download all needed node modules.

For helping writing TypeScript you can use Atom.io with atom-typescript plugin. Compilation on save is disabled. So you have to work with gulp started in background.

Start gulp for TS compilation, minification and generating statistic for LibSize example.

gulp compilets force compilation of all TS files. It reads tsconfig.json files for information how to compile each subproject.

gulp pages upload examples to GitHub pages.

If you want to work on something create bug with description, so work is not duplicated.

bobril's People

Contributors

amarcruz avatar bobris avatar cernyjan avatar gitter-badger avatar jakubjecminek avatar josefbackovsky avatar karasek avatar keeema avatar klesta490 avatar kraklin avatar martind-gmc avatar martinmajoros avatar mkaska avatar wikancz avatar zbartos avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.