William Slim, 1st Viscount Slim

Przejdź do nawigacji Przejdź do wyszukiwania

Field Marshal The Honorious
Wicehrabia Slim
William Slim w 1950 roku
13. gubernator generalny Australii
W biurze
8 maja 1953 r. - 2 lutego 1960 r
Monarcha Elżbieta II
Premier Robert Menzies
Poprzedzony Sir William McKell
zastąpiony przez Wicehrabia Dunrossil
Dane osobowe
Urodzony 6 sierpnia 1891
Bishopston, Anglia
Zmarły 14 grudnia 1970 r. (79 lat)
Londyn, Anglia
Miejsce odpoczynku Tablica pamiątkowa w katedrze św. Pawła
Małżonka (s) Aileen Robertson
(1926-70, jego śmierć)
Dzieci 2nd Viscount Slim
Una Mary Slim
Alma Mater Indian Staff College, Quetta
Służba wojskowa
Nickname (s) Wujek Bill
Wierność Zjednoczone Królestwo
Usługa / oddział Armia brytyjska
Brytyjska armia indyjska
Lata służby 1914–1948
1949–1952
Ranga Feldmarszałek
Polecenia Szef Imperialnego Sztabu Generalnego
Komendant Kolegium Obrony Imperium
Pokrewne siły lądowe Azja Południowo-Wschodnia
Czternasta armia
XV Korpus
Korpus Birmy
10. Indyjska Dywizja Piechoty
10. Indyjska Brygada Piechoty
2 Bn 7. Gurkha Rifles
Bitwy / wojny

Pierwsza wojna światowa

  • Kampania Gallipoli
  • Kampania Mezopotamii

Druga wojna światowa

  • Teatr Morza Śródziemnego i Bliskiego Wschodu
    • Kampania Wschodnioafrykańska
    • Wojna angielsko-iracka
    • Kampania Syria-Liban
    • Anglo-sowiecka inwazja na Iran
  • Kampania Burma
  • Bitwa o Kohimę
  • Bitwa pod Imphal
Nagrody Rycerz Orderu Podwiązki
Krzyż Kawalerski Orderu Łaźni
Wielki Krzyż Kawalerski Orderu św. Michała i św. Jerzego
Wielki Krzyż Rycerzy Królewskiego Zakonu Wiktoriańskiego
Wielki Krzyż Kawalerski Orderu Imperium Brytyjskiego
Rozróżniające zlecenie serwisowe
Krzyż Wojskowy
Rycerz zakonu św. Jana
Wymienione w odsyłaczach
Naczelny dowódca Legii Zasługi (Stany Zjednoczone)

Feldmarszałek William Joseph Slim, 1. wicehrabia Slim, (6 sierpnia 1891 - 14 grudnia 1970), zwykle znany jako Bill Slim,[1] był brytyjskim dowódcą wojskowym i 13. generałem gubernatorem Australii.

Slim widział aktywną służbę zarówno w pierwszej, jak i drugiej wojnie światowej i został trzykrotnie ranny w akcji. Podczas II wojny światowej przewodził 14 armii, tak zwanej "zapomnianej armii" w kampanii w Birmie. Po wojnie został pierwszym brytyjskim oficerem, który służył w armii indyjskiej i został mianowany szefem Imperialnego Sztabu Generalnego. Od 1953 do 1959 był gubernatorem generalnym Australii i jest uważany przez wielu Australijczyków za autentycznego bohatera wojennego, który walczył z Anzacami w Gallipoli.[2]

We wczesnych latach trzydziestych Slim pisał także powieści, opowiadania i inne publikacje pod pseudonimem Anthony Mills.

Wczesne lata

William Slim urodził się w wieku 72 lat na Belmont Road, w St Andrews w Bristolu, syn Johna Slima, po ślubie z Charlotte Tucker. Został tam ochrzczony w rzymskokatolickim kościele św. Bonawentury w Bishopston. Wychowywał się najpierw w Bristolu, uczęszczał do Szkoły Podstawowej św. Bonawentury, potem do College St Brendana, a następnie przeniósł się do Birmingham w wieku kilkunastu lat. W Birmingham uczęszczał do gimnazjum św. Filipa, Edgbastona i szkoły króla Edwarda. Po ukończeniu szkoły niepowodzenie jego ojca w biznesie jako hurtowego sprzedawcy żelaza oznaczało, że rodzina mogła sobie pozwolić na wysłanie tylko jednego syna, starszego brata Slima, na Uniwersytet w Birmingham, więc w latach 1910-1914 Slim uczył w szkole podstawowej i pracował jako urzędnik w Stewarts & Lloyds, producentowi rur metalowych.[3]

Pierwsza wojna światowa

Pomimo braku innych związków z uniwersytetem,[3] w 1912 r. Slim dołączył do Korpusu Szkoleniowego Oficerów Uniwersytetu Birmingham i dzięki temu mógł zostać tymczasowym podporucznikiem w pułku Royal Warwickshire w dniu 22 sierpnia 1914 r., w chwili wybuchu pierwszej wojny światowej; w późniejszym życiu, w wyniku skromnych społecznych początków i bezpretensjonalnego sposobu, czasami mylnie sądzono, że powstał z szeregów. Był ciężko ranny w Gallipoli. Po powrocie do Anglii otrzymał regularną komisję jako podporucznik w pułku Zachodnich Indii. W październiku 1916 roku dołączył do Royal Warwickshire Regiment w Mezopotamii. W dniu 4 marca 1917 r. Został awansowany na porucznika (z stażem pracy z datą do października 1915 r.).[4] Został ranny po raz drugi w 1917 roku. Otrzymawszy wcześniej tymczasową rangę kapitana, został odznaczony Krzyżem Wojskowym 7 lutego 1918 roku za działania w Mezopotamii.[5]

