35
choosing the right JavaScript Library/Framework/Toolkit for your project

Choosing the best JavaScript framework/library/toolkit

Embed Size (px)

DESCRIPTION

 

Citation preview

choosing the rightJavaScript Library/Framework/Toolkitfor your project

Presentation goals

• Give directions• Compare few major libraries, frameworks &

toolkits• Statistics

Who am I?

Who am I?

• Type• How big is it• Features• Future expectations

Your project?

• What is library?• What is framework?• What is toolkit?

Definitions

Bits of functionality that you can call.• jQuery

Library

Universal, reusable software platform, foundation of applications, products and solutions.• MooTools• AngularJS• BackboneJS

Framework

A set of independent libraries, designed to work well together, that you can pick and choose from.• Dojo• YUI

Toolkit

• all available over CDN*• all cross-browser**

Features Comparison Table

• all available over CDN*• all cross-browser**

Selector Engine performance

Size

• Size does not matter much if the resources are distributed over CDN

• cdnjs.com

• Content

• MooTools provide configurable download

• Async Module Definition - YUI, Dojo

Modularity

Code structure - jQuery's bad practices

The never-ending callback nesting

Code structure

• Classes for reusable components• Constructor options• Use synchronization API instead of nested

callbacks

Code structure

The MooTools way

Code structure

The MooTools way

Utilities

• A utility should first try to delegate to native and in case it fails - use it’s own implementation

• The more utilities, the better

• Stringtrim() hyphenate() camelCase() escapeRegExp() toInt() toFloat() substitute()

• Object & Array each() some() every() filter() contains() map() empty() append()

Commonly needed utilities

• Objectvalues() keys() clone() merge() toQueryString()

• Array associate() clean() unique() flatten()

Commonly needed utilities

• Should be easy to style(jQueryUI provides a great theme development tool)

User Interface

• API should provide full controlo destroy()

o DatePicker should be able to have its value set from outside

o Tabs should provide API for selecting tab dynamically

User Interface

MV*, or not MV*?

that is the question

When to use MV*

• AJAX-heavy web apps• JSON data structure• Need to render data in different ways on the same

page• A lot of user interaction that triggers updates

• Your server cannot handle all the requests• Your app has little interactions on the page• Data changes rarely• MV* may be overkill for small projects

o Heavy to implement - if you could have gotten away with 1 class, you now have 3

When NOT to use MV*

Ем виси, ем не виси :)

You can always combine MV* with some other framework

Releases

• When was the latest version released?• How often do they release new version?• Are there currently any betas?• Is there huge incompatibility between versions?

Support

• How many opened issues are there?• Is the documentation rich & easy to use?• How steeper is the learning curve?

Community

• Which big projects use the framework?• How big & active the community is?

Usage Statistics

• Statistics fromgoo.gl/lJrPpl

• Content

Tips

• Spend some time browsing the source code• Read other people’s opinion, but don’t count on

them!

Tips

• Write a module/component for your App in plain JavaScript or pseudo code; then migrate to the selected library/framework and see how it feels

• TodoMVC has implementations in several MV* frameworks - check it out at todomvc.com

Are there any Questions?

**** , ask me :)

Thanks for listening!

github.com/ickata

wpbgug.org

blog.ickata.net

sitekreator.com

And thanks to our Sponsors:

Diamond Sponsor:

Gold Sponsors:

Swag Sponsors: Media Partners:

Technological Partners:

Silver Sponsors:

Bronze Partners: