5 ms·
Ok survey of the terrain, but WAY biased, and not very well-written. If it wasn't for the fact that programming in Javascript is so obtuse If Javascript is ob
by IsaacSchlueter 18y ago
Ok survey of the terrain, but WAY biased, and not very well-written.
If it wasn't for the fact that programming in Javascript is so obtuse
If Javascript is obtuse, You're Doing It Wrong. Javascript is a very powerful and expressive language—it's the browser API that's a piece of garbage.
data fields must involve a round-robin trip to the server
Wait, there are scheduling algorithms involved? http://en.wikipedia.org/wiki/Round_robin http://en.wikipedia.org/wiki/Round_robin
Word salad anyone?
- jimbokun 18y ago"it's the browser API that's a piece of garbage." And that's the real purpose of Prototype, JQuery and friends. To glom over the unholy mess that is cross browser DOM compatibility. Another question: is MVC still a suitable design pattern for web application development? We have HTML to model structure, CSS to model appearance, and Javascript/DOM to model interaction, and JSON to transfer structured data over the network. This suggests a design where each language plays to its respective strength, instead of trying to find "one language to bind them all." This suggests a different model than what Xerox PARC had in mind when they came up with MVC for SmallTalk. I'm not sure what that model is, but I believe that the unstated assumption that MVC is a good pattern for web applications needs to be defended.
- dmaclay 18y agoThe sensible way to build more complex web apps these days is to have a (invisible) client side model, and have the controller communicate with the server as is required (typically to fetch data, sometimes to poll). The server becomes more of a router and data repository, with less intelligence. It is sometimes easier to think of the server as a secondary, dumb user with a huge amount of data on tap. And the more intelligence you can push out to the client side the better the system will scale.
- jimbokun 18y agoI like where you're going with that. Now we just need a catchy acronym. :) REST may be the applicable acronym for the server side (or at least, one design for implementing what you describe). But I haven't heard any design patterns with a catchy acronym for what all the cool kids are doing in the browser with Javascript. Perhaps that's for the best. Often a catchy acronym is a sign that a technology will soon either stagnate or be considered passe.
- IsaacSchlueter 18y agojimbokun and dmaclay, It really depends on the application. Remember, the client is always untrustworthy. You can trust them with their data, but nothing else. In three-legged cases, like an ad or some other third-party developed app hosted in your page, you can't even trust the client-side to have unlimited access to the client's data! Plus, there are remote script hacks that potentially will compromise the user's state or other information. a catchy acronym for what all the cool kids are doing in the browser with Javascript At Yahoo, we call it Progressive Layered Enhancement. Start with working markup and server-side logic, and then enhance it in layers to add functionality for the browsers that can handle it, so that it always works, even if a layer is missing or broken. Having worked on a Microsoft stack in the past, I can say that it was nice to have a single language from end to end. It just really sucked that the language was VisualBasic. So, I get the excitement behind GWT and Pyjamas. Not that the author is wrong, I just think he doesn't really treat the material very well.
- lkcl 18y ago"So, I get the excitement behind GWT and Pyjamas. " cool. very few people do! and don't forget rubyjs / rwt. "Not that the author is wrong, I just think he doesn't really treat the material very well" well, you can't have everything :)
- jimbokun 18y ago"At Yahoo, we call it Progressive Layered Enhancement." PLE! We have our catchy acronym :). Good point about the security implications. That must be an integral part of any web application design methodology. For traditional kinds of desktop applications, that wasn't so much of a concern. In my day job, we have a Java back end with a lot of user interaction implemented with Javascript in the browser. Data access server side stuff actually plays to a lot of Java's strengths, I think, and the more dynamic nature of Javascript is a good fit for DOM manipulation in the browser. I'm not sure I would want to pick one of them to run both places.
- rbanffy 18y agoI agree. Biased, poorly written. "the idea of handing complete responsibility for "View" generation and near-complete responsibility for Model "business rules" validation to the Web Browser would make perfect sense" The idea of handling business logic in the browser makes me puke. This guy should hand in his programmer card and never approach a computer again. You end-up with different set of rules implemented twice in two very different execution environments. The only way it would not be utterly stupid would be if the server somehow generated the JavaScript validators based on the business rules, but that would, also, be a very ugly kludge (and probably require a validation DSL that is different from the implementation language of the rest of the server side).
- lkcl 18y ago"You end-up with different set of rules implemented twice in two very different execution environments" precisely!!! read the article - that's exactly the present situation except.... "The only way it would not be utterly stupid would be if the server somehow generated the JavaScript validators based on the business rules," precisely!!! that's EXACTLY what the article advocates, by using XXXX-to-javascript COMPILERS. in this way, the SAME language that is used server-side is ALSO the same language from which the client-side javascript is generated from. in this way, the SAME source code which is used to perform the business rules validation can be either executed client-side, OR server-side, OR both, depending on the application requirements and depending on what the developer chooses to do. this _was_ mentioned in the article - and was the whole _point_ of the article. it's not as ugly an approach as you might think - it just takes a _lot_ of getting used to, and a significant amount of "old thinking" and "disillusionment with the present situation" has to be overcome. let me put it this way: if someone wanted me to write in pure javascript, they would have to pay me a _lot_ of money. but, using compiler technology such as pyjamas, GWT or rubyjs / rwt, i don't mind at all - because i'm writing in a high-level language where the output happens to be javascript.