SORU
16 AĞUSTOS 2012, PERŞEMBE


Ve nasıl kullanılmalıdır?için AKSARAY kaynak kitaplığı nedir

Bu OLUMSUZLUK <h:outputStylesheet>, <h:outputScript> <h:graphicImage> bileşenleri library bir nitelik var. Bu nedir ve nasıl kullanılmalıdır? Orada bir sürü örnekleri web kullanmak gibi ile ortak içerik/dosya türü css, js img (ya da image) kütüphane adı bağlı işareti kullanılır:

<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="script.js" />
<h:graphicImage library="img" name="logo.png" />

Ne kadar faydalı? Bu örnekler içinde library değer zaten etiket adı tarafından temsil ediliyor ne olursa olsun sadece yinelenen gibi görünüyor. A <h:outputStylesheet> etiket adı temsil ettiği zaten belli dayanıyor "CSS Kütüphanesi". Ayrıca sadece aynı şekilde çalışır aşağıdakilerden hangisi ile ne fark var?

<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />

Ayrıca, oluşturulan HTML çıktısı biraz farklıdır. /contextname FacesServlet bağlam bir yol *.xhtml, eski bir URL desen eşleştirme verilen oluşturur istek parametre olarak kütüphane adı ile aşağıdaki HTML:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/style.css.xhtml?ln=css" />
<script type="text/javascript" src="/contextname/javax.faces.resource/script.js.xhtml?ln=js"></script>
<img src="/contextname/javax.faces.resource/logo.png.xhtml?ln=img" alt="" />

İkincisi URI yolu sadece kütüphane adı ile aşağıdaki HTML oluşturur:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/style.css.xhtml" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/script.js.xhtml"></script>
<img src="/contextname/javax.faces.resource/img/logo.png.xhtml" alt="" />

İkinci yaklaşım gez eski yaklaşım daha mantıklı. Tam olarak nasıl library öznitelik sonra yararlı mı?

CEVAP
16 AĞUSTOS 2012, PERŞEMBE


Aslında, web onda bu örneklerin hepsi ortak içerik/dosya türü gibi "", "", "ımg", vb kütüphane olarak kullanılan isim . css js ^strong>yanıltıcı.

Gerçek dünya örnekleri