Ewakuowany do Indii otrzymał tymczasowy stopień majora w szóstych karabinach Gurkha 2 listopada 1918 roku.[6] Został formalnie awansowany na kapitana i przeniesiony do armii indyjskiej 22 maja 1919 roku.[7]

Kariera międzywojenna

Slim został adiutantem batalionu z 6 karabinami Gurkha w 1921 roku.[8]

1 stycznia 1926 r. Poślubił Aileen Robertson, córkę ks. Johna Andersona Robertsona (d.1941), ministra Cramond koło Edynburga.[9] Mieli jednego syna i jedną córkę.[8] W tym samym roku Slim został wysłany do Staff College, Quetta. W dniu 5 czerwca 1929 r. Został mianowany oficerem sztabu generalnego drugiej klasy.[10]

1 stycznia 1930 r. Otrzymał stopień brevet major,[11] z oficjalną promocją do tej rangi dokonaną 19 maja 1933 r.[12] Jego występ w Staff College zaowocował mianowaniem go najpierw dowództwem armii w Indiach w Delhi, a następnie w Staff College w Camberley w Anglii (jako oficer sztabu generalnego, Second Grade),[13] gdzie uczył od 1934 do 1937 roku. W tym okresie pisał także powieści, opowiadania i inne publikacje pod pseudonimem Anthony Mills, w celu rozwijania swoich zainteresowań literackich, a także jako uzupełnienie jego skromnej pensji armii.[14]

Uczęszczanie do Imperial Defense College w 1937 roku,[15] w następnym roku awansował na podpułkownika[16] i dowództwo 2 batalionu, 7 karabiny Gurkha.W 1939 r. Otrzymał krótką tymczasową rangę brygadiera jako dowódca swojego batalionu.[17] 8 czerwca 1939 r. Został awansowany na pułkownika (ponownie z tymczasową rangą brygadier)[18] i mianowany szefem szkoły wyższych oficerów, Belgaum w Indiach.[19]

Druga wojna światowa

Kampania Wschodnioafrykańska

Po wybuchu II wojny światowej Slim otrzymał dowództwo 10. Brygady Indyjskiej Piechoty w 5 Indyjskiej Dywizji Piechoty i został wysłany do Sudanu. Brał udział w kampanii Afryki Wschodniej, aby uwolnić Etiopię od Włochów. Slim został ranny ponownie podczas walk w Erytrei. W dniu 21 stycznia 1941 r. Slim został trafiony, gdy jego pozycja została ostrzelana podczas zaliczki na Agordat.[20]

Bliski Wschód

Odzyskując po ranach, ale nadal niezdolny do aktywnej służby, Slim był tymczasowo zatrudniony w Sztabie Generalnym GHQ w Delhi. Brał udział w planowaniu potencjalnych operacji w Iraku, gdzie spodziewano się kłopotów. Na początku maja 1941 r. Slim został mianowany generałem brygady (oficerem sztabu głównego) Edwardem Quinanem, dowódcą wyznaczonym do operacji w Iraku, przybywającym do Basry 7 maja.[21] Niedługo potem generał major Fraser, dowodzący indyjską 10. Dywizją Piechoty, zachorował i został zwolniony z dowództwa, a Slim został awansowany na jego miejsce 15 maja 1941 r.[22] w randze aktorskiej generała-generała.[23] Poprowadził 10. Dywizję Piechoty Indyjskiej w ramach Iraku podczas wojny anglo-irackiej, kampanii Syria-Liban (gdzie dywizja posuwała się w górę rzeki Eufrat, by zdobyć Deir ez-Zor) oraz inwazję Persji. Był dwukrotnie wspominany w depeszach w 1941 roku.[24]

Kampania w Birmie

Feldmarszałek Sir William Slim, generał dowodzący czternastą armią w Birmie, 5 marca 1945 r.
Portret generała Slim jako dowódcy 14 Armii, na zlecenie Ministerstwa Informacji.
Główne artykuły: Teatr Azji Południowo-Wschodniej z II wojny światowej i kampania Birmy

W marcu 1942 r. Slim otrzymał dowództwo Burma Corps, znany również jako BurCorps, składający się z 17 Indyjskiej Dywizji Piechoty i 1. Dywizji Birmy. Slim został mianowany porucznikiem generalnym 8 maja 1942 roku.[25] Korpus został zaatakowany przez Japończyków w Birmie i, znacznie zdeklasowany przez bardziej mobilnego i elastycznego Japończyka, wkrótce zmuszony został do wycofania się do Indii. W dniu 28 października 1942 r. Slim został mianowany dowódcą Orderu Imperium Brytyjskiego (CBE).[26]

Slim następnie przejął XV Korpus pod dowództwem Armii Wschodniej. Jego dowództwo obejmowało podejścia nadbrzeżne z Birmy do Indii, na wschód od Chittagong. Prowadził serię sporów z Noelem Irwinem, komendantem armii wschodniej, w wyniku czego Irwin (choć dowódca armii) przejął osobistą kontrolę nad pierwszym krokiem XV Korpusu na Półwyspie Arakan. Operacje zakończyły się katastrofą, podczas której Slim został przywrócony do dowództwa XV Korpusu, choć zbyt późno, aby uratować sytuację. Generał Irwin i Slim obwiniali się o wynik, ale w końcu Irwin został usunięty ze swojego dowództwa, a Slim został awansowany na dowódcę nowej XIV armii - utworzonej z IV Korpusu (Wielka Brytania) (Imphal), XV Korpusu (Arakan) oraz XXXIII Korpus (rezerwa) - do którego dołączył później XXXIV Korpus. 14 stycznia 1943 r. Slim otrzymał Order Zasługi (DSO) za swoje działania na Bliskim Wschodzie w 1941 r.[27] Amerykańscy historycy, Alan Millet i Williamson Murray, opisali Slim jako: "Zahartowany żołnierz polowy, który nauczył się handlu na froncie zachodnim i w armii indyjskiej, Slim łączył umiejętności dowodzenia i szkolenia z osobistą i moralną odwagą oraz urokiem, solidne zrozumienie żołnierstwa i solidne uznanie dla azjatyckich działań wojennych i doskonałości japońskiej armii, doświadczył katastrofy z 1942 r. wycofania się z Birmy i nieudanego ataku na Arakan, a jego uczciwość i charakter uczyniły go oczywistym wyborem przekształcić czternastą armię, siłę zbudowaną na armii indyjskiej, ale włączając niezawodnie działające karabiny Gurkha z Nepalu, nieudowodnione bataliony piechoty ze wschodniej i zachodniej Afryki oraz bataliony piechoty i wspierające broń armii brytyjskiej ".[28]

