2011-09-21 16 views
18

Programowałem w PHP i C# przez długi czas, ale zrobiłem bardzo mało Javascript. Do programowania po stronie serwera używam MVC, co jest bardzo miłe i mój kod jest starannie uporządkowany.JavaScript model programowania do organizacji aplikacji internetowych

Teraz, w przypadku Javascript, kiedy piszę kod, zazwyczaj pomijam rzeczy. To staje się czymś w rodzaju kodu spaghetti. Nie wiem, jak zorganizować mój kod.

Czy ktoś może mi pomóc z jakimikolwiek zasobami, książkami lub czymś, co może pomóc w napisaniu zgrabnego i uporządkowanego kodu Javascript?

Z góry dziękuję.

+0

Wskazówka dla javascript początkujących pochodzące z PHP i C# - javascript ma zasięg funkcji, a nie zakres nawiasów klamrowych. –

+0

http://programmers.stackexchange.com/ to prawdopodobnie lepsze miejsce na to pytanie. Nie ma * poprawnej * odpowiedzi. – user113716

Odpowiedz

6

można wspomnieć, że zostały programowanie w PHP i C# przez długi czas. Przenieś swoje doświadczenie w zakresie organizacji kodu i zastosuj je w swoim javascript.

para ram

Google Closure Tools firmy -

http://code.google.com/closure/

Jeśli Google używa go do organizowania Gmail i Google Docs, to powinno działać na większości dużych aplikacji.

Ponadto, Yahoo! YUI jest zbyt dobry -

http://developer.yahoo.com/yui/

http://yuilibrary.com/

I backbone.js (nie jako "duży", jak Google czy Yahoo) -

http://documentcloud.github.com/backbone/

https://github.com/documentcloud/backbone

Godna książka

Dla mnie pisanie testów jednostkowych javascript pomaga mi utrzymać porządek -

Test-Driven Development JavaScript

http://www.amazon.com/Test-Driven-JavaScript-Development-Developers-Library/dp/0321683919/

+0

Narzędzia Google do zamykania mają pewne wady, aw określonych warunkach będą wstawiać błędy w kodzie. – Bakudan

+0

@Bakudan - absolutnie (chociaż nie nazwałbym ich wadami). The Closure docs i "Closure: The Definitive Guide" wykonują dobrą robotę wyjaśniając pewne problemy - http://www.amazon.com/Closure-Definitive-Guide-Michael-Bolin/dp/1449381871/ –

+0

Pracuję nad kręgosłupem ponieważ @KrisKrause opublikował tę odpowiedź. Muszę powiedzieć, że jest naprawdę świetny i pomaga bardzo starannie uporządkować kod. Dzięki. –

2

JavaScript: The Good Parts

http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742

plus wszelkie filmy Crockforda z YUI Theater.

http://yuilibrary.com/theater/

+1

Nawet nie przejmuj się: JSTGP nie mówi nic na temat organizacji kodu. W rzeczywistości nie mówi to zbyt wiele. –

+2

@PeteWilson JSTGP mówi wszystko, co musisz wiedzieć o JavaScript. To bardzo dobra i zwięzła książka. – Raynos

+0

@PeteWilson Jeśli tak powiesz ... – BNL

1

Oto doskonały odniesienia. Trudno jest uniknąć spaghetti w JavaScript czasami. Należy również pamiętać, że JavaScript NIE obsługuje polimorfizmu.

http://dev.opera.com/articles/view/javascript-best-practices/

+0

To wspiera polimorfizm – Raynos

+0

To nie jest zły artykuł, ale jest wiele osób, które chciałbym argumentować. – vol7ron

+0

Nie obsługuje prawdziwie polimorficznych metod. To zabiło mnie pewnego dnia pisząc aplikację z dwiema metodami mającymi różne sygnatury wejściowe. Będąc długoletnim programistą Java, nie doświadczyłem tego, dopóki nie zrobiłem interaktywnego debugowania dokładnie tego, co się działo. http://javascript.about.com/library/blpolyfunc.htm – Alexx

2

Nie wiem, czy biblioteka sugestia jest to, co jesteś po, ale zaczęliśmy używanie Mootools jako naszej biblioteki podstawowej js. Mootools' Class System jest niesamowity do tworzenia hierarchii klas.Pomogło to naszemu zespołowi ogromnie w zorganizowaniu całego naszego kodu.

Jeśli szukasz prostszych rozwiązań obiektowych i potrzebujesz dziedziczenia, istnieje wiele, wiele bibliotek oferujących to. Dwie z moich ulubionych to klass i selfish.js.

3

Napisz kod modułowy. To nie jest trudne.

Osobiście polecam napisanie bardzo wielu modułów i użytkownika procesu budowlanego i menedżera pakietów, aby dołączyć je do jednego.

Do tego używam browserify.

// DOM-utils.js 

module.exports = { 
    // util methods 
} 

// some-UI-Widget.js 
var utils = require("DOM-utils"), 
    jQuery = require("jQuery"); 

// do ui logic 

module.exports = someWidget 

pójdę dalej i zalecamy użycie mediator pattern (patrz mediator), aby zachować swój kod luźno.

Zobacz ten example application

1

Alex MacCaw napisał książkę tylko z JavaScript Web Applications, która obejmuje niektóre z dostępnych ram JavaScript. MacCaw jest twórcą Spine, innej struktury JavaScript MVC (takiej jak backbone.js). Na stronie Spine znajdują się tutoriale opisujące sposób korzystania z niego. Dodatkowo, jeśli interesuje Cię backbone.js, obecnie masz dwa screencasty (nie za darmo), które obejmują korzystanie z niego.

Powiązane problemy