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
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:
- JSF resource versioning
- JSF2 Static resource caching
- Structure for multiple JSF projects with shared code
- JSF 2.0 specification - Bölüm 2.6 Kaynak Kullanma
Nasıl C kaynak dosyaları arasında pay ...
Geçişlerini için Dinlenmek nedir ve na...
Nasıl GitHub kaynak gem yüklemek için?...
Nasıl GitHub ZİP formatında kaynak ind...
Bir yığın izleme, nedir ve nasıl uygul...