Slim szybko przystąpił do zadania szkolenia swojej nowej armii, aby podjąć walkę z wrogiem. Jego podstawowym założeniem było to, że mobilność w terenie była najważniejsza: wiele ciężkiego sprzętu zostało wymienione na wyposażenie mułów lub transport powietrzny, a transport samochodowy był ograniczony do minimum i był ograniczony do pojazdów, które radziły sobie z niektórymi z najgorszych terenów bojowych na Ziemi . Nowa doktryna podyktowała, że ​​jeśli Japończycy przecięli linie komunikacyjne, również oni zostali otoczeni. Wszystkie jednostki miały tworzyć "skrzynie" obronne, które miały być uzupełniane powietrzem i wspomagane przez zintegrowane wsparcie powietrzne i zbroję. Skrzynie zostały zaprojektowane jako skuteczna odpowiedź na taktykę infiltracji praktykowaną przez Japończyków podczas wojny. Slim wspierał także ofensywne patrolowanie i nocne treningi, aby zachęcić swoich żołnierzy do utraty lęku przed dżunglą i przekonania, że ​​japońscy żołnierze są lepszymi dżunglistami. Polecił im także, aby trzymali swoje pozycje raz oskrzydlone.[20] Wzgórza Chin tworzyły naturalną barierę obronną w Birmie, którą Slim wolałby oskrzydlić podczas operacji amfibią lądując dalej wzdłuż wybrzeża Birmy, ale żądania wojny w Europie oznaczały, że niezbędne lądowce nie były dostępne, zmuszając Slim do opracowuj plany, aby awansować na Birmę na twardą drogę przez wzgórza Chin.[29] W tym samym czasie, japońska 15 Armia, która stała się główną siłą uderzeniową Armii Okręgu Birmy, pod koniec 1943 r. Wzrosła z czterech dywizji na początku 1943 r. Do ośmiu dywizji, podczas gdy Japończycy przygotowywali się do inwazji na Indie, które zwiększyło trudności lądowego napływu do Birmy.[30] W 1943 r. Ukończono Koleje Śmierci Birmy, które kosztowały życie tysięcy niewolników, którzy ją zbudowali, co pozwoliło Japończykom wzmocnić Armię Obszaru Birmy i sprawiło, że inwazja na Indie była prawie niemożliwa.[31] W miarę, jak Slim trenował swoich ludzi w walce z dżunglą, starł się z Brygadierem Orde Wingate, który zabrał kilka najlepszych Gurkha, brytyjskich i afrykańskich jednostek dla swojej grupy najazdów Chindit.[32] Slim argumentował przeciwko utracie swoich lepszych jednostek Wingate'owi i utrzymywał, że chociaż Wingate miał udaną karierę w Palestynie i Etiopii, odkrył, że Japończycy byli znacznie twardszym przeciwnikiem niż Palestyńczycy i Włosi, których Wingate dotąd walczył.[32] Jednak Slim zatwierdził plany Wingate dotyczące pomocy dla górskich plemion Birmy.[33] Różne ludy górskie Birmy, takie jak Kachins, Karens, Chin, Nagas i Shan, razem stanowiły około 7 milionów 17 milionów Birmy i, w przeciwieństwie do Barmarów, którzy powitali Japończyków jako wyzwolicieli, pozostali lojalni wobec Brytyjczyków, gdy Japończycy najechali.[33] Ludy górskie Birmy ucierpiały pod japońskimi rządami i były bardziej niż chętne do walki partyzanckiej przeciwko nim.[33] Slim zatwierdził plany SOE i OSS, aby zapewnić broń i szkolenie plemionom wzgórzowym jako sposób na zwrócenie sił japońskich, które w przeciwnym razie byłyby skierowane przeciwko niemu.[33]

