Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Klientspråk > JavaScript

Mitt första jQuery plugin

Jag hittade ett plugin till WordPress som heter JSON API. Den returnerar ett json objekt.
Då jag antagligen kommer använda den framöver i andra projekt också, så skapade jag
ett jQuery plugin som läser in json datan och skapar en lista med postlänkar.

Här är koden till mitt jQuery plugin

Pluginet var mer hårdkodat för WP pluginet från början, men har gjort den mer generell.

 

Så vad säger javascriptgurun, Voigtan? ;)

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
ID: #20758 | Skapades: 2011-02-20 03:39:07 | Tråden har 17 svar och har lästs 1453 gånger.
Sida: 1 2

voigtan
voigtan

Gradering

#20759

Då skall vi se ;)
   
Jag hade inte döpt den till queryString då man kan mata in annat än en querystring, du kan använda dig av data istället ;)

jQuery plugin retunera alltid(oftast) ett objekt så man kan fortsätta med jquery kedjan exempelvis:

$("#something").getRecentPosts().hide();
vilket din kod inte tillåter.

du saknar ; på lite olika ställen, du har rätt många var som du kan optimera lite (om du skall komprimera koden.
append är rätt så kostsamt men det är nog rätt lugnt i ditt fall, bind click eventet kan göras utanför loop koden, räcker att du binder det en gång på alla element än att du skall binda det "unikt" per loop.
output.html('');
ul.appendTo(output);
kan lika väl skrivas som:
output.html('').append(ul);


Sen kanske en fallback om url är tom så behöver den inte göra allt i plugin:et då den inte kommer att lyckas med det.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20759 | Skapades: 2011-02-20 08:52:46

Tack för infon. Ska gå igenom koden noggrannare, satt ju i natt med detta, så mycket går att göra bättre.
Om man nu inte ska använda append så mycket, hur ska jag då kunna använda mina object av elementen?
För jag såg att shaddi hade skrivit ren html i sina jQuery exempel, det vill jag undervika så mycket det går.

 

Håller på att bygga om pluginet enligt hur jquery.com säger det ska se ut.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
ID: #20760 | Skapades: 2011-02-20 14:36:33

voigtan
voigtan

Gradering

#20762

Citat:
För jag såg att shaddi hade skrivit ren html i sina jQuery exempel, det vill jag undervika så mycket det går.
Best practice säger att det är bättre och snällare mot DOM:en

Vad är det du vill göra mot dina DOM objekt som du inte kan hämta ut senare?

Exemplet nedan så ser du skillnaden:

var ul = $("ul"),
    li = null;
    for(var i=0;i<10;i++){
        li = $("li");
        ul.append(li);
}
Är mycket mer kostsamt om man kollar:
var ul = $("ul"),
    li = "";
    for(var i=0;i<10;i++) {
        li+="<li>
</li>";
    }
    ul.html(li);

Best practice säger att det under altenativet är bättre än övre, det är jobbigt att jobba med DOM:en på det sättet.

 

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
ID: #20762 | Skapades: 2011-02-20 15:50:51

Citerar voigtan:

För jag såg att shaddi hade skrivit ren html i sina jQuery exempel, det vill jag undervika så mycket det går.Best practice säger att det är bättre och snällare mot DOM:en

Vad är det du vill göra mot dina DOM objekt som du inte kan hämta ut senare?

Exemplet nedan så ser du skillnaden:

var ul = $("ul"),
    li = null;
    for(var i=0;i<10;i++){
        li = $("li");
        ul.append(li);
}
Är mycket mer kostsamt om man kollar:
var ul = $("ul"),
    li = "";
    for(var i=0;i<10;i++) {
        li+="<li>
</li>";
    }
    ul.html(li);

Best practice säger att det under altenativet är bättre än övre, det är jobbigt att jobba med DOM:en på det sättet.

Har att göra med att jag gillar att jobba med objekt mer. Känns renare och flexiblare på något sätt.
Då man ofta gör det i programmering.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
ID: #20764 | Skapades: 2011-02-20 18:09:39

voigtan
voigtan

Gradering

#20765

Så länge webbläsare är så kassa med DOM hanteringen så är det ett korkat sätt att jobba, men som sagt du har nog inte mer än  ~10 poster eller liknande så det är ju inte "dunder-jobbigt", men mycket av koden kan skrivas effektivare. thats all Im saying ;)

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20765 | Skapades: 2011-02-20 19:17:59

