sproutcore / website

The website source. Build and push to https://github.com/sproutcore/sproutcore.github.com.
http://www.sproutcore.com
9 stars 9 forks source link

Add a FAQ page. #19

Open dcporter opened 10 years ago

dcporter commented 10 years ago

Let's use this Issue to compile questions that are frequently asked. Once there's a critical mass, I'll tidy them up and integrate them into the site. Please add your own!

dcporter commented 10 years ago

Q. Can I use jQuery-UI (or Bootstrap etc.) for ___? A. The short answer is no. The long answer is, it's possible, but it's not recommended and will take a great deal of effort to properly integrate – to the point where it's almost never worth it.

The root technical reason for this is that the SproutCore view layer is built on fundamentally different assumptions about the DOM, in order to support some deep optimizations for the application use-case. The SC view layer assumes that it, and only it, controls the creation and updating of HTML, and that it owns event handling. These assumptions make for great applications, but tend to collide badly with standard web development techniques developed for the standard document-based web. For example, if you make out-of-band changes to a view's DOM elements, the view won't be aware of them, and may overwrite them at any time.

These optimizations include lazy DOM updating, and automatic global event proxying (and sanitizing). On balance, they are very much worth it if you're building serious applications, but it means that there are some cases where something that's simple somewhere else is more complicated here.

topherfangio commented 10 years ago

Q: Can't I just download a .js file somewhere?

A: SproutCore is an all-encompasing framework for developing rich-client applications. This design allows you to use only the pieces of the framework that you need to build your app. So, by design, SproutCore uses build-tools to compile all of the mini-frameworks into one, and then minifies them. This allows your apps to be built for speed and allows you to easily separate your .js files for comprehension and maintainability which is key when developing large apps.