Na początku 1944 r. Slim utrzymywał oficjalną rangę pułkownika z rangą generała-generała i tymczasowej rangi porucznika generała w wojnie.[34] W styczniu 1944 r., Kiedy druga ofensywa w Arakan została napotkana przez japońską kontrofensywę, indyjska 7. Dywizja Piechoty została szybko otoczona wraz z częścią indyjskiej 5 Dywizji Piechoty i 81. dywizją (Afryka Zachodnia). Obrona 7 dywizji indyjskich opierała się głównie na "skrzynce administracyjnej" utworzonej początkowo przez kierowców, kucharzy i dostawców. Były one dostarczane drogą powietrzną, a tym samym zanegowały znaczenie utraconych linii zasilających. Siły japońskie były w stanie powstrzymać ofensywę na Arakan, ale nie były w stanie zdecydowanie pokonać sojuszniczych sił ani przejść poza otaczające formacje.[35] Na początku 1944 r. Premier Japonii, Hideki Tojo, zatwierdził plany zwycięstwa w Azji, wzywając do dwóch operacji, operacji U-Go jako inwazji na Indie, pod kryptonimem i operacji Ichi-Go, która miała pokonać Chiny raz i dla wszystkich.[36] Dwie operacje w Indiach i Chinach były ze sobą ściśle powiązane, biorąc pod uwagę fakt, że amerykańskie dostawy dla Chin odbyły się nad "Humpiem" w Himalajach, a Japończycy chcieli, aby Indie w prowincji Assam częściowo zamknęły amerykańskie bazy lotnicze w Indiach, które utrzymały Chiny. jednocześnie rozpoczęli operację Ichi-Go, największą japońską ofensywę wszechczasów, w którą zaangażowało się 2 miliony ludzi.[36] Japończycy wiedzieli, że brakowało im logistyki do inwazji na Indie, a plany U-Go opierały się na założeniu, że 14. Armia właśnie się zawali, pozwalając 15. armii na przechwytywanie wystarczającej ilości żywności, aby uniemożliwić jej ludziom głodzenie na śmierć.[31] Po piętnastej Armii do Indii znajdowała się indyjska armia narodowa dowodzona przez Subhasa Chandrę Bose, gorącą nacjonalistkę. Japończycy wierzyli, że sama obecność Bose w Indiach zainspiruje mężczyzn z armii indyjskiej do buntu i zamordowania ich brytyjskich oficerów, i rozpocznie anty-brytyjską rewolucję, która pozwoli armii piętnastej na zajęcie wszystkich Indii.[31]

Na początku 1944 r. Slim został mianowany kompanem Orderu łaźni (CB).[37] 12 marca 1944 r. Japończycy rozpoczęli inwazję na Indie, skierowaną do Imphal, setki kilometrów na północ.[31] Generał Renya Mutaguchi z Armii Obszaru Birmy ogłosił, że inwazją Indii jest "Marsz w Delhi", ponieważ spodziewał się, że inwazja zakończy się wraz z nim, przechodząc do triumfu w New Delhi. Slim wiedział od inteligencji sygnałów, że Japończycy zamierzają zaatakować w marcu 1944 r., Ale jak Murray i Millet napisali: "... nie miał wielkiego wyboru, ale żeby go spotkać z siłami pod ręką - IV Korpusem trzech dywizji anglo-indyjskich- lub poddać się własnym planom podjęcia ogólnej ofensywy w Birmie w 1944 r. "[38] Slim zdecydował się na kampanię obronną, aby złamać Japończyków przed rozpoczęciem ofensywy w Birmie, wierząc, że lepsze czołgi brytyjskie, logistyka i siła powietrzna pozwolą mu zadać decydującą klęskę Mutaguchiemu.[38] Jednak Japończycy posunęli się naprzód szybciej, niż Slim oczekiwał po błotnistych drogach Birmy do Indii, co doprowadziło do okresu kryzysu, gdy los Indii pozostał w równowadze.[38] Slim pokonał dwie dywizje weteranów (piątego i siódmego Indianina) od bitwy pod Arakan, prosto w bitwę na północy. Desperackie akcje obronne toczyły się w miejscach takich jak Imphal, Sangshak i Kohima, podczas gdy RAF i USAAF utrzymywały siły dostarczane z powietrza.[31] Slim kazał swym ludziom utrzymać się na ziemi, zabronił jakiegokolwiek odwrotu i poinformował swoich ludzi, którzy byli otoczeni przez Japończyków, że zaopatrzenie zostanie wyrzucone z powietrza, aby umożliwić im przetrwanie.[31] Slim zdecydował się wysłać IV Korpus, aby uwolnić Imphala, podczas gry, którą 5 Indyjska Dywizja mogłaby utrzymać w Kohima, dzięki Slim wiedział, że gdyby Kohima padł, Japończycy mogliby przeciąć linię kolejową Assam w Dimapur, która mogłaby odciąć 14. Armia z głównej linii zaopatrzenia.[38] Bitwa na Kohimie była zaciekłą walką, tak jak Murray i Millet napisali: "Nigdzie w czasie II wojny światowej - nawet na froncie wschodnim - walczący nie walczyli z bezmyślnym okrucieństwem", ale Kohima utrzymał.[38] Dopiero 1 czerwca 1944 roku, feldmarszałek Alan Brooke, szef Imperialnego Sztabu Generalnego, napisał w swoim dzienniku, że widział "katastrofę wpatrującą się nam w twarz" w Assamie, ale Slim był bardziej pewny siebie, wierząc, że może rozbić Japończycy próbują zabrać Indie.[39]

Podczas gdy Japończycy byli w stanie awansować i okrążyć formacje 14 Armii, nie byli w stanie pokonać tych samych sił ani wyrwać się z dżungli wzdłuż granicy Indii. Japoński postęp utknął w martwym punkcie. Japończycy, którzy mieli pogardę dla oddziałów brytyjskich i indyjskich, bazując na ich występie w latach 1941-1942, odmówili poddania się nawet po rozpoczęciu monsunu, a duża część ich armii została rozbita przez prowadzenie operacji w niemożliwych warunkach. Pierwotny japoński plan polegał na przechwytywaniu zapasów żywności, lekarstw i paliwa Aliantów, aby utrzymać swój postęp, ale nie udało im się uchwycić żadnych zapasów. W wyniku tego ich jednostki poniosły nieuniknione straty i ostatecznie zostały zmuszone do wycofania się w całkowitym nieładzie w lipcu 1944 r., Pozostawiając wiele zmarłych z głodu i chorób, a także ich rannych. Spośród 150 tysięcy japońskich żołnierzy, którzy najechali Indie w marcu 1944 r., Prawie wszyscy zginęli w lipcu 1944 r., Gdy Slim zadał największe klęski, jakie Japończycy ponieśli do tej pory w czasie wojny.[39] Armia indyjska pozostała lojalna, a pod jej brytyjskimi oficerami walczyła znacznie lepiej niż indyjska armia narodowa.[39] Po Imphalu i Kohimie amerykański historyk Gerhard Weinberg zauważył dla Japończyków, że "... jedyną nadzieją na tym obszarze była propaganda Bose, niezbyt zamiennik utraconej 15 Armii".[39]

W przeciwieństwie do Japończyków, którzy zabili własnych rannych, Slim starał się zapewnić dobrą opiekę medyczną nad rannymi i ewakuować się przez powietrze rannym do szpitali w Indiach.[40] Slim wiedział, że jego ludzie będą walczyć lepiej, jeśli będą wiedzieli, że otrzymają najlepszą możliwą opiekę medyczną pod warunkiem, że zostali ranni. W dniu 8 sierpnia 1944 r. Slim został awansowany na generała porucznika,[41] a 28 września 1944 r. został mianowany dowódcą rycerzy Orderu łaźni (KCB).[42] W grudniu 1944 r., Podczas ceremonii w Imphal przed pułkami szkockich, gurkha i pendżabskich, Slim i trzej jego dowódcy korpusów (Christison, Scoones i Stopford) byli szlacheckimi przez wicekróla Lorda Wavella i zainwestowali z wyróżnieniem. Slim otrzymał swoje insygnia jako KCB, a pozostałe z ich KBE. Slim został również wymieniony w depeszach.[43] Pod koniec 1944 r. Większość żołnierzy armii brytyjskiej 14-tki nie była tak naprawdę brytyjska, jak 12 dywizji, które tworzyły 14. Armię, 2 były Brytyjczykami, 7 - Indianami, a 3 - brytyjskimi koloniami afrykańskimi.[44] Ponadto istniały 6 chińskich dywizji, 2 regimenty z armii amerykańskiej i różne milicje plemienne złożone z ludów Shan, Chin, Naga, Kachin i Karen podnoszone przez OSS i walki SOE po stronie Aliantów w Birmie, wymagające od Slim'a odgrywają rolę dyplomatę tak samo, jak generał, aby trzymać te rozbieżne siły złożone z tylu różnych narodów razem.[44]

W 1945 r. Slim rozpoczął ofensywę w Birmie, a linie zaopatrzenia sięgały niemal do zera w setkach kilometrów bezdrożnej dżungli.[44] W następstwie Kohima i Imphal, Slim sprawdził pola bitwy, widząc ciała rannych żołnierzy japońskich, którzy zostali zabici przez swoich towarzyszy, zgodnie z kodeksem

William Slim, 1st Viscount Slim

Slim to język szablonowy, którego celem jest zredukowanie składni widoku do istotnych części bez stania się zagadkowym. Zaczęło się od ćwiczenia, aby zobaczyć, ile można usunąć ze standardowego szablonu html (<,>, zamykanie tagów itp.). Ponieważ coraz więcej osób interesowało się Slim, funkcjonalność wzrosła, podobnie jak elastyczność składni.