Citerar voigtan:

Så länge webbläsare är så kassa med DOM hanteringen så är det ett korkat sätt att jobba, men som sagt du har nog inte mer än  ~10 poster eller liknande så det är ju inte "dunder-jobbigt", men mycket av koden kan skrivas effektivare. thats all Im saying ;)

Är alltid ute efter att effektivesera koden. Kommer använda den till att visa 3-5 poster från 1-2 kategorier. Då måste jag köra det två gånger mot json-api för wordpress. Funderar på att spara resultatet i en json fil och bara köra mot bloggen 1 gång / timmen.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
Redigerades av chrillemeter den 20 februari 2011. Läs tidigare inlägg.
ID: #20766 | Skapades: 2011-02-20 19:22:02

voigtan
voigtan

Gradering

#20767

2 gånger? eh... va?

 

edit, aha, du kör två scripts ;) now I get it :)

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 20 februari 2011. Läs tidigare inlägg.
ID: #20767 | Skapades: 2011-02-20 19:26:20

Citerar voigtan:

2 gånger? eh... va?

Då det handlar om att lista dessa i två listor. Så måste det väl köras två gånger?

$('#nyheter1').getRecentPosts({category: 'nyheter1'});
$('#nyheter2').getRecentPosts({category: 'nyheter2'});

Eller tänker jag fel?

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #20768 | Skapades: 2011-02-20 19:29:56

voigtan
voigtan

Gradering

#20769

nej, det är korrekt ;) lite trött när jag läser ibland vet du ;)

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20769 | Skapades: 2011-02-20 19:31:00

Citerar voigtan:

nej, det är korrekt ;) lite trött när jag läser ibland vet du ;)

Hehe.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #20770 | Skapades: 2011-02-20 19:32:03

Är det vettigt i javascript att deklarera alla variabler som man brukar göra i andra programspråk?

Exempel på hur jag gör nu.

var ul = $('ul'), li = null, link = null; osv

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #20771 | Skapades: 2011-02-20 19:39:03

voigtan
voigtan

Gradering

#20772

Det är "effektivare" när du packar koden

jag skriver det:

 

var ul = $('ul'),
    li = null,
    link = null;


eller

var ul = $('ul'),
    li = link = null;

Om du vill vara lite mer hardcore ;)

 
Få 4 tecken mindre för varje deklaration + lite mer läsbart ;)

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 20 februari 2011. Läs tidigare inlägg.
ID: #20772 | Skapades: 2011-02-20 19:44:26

För jag tänkte mer på att det finns ju sidor som minifierar js koden så det blir oläsbar, men det blir färre tecken och rader.
Men det skadar inte att köra lite hardcore från början heller. Blir nog bara jag som kommer se koden om jag inte slänger ut
den för nedladdning sedan.

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #20773 | Skapades: 2011-02-20 19:48:37

voigtan
voigtan

Gradering

#20774

Detta är min bas på alla plugins jag gör nu: http://www.aspkoll.se/code/Index.asp?id=668

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #20774 | Skapades: 2011-02-22 09:04:27

Citerar voigtan:

Detta är min bas på alla plugins jag gör nu: http://www.aspkoll.se/code/Index.asp?id=668

 

Tackar. Så du skapar int en variable för default options, utan skriver dom direkt i $.extend?

Måste man alltid ha med this.each...? Är det någon standard?

Kan man inte läsa och förstå min kod, kan man inte programmera - Christher Lenander
ID: #20775 | Skapades: 2011-02-22 14:30:53
Sida: 1 2
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy