pyramid_assetgen ay isang pyramid extension na nagbibigay-daan sa iyo upang isama ang Assetgen sa isang proyekto Pyramid.
Isama ang package, itakda ang isang pasadyang kahilingan factory (gamit AssetGenRequestMixin bilang unang klase magmana sa iyo mula sa):
klase MyRequest (AssetGenRequestMixin, sa kahilingan): pass
config.set_request_factory (MyRequest)
config.include ('pyramid_assetgen')
Gamitin ang mga panuto configuration add_assetgen_manifest upang iugnay ang isang Assetgen manifest file sa isang static na direktoryo:
config.add_static_view ('static', 'mypkg: static')
# Default upang tumingin para sa isang assets.json file sa parehong directory
config.add_assetgen_manifest ('mypkg: static')
At pagkatapos ay gamitin lamang ang built-in na request.static_url Pyramid (sa path, ** KW) bilang normal.
makatwirang paliwanag
Assetgen ay isang static na tool file build. Kapag ginagamit sa produksyon, maaari mong paganahin nito hashing mode sa output file sa isang hash sa filename. Nangangahulugan ito na kapag binago mo ang isang file (halimbawa, siguro pag-update ng stylesheet ng iyong site) ang pangalan nito ay magbabago.
Sa isang banda ito ay mahusay na balita, dahil pinapayagan ka upang ipatupad ang isang pinakamainam na diskarte sa pag-cache HTTP (na nagsasabi sa mga kliyente browser i-cache ang iyong mga static na mga file magpakailanman). Sa kabilang, nangangahulugan itong kailangan mong i-update ang iyong mga template at / o tingnan ang code upang maghatid ng tamang url na lumulutas sa mga na-hash na filename. Ito ay medyo madali kapag gumagamit ka ng Pyramid bilang gumagamit ka na ng isang dynamic na pag-andar upang buuin ang iyong mga static na mga url: request.static_url.
Ang paketeng ito, pyramid_assetgen umaabot ang Pyramid makinarya upang awtomatikong i-update ang iyong static na mga url sa gayon ay malutas ang mga ito sa tamang mga pangalan ng na-hash file. Maaari mo itong gamitin upang isama ang Assetgen gamit ang iyong Pyramid application nang hindi kinakailangang baguhin ang anuman sa iyong mga template o tingnan code o matuto ng anumang mga bagong API.
workflow
Kung nagpapatakbo ka ng Pyramid application na-configure upang hanapin ang isang manifest file, pagkatapos ang file ay kailangang maging doon, kung hindi man ang application ay magtapon ng exception (sa oras ng configuration). Dapat mong samakatuwid ay bumuo ng iyong manifest file gamit ang isang bagay tulad ng:
assetgen atbp / assetgen.yaml --force
Bago patakbuhin mo ang iyong Pyramid app gamit ang isang bagay tulad ng:
pserve atbp / production.ini
Kung tumatakbo sa mode na pag-unlad gamit ang [paste.reloader], hal:
pserve atbp / development.ini --reload
Maaari mong idagdag ang iyong manifest file sa listahan ng mga file ng reloader dapat panoorin ginagamit, halimbawa:
mula sa pag-import paste.reloader add_file_callback
def watch_manifest_files ():
& Nbsp; bumalik ['/var/www/static/assets.json',]
add_file_callback (watch_manifest_files)
Gayunpaman, ikaw ay malamang na hindi kailangan ito, dahil ikaw ay dapat na hindi auto-reload sa production at sa mode na pag-unlad mo ay dapat hindi hash iyong mga file assetgen.
Configuration
Kung maglakas-loob kami config ay isang pyramid.config.Configurator Halimbawa, (di kaya magagamit sa iyong pangunahing / WSGI factory app function na), maaari naming idagdag ang kautusang alinman sa gamit ang:
mula sa pag-import pyramid_assetgen add_assetgen_manifest
config.add_directive ('add_assetgen_manifest', add_assetgen_manifest)
O higit pa lamang:
config.include ('pyramid_assetgen')
Bilang karagdagan, kailangan mong pahabain ang factory default kahilingan gamit, hal:
mula pyramid.request Kahilingan pag-import
mula sa pag-import pyramid_assetgen AssetGenRequestMixin
klase MyRequest (AssetGenRequestMixin, sa kahilingan):
& Nbsp; pass
config.set_request_factory (MyRequest)
(Tandaan na ang argumento AssetGenRequestMixin dapat dumating bago Humiling sa kahulugan ng iyong kahilingan factory class. Kung hindi man ang paraan static_url ay hindi na-override).
Paggamit
Gamit na configuration, kapag maglantad sa iyo ng isang static na direktoryo ng gumagamit ng config.add_static_view, maaari mo na ngayong mag-ugnay ng Assetgen manifest dito:
config.add_static_view ('static', 'mypkg: static')
config.add_assetgen_manifest ('mypkg: static')
Ito ang magiging hitsura para sa isang manifest file sa mypkg: static / assets.json. Kung ang file ay sa ibang lugar gamitin ang:
config.add_assetgen_manifest ('mypkg: static', manifest = '/ foo / bar.json')
Pagkatapos ay maaari mong gamitin request.static_path at request.static_url bilang normal. Kaya, halimbawa, kung kayo ay nakarehistro ang isang manifest na naglalaman ng:
{'Foo.js': 'foo-fdsf465ds4f567ds4ds5674567f4s7.js'}
Pagtawag:
request.static_path ('mypkg: static / foo.js')
Ay magbabalik ng:
'/static/foo-fdsf465ds4f567ds4ds5674567f4s7.js'
Mga Pagsusuri
Patakbuhin ko na ang mga pagsubok sa ilalim ng Python2.6 at Python3.2 ginagamit, halimbawa:
$ ../bin/nosetests --cover-Package = src / pyramid_assetgen --cover-Burahin --with-coverage --with-doctest
.......
Pangalanan Stmts Miss Cover Nawawalang
-------------------------------------------------- -----------------
src / pyramid_assetgen / __ init__ 59 0 100%
src / pyramid_assetgen / pagsubok na A / __ init__ 58 0 100%
-------------------------------------------------- -----------------
TOTAL 117 0 100%
-------------------------------------------------- --------------------
Tumakbo 7 mga pagsubok sa 0.552s
OK
Mga Kinakailangan :
- Python
- pyramid
Mga Komento hindi natagpuan