Krótka lista funkcji ...

  • Elegancka składnia
    • Krótka składnia bez znaczników zamykających (w zamian za pomocą wcięcia)
    • Tryb stylu HTML ze znacznikami zamykającymi
    • Konfigurowalne znaczniki skrótów (# dla <div id="..."> i . dla <div class="..."> w domyślnej konfiguracji)
  • Bezpieczeństwo
    • Automatyczne wychodzenie HTML domyślnie
    • Wsparcie dla szyn " html_safe?
  • Wysoce konfigurowalny
  • Rozszerzalny poprzez następujące wtyczki:
    • Tryb mniej logiczny podobny do wąsów
    • Obejmuje
    • Tłumacz / I18n
  • Wysoka wydajność
    • Porównywalna prędkość do ERB / ​​Erubis
    • Obsługa przesyłania strumieniowego w Railsach
  • Obsługiwane przez wszystkie główne frameworki (Rails, Sinatra, ...)
  • Pełna obsługa tagów i atrybutów w Unicode
  • Wbudowane silniki, takie jak Markdown i Textile

Spinki do mankietów

Wprowadzenie

Co to jest Slim?

Slim to szybki, lekki silnik szablonowy z obsługą Rails 3 i nowsze. Został mocno przetestowany na wszystkich głównych implementacjach ruby. Używamy ciągłej integracji (travis-ci).

Podstawowa składnia Slim'a kieruje się jedną myślą: "Jakie minimum wymagane jest, aby to zadziałało".

Ponieważ coraz więcej osób ma swój wkład w Slim, na ich użycie znalazły się dodatki składniowe mające wpływ na użycie Haml i Jade. Zespół Slim jest otwarty na te dodatki, ponieważ wiemy, że piękno jest w oku patrzącego.

Slim używa Temple do analizowania / kompilacji i jest również zintegrowany z Tilt, więc może być używany razem z Sinatra lub zwykłym stojakiem.

Architektura świątyni jest bardzo elastyczna i pozwala na rozszerzenie procesu parsowania i kompilacji bez łatania małp. Jest to używane przez logikę less plugin i wtyczkę tłumacza, która zapewnia I18n. W trybie bez logiki możesz używać Slim, jeśli podoba ci się składnia Slim, aby zbudować kod HTML, ale nie chcesz pisać w swoich szablonach.

Dlaczego warto stosować Slim?

  • Slim pozwala pisać bardzo minimalne szablony, które są łatwe w utrzymaniu i praktycznie gwarantuje, że napiszesz dobrze sformułowany kod HTML i XML
  • Składnia Slim jest estetyczna i sprawia więcej radości z pisania szablonów. Ponieważ możesz używać Slim jako zamiennika we wszystkich głównych frameworkach, łatwo go adoptować.
  • Architektura Slim jest bardzo elastyczna i pozwala na pisanie rozszerzeń składni i wtyczek.

Tak, Slim jest szybki! Slim został opracowany od samego początku z myślą o wydajności. Testy są wykonywane dla każdego zatwierdzenia na http://travis-ci.org/slim-template/slim. Nie ufaj liczbom? Tak powinno być. Spróbuj samodzielnie wykonać test rake'u!

Jednak w naszej opinii powinieneś używać Slim ze względu na jego funkcje i składnię. Po prostu zapewniamy, że Slim nie ma negatywnego wpływu na wydajność twojej aplikacji.

Jak zaczac?

Zainstaluj Slim jako klejnot:

klejnot do instalacji slim

Dołącz Slim do swojej Gemfile z klejnot "szczupły" lub wymagaj tego wymagać "szczupłej". To jest to! Teraz, po prostu użyj rozszerzenia .slim i jesteś gotowy.

Przykład składni

Oto krótki przykład pokazujący, jak wygląda szablon Slim:

doctype htmlhtml głowa tytuł Slim Przykłady meta name ="słowa kluczowe" content ="język szablonu"
 meta name ="autor" content = author link rel ="Ikona" type ="image / png" href = ścieżka_pliku ("favicon.png") javascript: alarm('Slim obsługuje wbudowany javascript!') ciało h1 Przykłady znaczników #zadowolony p Ten przykład pokazuje, jak wygląda podstawowy plik Slim. == plon - jeśli items.any? table # items - dla przedmiotu w przedmiotach tr td.name = item.name td.price = item.price - jeszcze p Nie znaleziono żadnych produktów. Dodaj trochę zasobów reklamowych. Dziękuję Ci! div id ="stopka"
 == renderuj stopkę | Prawa autorskie i kopia; #{@rok} #{@autor}

Wcięcie ma znaczenie, ale głębokość wcięcia można wybrać tak, jak lubisz. Jeśli chcesz pierwsze wcięcie 2 spacje, a następnie 5 spacji, to twój wybór. Aby zagnieździć się w znacznikach wystarczy wcięcie o jedno pole, reszta to sos.

Wskaźniki linii

Dokładny tekst |

Rura mówi Slimowi, żeby właśnie skopiował linię. Zasadniczo unika wszelkiego przetwarzania. Każda następna linia, która jest wcięta większa niż rura, jest kopiowana.

ciało str | To jest test bloku tekstu.

Parsowany wynik powyższego:

<body><p>This is a test of the text block.</p></body>

Jeśli tekst zaczyna się w tym samym wierszu, lewy margines jest ustawiony na wcięciu rury + jedna spacja. Wszelkie dodatkowe spacje zostaną skopiowane.

ciało str | Ta linia znajduje się na lewym marginesie. Linia ta będzie miała jedną spację przed nią. Linia ta będzie miała przed sobą dwie spacje. I tak dalej...

Możesz także osadzić html w linii tekstowej

- articles.each do | a | | <tr> <td>#{imię}</td><td>#{opis}</td></tr>

Dosłowny tekst z tylną białą spacją '

Pojedynczy cytat mówi Slim, aby skopiować linię (podobną do |), ale zapewnia, że ​​dołączana jest pojedyncza tylna biała przestrzeń.

Wbudowany html <

Możesz pisać znaczniki html bezpośrednio w Slim, co pozwala pisać szablony w stylu bardziej html z zamykaniem znaczników lub mieszaniem html i Slim. Prowadzenie < działa jak niejawny |:

<html> head title Example <body> - if articles.empty? - else table - articles.each do |a| <tr><td>#{a.name}</td><td>#{a.description}</td></tr> </body></html>

Kod kontrolny -

Przerywnik oznacza kod kontrolny. Przykładami kodu sterującego są pętle i warunkowe. koniec jest zabronione -. Bloki są definiowane tylko przez wcięcie.Jeśli twój kod ruby ​​musi używać wielu linii, dopisz ukośnik odwrotny \ na końcu linii. Jeśli twoja linia kończy się przecinkiem , (np. z powodu wywołania metody) nie potrzebujesz dodatkowego ukośnika odwrotnego przed przełamaniem linii.

ciało - jeśli articles.empty? | Brak ekwipunku

Wydajność =

Znak równości informuje Slim, że jest to wywołanie w języku Ruby, które produkuje dane wyjściowe do dodania do bufora. Jeśli twój kod ruby ​​musi używać wielu linii, dopisz ukośnik odwrotny \ na końcu linii. Na przykład:

= javascript_include_tag \ "jquery", "podanie"

Jeśli twoja linia kończy się przecinkiem , (np. z powodu wywołania metody) nie potrzebujesz dodatkowego ukośnika odwrotnego przed przełamaniem linii. W przypadku kończących lub prowadzących białych znaków modyfikatory > i < są obsługiwane.

  • Wyjście z tylną białą spacją =>. Taki sam jak znak równości (=), z tym wyjątkiem, że dodaje ciągnącą się białą przestrzeń.
  • Wyjście z wiodącą białą przestrzenią =<. Taki sam jak znak równości (=), z wyjątkiem tego, że dodaje wiodącą białą przestrzeń.

Dane wyjściowe bez przechodzenia HTML ==

Taki sam jak znak równości (=), ale nie przechodzi przez escape_html metoda. W przypadku kończących lub prowadzących białych znaków modyfikatory > i < są obsługiwane.

  • Dane wyjściowe bez wychodzenia HTML i kończące się białe znaki ==>. Taki sam jak znak podwójnej równości (==), z tym wyjątkiem, że dodaje ciągnącą się białą przestrzeń.
  • Dane wyjściowe bez przechodzenia HTML i wiodące białe znaki ==<. Taki sam jak znak podwójnej równości (==), z wyjątkiem tego, że dodaje wiodącą białą przestrzeń.

Komentarz do kodu /

Użyj ukośnika do komentarza do kodu - cokolwiek za nim nie pojawi się w ostatecznym renderingu. Posługiwać się / do komentarzy do kodu i /! dla komentarzy html

ciało str / Ta linia nie zostanie wyświetlona. Ani ta linia. /! Zostanie wyświetlony jako komentarze HTML.

Parsowany wynik powyższego:

<body><p><!--Zostanie wyświetlony jako komentarze HTML.--></p></body>

Komentarz HTML /!

Użyj przedniego ukośnika zaraz po nim, aby wyświetlić komentarze html (<!-- ... -->).

Komentarz warunkowy IE /[...]

/[jeśli IE] p Uzyskaj lepszą przeglądarkę.

Zapewnia to:

<!--[if IE]> <p> Uzyskaj lepszą przeglądarkę. </ p> <! [endif]-->

Tagi HTML

Deklaracja <! DOCTYPE>

Słowo kluczowe doctype może być używane do generowania złożonych doctypes w bardzo prosty sposób.

WERSJA XML

doctype xml <? xml version ="1.0" encoding ="utf-8" ?>doctype xml ISO-8859-1 <? xml version ="1.0" encoding ="iso-8859-1" ?>

DOCTYPES XHTML

doctype html <! DOCTYPE html>doctype 5 <! DOCTYPE html>doctype 1.1 <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.1 // EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">doctype strict <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">zestaw ramek do dokumentów <! DOCTYPE html PUBLIC "- // W3C // Zestaw ramek DTD XHTML 1.0 // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">Doctype Mobile <! DOCTYPE html PUBLIC "- // WAPFORUM // DTD XHTML Mobile 1.2 // EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">podstawowa wersja doctype <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML Basic 1.1 // EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">doctype przejściowy <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

HTML 4 DOCTYPES

doctype strict <! DOCTYPE html PUBLIC "- // W3C // DTD HTML 4.01 // EN" "http://www.w3.org/TR/html4/strict.dtd">zestaw ramek do dokumentów <! DOCTYPE html PUBLIC "- // W3C // Zestaw ramek DTD HTML 4.01 // EN" "http://www.w3.org/TR/html4/frameset.dtd">doctype przejściowy <! DOCTYPE html PUBLIC "- // W3C // DTD HTML 4.01 Transitional // EN" "http://www.w3.org/TR/html4/loose.dtd">

Zamknięte znaczniki (końcowe /)

Możesz zamknąć znaczniki bezpośrednio, dołączając końcowe /.

img src ="image.png"/

Zauważ, że zazwyczaj nie jest to konieczne, ponieważ standardowe znaczniki html (img, br, ...) są zamykane automatycznie.

Trwająca i prowadząca biała spacja (<, >)

Możesz zmusić Slim, by dodał końcowy spację po tagu, dodając a >.

a> href ='url1' Link1a> href ='url2' Link2

Możesz dodać wiodącą białą spację, dodając <.

a <href ='url1' Link1a <href ='url2' Link2

Możesz także połączyć oba.

a <> href ='url1' Link1

Tagi Inline

Czasami możesz chcieć być trochę bardziej kompaktowy i wstawiać znaczniki.

ul li.first: a href ="/za" Link li: a href ="/b" Link B

Aby zapewnić czytelność, nie zapominaj, że możesz zawijać atrybuty.

ul li.pierwszy: a [href ="/za"] Link li: a [href ="/b"] Link B

Treść tekstowa

Rozpocznij w tej samej linii, co znacznik

ciało h1 id ="nagłówek" Witaj na mojej stronie.

Lub zagnieżdż to. Aby uniknąć przetwarzania, musisz użyć rury lub apostrofu

ciało h1 id ="nagłówek"
 | Witaj na mojej stronie.

Możesz też włączyć i polegać na inteligentnym tekście

ciało h1 id ="nagłówek"
 Witaj na mojej stronie.

Dynamiczna zawartość (= i ==)

Może wykonać połączenie na tej samej linii

ciało h1 id ="nagłówek" = page_headline

Lub zagnieżdż to.

ciało h1 id ="nagłówek"
 = page_headline

Atrybuty

Piszesz atrybuty bezpośrednio po tagu. W przypadku normalnych atrybutów tekstu musisz użyć podwójnego " lub pojedyncze cytaty ' (Przytaczane atrybuty).

a href ="http://slim-lang.com" title ='Slim Homepage' Przejdź do strony głównej Slim

Możesz użyć interpolacji tekstu w cytowanych atrybutach.

Owijanie atrybutów

Jeśli separator sprawia, że ​​składnia jest bardziej czytelna, możesz użyć znaków {...}, (...), [...] zawijać atrybuty. Możesz skonfigurować te symbole (zobacz opcję : attr_list_delims).

ciało h1 (id ="logo") = page_logo h2 [id ="tagline" class ="mały tagline"] = page_tagline

Jeśli otoczysz atrybuty, możesz rozłożyć je na wiele linii:

h2 [id ="tagline"
 class = "small tagline"] = page_tagline

Możesz używać spacji wokół owijki i zadań:

h1 id = "logo" = page_logoh2 [id = "slogan"] = page_tagline

Cytowane atrybuty

Przykład:

a href ="http://slim-lang.com" title ='Slim Homepage' Przejdź do strony głównej Slim

Możesz użyć interpolacji tekstu w cytowanych atrybutach:

a href ="http: //#{adres URL}" Przejdź do #{adres URL}

Wartość atrybutu zostanie domyślnie zmieniona. Użyj ==, jeśli chcesz wyłączyć escaping w atrybucie.

a href == "& amp;"

Możesz przerwać cytowane atrybuty z odwrotnym ukośnikiem \

a data-title ="Wsparcie" data-content = "bardzo długi tekst pomocy, który się pojawia \ i tak dalej, a potem zaczyna się od ... "

Atrybuty ruby

Napisz kod ruby ​​bezpośrednio po =. Jeśli kod zawiera spacje, musisz zawinąć kod do nawiasów (...). Możesz również bezpośrednio pisać skróty {...} i tablice [...].

ciało stół - dla użytkownika w użytkownikach td id ="użytkownik_#{identyfikator użytkownika}" class = user.role a href = user_action (user,: edit) Edytuj #{Nazwa Użytkownika}
 a href = (użytkownik path_to_user) = user.name

Wartość atrybutu zostanie domyślnie zmieniona. Użyj ==, jeśli chcesz wyłączyć escaping w atrybucie.

a href == ścieżka_czynności (: start)

Możesz także podzielić atrybuty ruby ​​z odwrotnym ukośnikiem \ lub końcowe , jak opisano dla sekcji kontrolnych.

Atrybuty boolowskie

Wartości atrybutów prawdziwe, fałszywy i zero są interpretowane jako booleans. Jeśli używasz opakowania atrybutów, możesz pominąć przypisanie atrybutu.

typ wejściowy ="tekst" disabled ="niepełnosprawny"
typ wejściowy ="tekst" disabled = trueinput (type ="tekst" niepełnosprawny)typ wejściowy ="tekst"
typ wejściowy ="tekst" disabled = falsetyp wejściowy ="tekst" disabled = zero

Łączenie atrybutów

Można skonfigurować atrybuty do scalenia, jeśli podano wiele (zobacz opcję : merge_attrs). W domyślnej konfiguracji jest to zrobione dla atrybutów klas z białą spacją jako ogranicznikiem.

a.menu class ="atrakcja" href ="http://slim-lang.com/" Slim-lang.com

Zapewnia to:

<a class ="podświetlenie menu" href ="http://slim-lang.com/"> Slim-lang.com </a>

Możesz także użyć Szyk jako wartość atrybutu i elementy tablicy zostaną scalone przy użyciu ogranicznika.

a class = ["menu","atrakcja"]a class =: menu,: highlight

Atrybuty Splat *

Skrót Splat umożliwia zamianę skrótu na pary atrybutów / wartości.

.karta*{"data-url" => ścieżka_ miejsca (miejsce), "identyfikator danych" => miejsce.id} = miejsce.nazwa

Zapewnia to:

<div class ="karta" data-id ="1234" data-url ="/ miejsce / 1234"> Dom szczupaka </ div>

Możesz także użyć metod lub zmiennych instancji, które zwracają skrót, jak pokazano tutaj:

.card * method_which_returns_hash = place.name.card * @ hash_instance_variable = place.name

Atrybuty mieszania, które obsługują scalanie atrybutów (zobacz opcję Slim : merge_attrs) można podać jako Szyk

.pierwszy *{klasa: [: drugi,: trzeci]} Tekst

Zapewnia to:

div class = "pierwsza druga druga"

Prefiks atrybutów splat można skonfigurować za pomocą splat_prefix opcja. Domyślna wartość to '*'

Tagi dynamiczne *

Możesz tworzyć całkowicie dynamiczne tagi przy użyciu atrybutów splat. Po prostu utwórz metodę, która zwraca skrót z kluczem: tag.

rubin: def a_unless_current @page_current? {etykietka: 'przęsło'}: {tag: 'za', href: 'http://slim-lang.com/'} koniec- @page_current = true* a_unless_current Link- @page_current = false* a_unless_current Link

Zapewnia to:

<span> Link </ span> <a href ="http://slim-lang.com/"> Link </a>

Skróty

Skróty do tagów

Możesz zdefiniować własne skróty do etykiet, ustawiając opcję :skrót. W aplikacjach Railsowych, musisz umieścić ten kod dla swoich skrótów w inicjalizatorze jak config / initializers / slim.rb. W Sinatrze wystarczy dodać tę samą konfigurację w dowolnym miejscu poniżej linii, w której się znajdujesz wymagać "szczupłej".

Skrót Slim :: Engine.set_options: {'do' => {tag: 'pojemnik'}, '#' => {attr: 'ID'}, '.' => {attr: 'klasa'} }

Możemy go używać w Slim tak jak to

c.content Tekst

który renderuje do

<pojemnik class ="zadowolony"> Tekst </pojemnik>

Skróty atrybutów

Możesz zdefiniować własne skróty (podobne do # dla id i . dla klasy).

W tym przykładzie dodajemy & utworzyć skrót dla elementów wejściowych z atrybutem type.

Skrót Slim :: Engine.set_options: {'&' => {tag: 'wkład', attr: 'rodzaj'}, '#' => {attr: 'ID'}, '.' => {attr: 'klasa'}}

Możemy go używać w Slim tak jak to

& nazwa tekst ="użytkownik"
hasło i nazwa ="pw"
&Zatwierdź

który renderuje do

<typ wejściowy ="tekst" name ="użytkownik" /><typ wejściowy ="hasło" name ="pw" /><typ wejściowy ="Zatwierdź" />

W innym przykładzie dodajemy @ aby utworzyć skrót do atrybutu roli.

Skrót Slim :: Engine.set_options: {'@' => {attr: 'rola'}, '#' => {attr: 'ID'}, '.' => {attr: 'klasa'}}

Możemy go używać w Slim tak jak to

.person @ admin = person.name

który renderuje do

<div
4.6
Średnia ocena: 27
5
12
4
2
3
1
2
3
1
1