Başlamak için, hadi PrimeFaces OmniFaces Mojarra MyFaces ve AKSARAY bileşen kütüphaneleri gibi varolan OLUMSUZLUK uygulamaları kullanmak nasıl bak. Bunların hiç biri kaynak kütüphaneleri bu şekilde kullanın. Kullanıyorlar (kapakları @ResourceDependency ya UIViewRoot#addComponentResource() altında) aşağıdaki gibi:

<h:outputScript library="javax.faces" name="jsf.js" />
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<h:outputScript library="omnifaces" name="omnifaces.js" />
<h:outputScript library="omnifaces" name="fixviewstate.js" />
<h:outputScript library="omnifaces.combined" name="[dynamicname].js" />
<h:outputStylesheet library="primefaces" name="primefaces.css" />
<h:outputStylesheet library="primefaces-aristo" name="theme.css" />
<h:outputStylesheet library="primefaces-vader" name="theme.css" />

Temelde temsil ettiği açıkça ortaya olmalıdırortak kütüphane/modül/tema adıtüm bu kaynaklar genellikle ait olduğu yere.

Kolay belirlenmesi

Bu şekilde bu kaynaklara ve/ait ya da nereden geldiğini çok daha kolay belirlemek ve ayırt etmek zor oluyor. Aklına bile olabilir primefaces.css kaynak kendi web-neyin sensin geçersiz kılma/ince bazı varsayılan CSS PrimeFaces; eğer PrimeFaces yoktu kullanın bir kütüphane adı için kendi primefaces.css, PrimeFaces kendi bir şey olmaz yüklü, ama bunun yerine " web tarafından sağlanan, hangi bozar bak & 'feel.

Özel kullanırken de, ResourceHandler, aynı zamanda daha ince kaynakları library doğru şekilde kullanıldığında özel bir kütüphaneden geliyor ayarlanmış bir denetim uygulayabilirsiniz. Eğer tüm bileşen kütüphaneleri "" tüm JS dosyalarını nasıl ResourceHandler eğer belirli bir bileşen kütüphanesi söylersen ayırt eder? js kullanmış olsaydı Örnekler OmniFaces CombinedResourceHandler GraphicResourceHandler; zincir kontrol kitaplığı gelecek kaynak için delege önce kontrol edilir createResource() yöntem neyin işleyicisi. Bu amaçla CombinedResource GraphicResource oluşturma zamanı biliyorlar.

Not RichFaces yaptığını olmalı yanlış. library kullanma ve başka bir kaynak üzerinde katman işleme homebrewed yaramadı ve bu nedenle imkansız programlı olarak RichFaces kaynakları tespit etmek. Bu tam olarakOmniFaces CombinedResourceHander yine de RichFaces kaynakları ile çalışmak için a reflection-based hack takdim etmek zorunda nedeni budur.

Kendi web

Kendi web-mutlaka bir kaynak kütüphane gerekmez. En iyisi onu ihmal edersin.

<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" />
<h:graphicImage name="img/logo.png" />

Ya da, eğer gerçekten bir ihtiyaç varsa, sadece "varsayılan" ya da bazı şirket adı. sanki daha mantıklı ortak bir isim verebilirsiniz

<h:outputStylesheet library="default" name="css/style.css" />
<h:outputScript library="default" name="js/script.js" />
<h:graphicImage library="default" name="img/logo.png" />

Ya da, bazı kaynaklar ana Facelets template için belirli bir zaman, aynı zamanda daha kolay birbirleriyle ilişkili olan bu şablonun adını verebilir. Diğer bir deyişle, öz-belgesel amaçlar için uygun bir yer. E. g. /WEB-INF/templates/layout.xhtml şablon dosyası:

<h:outputStylesheet library="layout" name="css/style.css" />
<h:outputScript library="layout" name="js/script.js" />

Ve /WEB-INF/templates/admin.xhtml bir şablon dosyası:

<h:outputStylesheet library="admin" name="css/style.css" />
<h:outputScript library="admin" name="js/script.js" />

Gerçek bir dünya için örnek, OmniFaces showcase source code kontrol edin.

Ya da, ne zaman paylaşmak istediğin aynı kaynaklar üzerinde birden fazla web uygulamalarını ve oluşturulan bir "ortak" proje tabanlı aynı örnek olarak this answer hangi sırayla gömülü olarak KAVANOZA web /WEB-INF/lib, sonra da başvuru kitaplığı (ismi özgür seçim; bileşen kütüphaneleri gibi OmniFaces ve PrimeFaces de işler bu şekilde):

<h:outputStylesheet library="common" name="css/style.css" />
<h:outputScript library="common" name="js/script.js" />
<h:graphicImage library="common" name="img/logo.png" />

Kitaplık sürüm

Bir başka önemli avantajı kaynak kütüphane kaynaklarını kendi web tarafından sağlanan doğru yolu (bu kaynakları bir KAVANOZ içinde gömülü için çalışmıyor) sürüm uygulayabilirsiniz. Kaynak kitaplığı sürümü belirtmek için \d (_\d )* desen adı ile kütüphane klasöründe doğrudan bir alt klasör oluşturabilirsiniz.

WebContent
 |-- resources
 |    `-- default
 |         `-- 1_0
 |              |-- css
 |              |    `-- style.css
 |              |-- img
 |              |    `-- logo.png
 |              `-- js
 |                   `-- script.js
 :

Bu işaretleme kullanırken:

<h:outputStylesheet library="default" name="css/style.css" />
<h:outputScript library="default" name="js/script.js" />
<h:graphicImage library="default" name="img/logo.png" />

Bu v parametre olarak kitaplığı sürümü ile aşağıdaki HTML oluşturur:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/style.css.xhtml?ln=default&v=1_0" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/script.js.xhtml?ln=default&v=1_0"></script>
<img src="/contextname/javax.faces.resource/img/logo.png.xhtml?ln=default&v=1_0" alt="" />

Eğer bazı kaynak düzenlenmiş güncellenmiş varsa, o zaman tüm yapmanız gereken kopya veya yeni bir değer haline sürümü klasörü yeniden adlandırmak için. Eğer birden fazla sürüm klasörler varsa, o zaman AKSARAY ResourceHandler otomatik olarak en yüksek sürüm numarasına kaynak hizmet verecek, sayısal sıralama kurallarına göre.

Kopyalama aşağıdaki gibi resources/default/1_1/* resources/default/1_0/* klasör yeniden adlandırma/zaman

WebContent
 |-- resources
 |    `-- default
 |         |-- 1_0
 |         |    :
 |         |
 |         `-- 1_1
 |              |-- css
 |              |    `-- style.css
 |              |-- img
 |              |    `-- logo.png
 |              `-- js
 |                   `-- script.js
 :

Son biçimlendirme örnek aşağıdaki HTML oluşturmak:

<link rel="stylesheet" type="text/css" href="/contextname/javax.faces.resource/css/style.css.xhtml?ln=default&v=1_1" />
<script type="text/javascript" src="/contextname/javax.faces.resource/js/script.js.xhtml?ln=default&v=1_1"></script>
<img src="/contextname/javax.faces.resource/img/logo.png.xhtml?ln=default&v=1_1" alt="" />

Bu kuvvet tarayıcı için istekte düz server yerine gösteren kişi ile aynı adı önbellek, URL ile değiştirilen parametre olan talep ilk defa. Bu şekilde son kullanıcının güncellenmiş CSS/JS kaynak almak için gerektiğinde sert bir yenile (F5 ve Ctrl) yapmak için gerekli değildir.

Lütfen kütüphane kaynakları sürüm JAR dosyası içine mümkün değildir. Bir özel ResourceHandler ihtiyacın var. Ayrıca How to use JSF versioning for resources in jar bkz.

Ayrıca Bkz:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Rhapsody

    Rhapsody

    7 ŞUBAT 2008
  • TechRax

    TechRax

    21 EYLÜL 2009