Гэтсби фон: Изображения Гэтсби | Бесплатные векторы, стоковые фото и PSD
А. УсмановаОсобенности сюжета и композиции в романе Фицджеральда Великий Гэтсби
А. Усманова. Особенности сюжета и композиции в романе Фицджеральда Великий Гэтсби.Роман «Великий Гэтсби» сам Ф.С.Фицджеральд называл вершиной своего творчества. Часто роман рассматривался с точки зрения главной идеи романа, системы образов или смысла заглавия. Композиции же романа уделялось крайне мало внимания. В то время как композиция является в данном произведении одним из самых интересных моментов, благодаря которому раскрываются глубинные пласты содержания.
Джаз играет определяющую роль в «Великом Гэтсби». Это не только музыка, являющаяся фоном эпохи (Фицджеральд называл свое время «веком джаза»). Джаз — это также и принципы построения музыкальной пьесы, элементы которой самым неожиданным образом были использованы в литературном произведении — романе «Великий Гэтсби». Музыка джаза основана на импровизации, но любая импровизация строится вокруг какой — либо одной темы. Таким образом, наивысшим проявлением таланта является способность воплотить полет фантазии, не оторвавшись до конца от заданной темы. Способность импровизировать — это умение воплотить содержание в приемлемой для зрителя (слушателя, читателя) форме, то есть так, чтобы авторская мысль не терялась в ее изысках. Естественно, импровизация в литературном произведении невозможна в том виде, в котором она присутствует в музыке. Поэтому Скотт Фицджеральд, как талантливый художник, избрал другую, наиболее удобную форму — импровизацию как игру со словом, а значит, и с читателем, так же как джазовый солист импровизирует, играя со своими слушателями. При более подробном изучении можно провести прямые параллели между построением джазового произведения и композицией «Великого Гэтсби». Но способность импровизировать (в том числе и в литературе) — это не только требование безграничной фантазии и таланта. Это также результат досконального изучения и знания литературных приемов и их тонкостей.
Во избежание путаницы с терминами «композиция», «сюжет» и «фабула» будем придерживаться их определенной трактовки: фабула — схема события, сюжет — схема произведения, композиция — построение художественного произведения, система средств раскрытия образов, обусловленная авторским мировоззрением.
Фабула произведения заключается в следующем. Главный герой, Джей Гэтсби — нувориш, о богатстве которого ходят легенды. Он добился своего благосостояния только для одной цели — ради расположения красавицы Дэзи Фей. Когда-то в молодости Гэтсби не смог жениться на ней из — за разницы в социальном положении. Дэзи была дочерью богатых родителей, привыкшей к роскоши и развлечениям, Гэтсби — простым военным. В то время, пока Гэтсби служит на войне и зарабатывает на нелегальной продаже алкоголя во время «сухого закона», Дэзи успевает выйти замуж за Тома Бьюкенена — такого же, как она, выходца из богатой семьи, получившего свое состояние по наследству. Все это — так называемая «линия прошлого» в романе.
Настоящее начинается с того момента, когда в произведении появляется еще один важный персонаж — Ник Каррауэй. Это герой, глазами которого читатель видит все происходящее, поскольку Ник и является рассказчиком — человеком, от лица которого ведется повествование. Выбор композиции повествования — важный момент для автора литературного произведения, поскольку он выбирает не только свою позицию относительно происходящего, но и средства, с помощью которых он будет характеризовать героев. Будучи одним из главных героев, Ник напрямую связан с остальными персонажами романа (согласно сюжету, он знаком со всеми тремя основными героями — Томом, Дэзи и Гэтсби). С Томом Ник учился еще в университете, Дэзи приходится ему троюродной кузиной (которую, впрочем, он видит довольно редко), и, вдобавок ко всему, Ник — ближайший сосед Гэтсби. В развязке произведения выяснится, что Ник будет единственным другом главного героя.
Таким образом, Ник не только является связующим звеном между прошлым и настоящим романа, но он также концентрирует героев «Великого Гэтсби», пространство и время в один фокус. Ник постепенно узнает об истории любви Гэтсби к Дэзи, является очевидцем их отношений в настоящем и становится свидетелем крушений надежд и трагедии главного героя. Что же касается пространственного соотношения, то таким местом становится Уэст Эгг — место, где живут Ник и Гэтсби.
При этом движение времени не останавливается с появлением Ника, ведь он — не пассивный наблюдатель, а активный участник всего происходящего. Без активных усилий над собой со стороны Ника, которые достигаются при анализе окружающей действительности, он не смог бы сделать своего морального выбора, окончательно сформировать свое мировоззрение. Ник также является единственным героем в романе, чей характер не статичен. Его взгляды начинают постепенно меняться, когда его установки в начале романа не совпадают с реальными духовными требованиями. Достаточно сравнить Ника до произошедших событий и после. В так называемом «прологе» романа (поскольку композиционно он включен в состав первой главы, а не в отдельную составляющую) уже видны первые особенности этого произведения. На протяжении романа Ник сменит свои категоричные взгляды на окружающих, сделав исключение для Гэтсби.
В данном случае пролог предваряет не только действие (дается первое упоминание о Гэтсби), но и смысл предшествующих событий. Происходит определенная «настройка» читателя на нужное русло. Фицджеральд как бы подсказывает, что нужно обратить внимание на уникальность Гэтсби: «If personality is an unbroken series of successful gestures, then there was something gorgeous about him, some heightened sensitivity to the promises oflife» [Горбунов 1974: 8].
Впоследствии этот ход послужит важным моментом в создании образа Гэтсби, вернее, ореола таинственности вокруг него. А пока в прологе видны первые противоречия, которые впоследствии также станут частью характеристики Джея Гэтсби, — ненависть и одновременно восхищение всем, что он собой олицетворял. Таким образом, Фицджеральд в одном абзаце сталкивает Ника прошлого и Ника настоящего: «Only Gatsby, the man who gives the name to this book, was exempt from my reaction — Gatsby, who represented everything for which I have an unaffected scorn» [Горбунов 1974: 8].
Связано это в первую очередь с изображением времени в литературе. Опять же, здесь важна позиция рассказчика. Нику дана возможность говорить о событиях уже после их завершения, но в то же время иногда трудно бывает определить, развивается ли действие непосредственно в настоящем или это всего лишь воспоминание о событии. Скорее, в романе можно выделить три (а не две, как обычно) временные линии.
Во-первых, это уже свершившееся прошлое. Сюда входят события Октября 1917 г. (время последней встречи Дэзи и Гэтсби), а также все, что последовало за этим (свадьба с Томом, рождение дочери, проживание в Чикаго). Эта линия касается и прошлого всех остальных героев — Ника, Тома, Джордан, Миртл Уилсон и самого Гэтсби. Поскольку все эти герои, согласно фабуле, так или иначе связаны друг с другом, то экспозиция каждого дается в сочетании с описаниями прошлого остальных.
Во-вторых, это события «настоящего», то есть те, которые начинаются с того момента, когда в непосредственное развитие действия включается Ник. То есть временная последовательность событий выглядит так: в линию прошлого как бы вплетается еще одна нить — появляется Ник Каррауэй. Причем этот переход прошлого в настоящее едва заметен для читателя, так как дается прошлое и настоящее Ника. Его линия экспозиции начинается с рассказа о семье, получении образования, об участии в войне и приезде в Уэст-Эгг. Эпизод со случайным прохожим и ощущения Ника после этого и есть та граница между прошлым (которое, как выяснится, будет связано и с Томом, и с Дэзи, и с Гэтсби) и настоящим.
И в-третьих, информация, данная читателю в прологе, уже говорит о том, что рассказчик будет говорить об уже свершившемся событии. То есть пролог в данном случае как бы выполняет функцию эпилога, давая заключительные выводы рассказчика. А это говорит о том, что существует третий взгляд на события, который, окольцовывая с помощью пролога и эпилога все произведение, является «взглядом снаружи» и наиболее приближен к авторской точке зрения, его идее.
На сюжетную линию Гэтсби нужно обратить особое внимание, поскольку ее развитие представляет собой сочетание самых различных приемов. Несмотря на то, что в романе — множество эпизодов, задерживающих непосредственное развитие действия (ретардация), на фоне этого линия Гэтсби продолжает развиваться вполне логично. Здесь можно провести параллель с джазовым произведением, когда импровизация строится вокруг основной темы. Могут меняться мотивы, способы звукоизвлечения, инструменты, но главная линия остается неизменной. Музыка в «Великом Гэтсби» ощущается как бы подсознательно, и этот эффект достигается с помощью композиции глав и способа развития действия.
Ретардация необходима не только для того, чтобы разрядить насыщенность почти детективной фабулы событиями, но и для того, чтобы подготовить наиболее напряженные кульминационные моменты. В начале романа напряженное развитие действия не так необходимо, так как пока только требуется создать определенный «фон», который впоследствии поможет читателю разобраться во всем происходящем. В начальных главах «Великого Гэтсби» очень много деталей экспозиции — дается информация о прошлом Ника, Тома, отчасти Дэзи (моменты, не связанные с личными отношениями с Гэтсби), Миртл. Причем ни одна «биография», ни одно описание не остается лишним, все моменты задержания развития действия несут в себе определенный смысл. Если это воспоминания героев о прошлом, касающемся Гэтсби или Дэзи, то эта ретардация служит для характеристики героев. Если это описания, данные рассказчиком, то они носят символический характер. Как, например, описание природы во время визита Дэзи к Гэтсби: изображено, как цветут в саду Гэтсби весенние цветы, хотя по хронологии произведения время визита, скорее всего — конец лета — осень (что является, вероятно, символом обновления и очищения отношений). Описание «Долины Шлака» в начале второй главы — не только ключ к символической «серости» (налет которой покрывает и предметы, и людей), но и джазовый лейтмотив в произведении. В девятой главе даются воспоминания Ника о детстве. Этот «flashback» так же имеет важное композиционное значение: он является не просто ностальгическим воспоминанием, но и служит для характеристики двух противоположных полюсов — Востока и Запада.
Немаловажное значение приобретают параллельные мотивы в романе. Композиционное построение некоторых глав иногда очень похоже. Так, например, можно провести параллель между построением первой и второй главы. Непосредственно «настоящее» начинается в первой главе с того момента, когда Ник указывает дорогу заблудившемуся прохожему. Далее идет описание Уэст — Эгта, а вторая глава начинается с описания Долины Шлака. Прибыв в дом к Бьюкененам, Ник видит Тома, в изображении которого подчеркивается сила и мощь. Говоря о Миртл во второй главе, рассказчик подчеркивает ее земную чувственность. Когда Ник встречается с Дэзи и Джордан, всей лексикой подчеркивается легкость, царящая в доме (хлопающие занавески, легкие платья, белый цвет и т. д.). В каморке Уилсона о такой легкости напоминает разве что шлаковая пыль, покрывающая все вокруг. В первой главе Джордан впервые упоминает имя Гэтсби, в следующей главе сестра Миртл Кэтрин говорит о его вечеринках. Дэзи и Джордан знают о любовнице Тома — во второй главе мотив неудачного брака является популярной темой для разговоров. Первая глава заканчивается тем, что Ник видит Гэтсби, протягивающего руки к темной воде, что созвучно с названием картины, которую Ник упоминает в конце второй главы — «Loneliness» — одиночество Ника, одиночество Гэтсби. «Beauty and the Beast» — связь с Томом и Дэзи, «Old Grocery Horse» — параллель с Уилсоном, «Brook’n Bridge» — та черта, которая разделяет два наиболее контрастных района Нью-Йорка — Манхеттен и Бруклин. Встречаются и параллельные мотивы внутри одной главы. Например, шлаковая пыль в начале второй главы и сигаретный дым в конце. Смысл этой параллели, скорее всего такой: как ни стремится убежать героиня в Нью-Йорк от своего шлакового мирка, она опять попадает в этот плен.
Параллельные мотивы неизбежно ведут к тому, что некоторые проблемы, уже указанные автором, позже начинают повторяться, следовательно, возникает прием художественного предварения. Так, например, окончательный выбор Дэзи был предопределен многими мотивами (легкое отношение к жизни на фоне «воздушной» атмосферы в первой главе, ее голос, в котором «звенят деньги» и т. п.).
Параллелизм, в свою очередь, напрямую связан с джазом. Джаз характеризуется, во-первых, наличием постоянного ритма и пульсации. Во-вторых, импровизации всегда строятся вокруг одной темы, которая придает форму импровизации солиста, не дает зайти ей слишком далеко. То есть фантазия музыканта сама по себе может быть безгранична. Наличие же одной темы, постоянное возвращение к ней, является организующим моментом, позволяющим солисту не забывать о слушателе. Умение импровизировать также означает умение воплотить свою мысль в такую форму, чтобы она была понятна слушателю.
Итак, именно на ощутимой связи с музыкой джаза основаны приемы параллелизма, художественного предварения, ретардации и остальных приемов. Связано это в первую очередь с тем, что основными чертами джаза являются импровизация и построение вокруг определенной темы. А наличие этой темы, в свою очередь, позволяет импровизатору возвращаться к ней (отсюда прием «flashback»), постоянно повторять в измененном виде (параллелизм), а значит, «предсказывать» события (художественное предварение) и играть с читателем (ложные ходы, ретардация).
Тот факт, что в «Великом Гэтсби» джаз является не только фоном эпохи, но и композиционным приемом, говорит о том, что авторское мироощущение находится под сильным влиянием этого направления. Если для композиции литературного произведения (которое является «моделью» реальности) была выбрана именно такая форма, значит, в окружающей жизни много черт джаза — неустойчивость, неожиданность, импровизация, легкость и непредсказуемость. Фицджеральд, тонко чувствуя самые трагические противоречия своего времени (а также предчувствуя грядущую депрессию тридцатых годов), с большим мастерством отразил их в своем романе «Великий Гэтсби» во многом с помощью особого построения сюжета и композиции.
ЛИТЕРАТУРА Горбунов А.Н. Романы Фрэнсиса Скотта Фицджеральда.- М.: Наука, 1974.- 152 с.
Зверев А.М. Американский роман 20-30-х годов.- М.: Худ. лит., 1982.- 256 с.
Конен В.Д. Рождение джаза.- М.: Сов. композитор, 1990.- 320 с.
Кухалашвили В.К. Френсис Скотт Фицджеральд и американский литературный процесс 20-30х годов XX века.- Киев: Наукова думка, 1983.- 240 с.
Лидский Ю.Я. Скотт Фицджеральд. Творчество.- Киев: Наукова думка, 1982.- 367 с.
Литературный энциклопедический словарь / Под общ. ред. В.М.Кожевникова, П.А. Николаева.- М.: Сов. энциклопедия, 1987.
Музыкальный энциклопедический словарь / Под ред. В.Г.Келдыша.- М.: Сов. энциклопедия, 1990.
Томашевский Б. Краткий курс поэтики.- М., Л..: Гос. изд-во, 1930.- 160 с.
Тэрнбул Э. Скотт Фицджеральд / Пер. с англ. Е.Логинова, Г.Логиновой.- М.: Молодая гвардия, 1981.- 318 с.
Фицджеральд Ф.С. Великий Гэтсби / Пер. с англ. Е.Калашниковой.- М.: Худ. лит., 1985 — 144 с.
Фицджеральд Ф.С. Портрет в документах: художественная публицистика / Пер. с англ.- М.: Прогресс, 1984.- 344 с.
Fitzgerald F.S. The Great Gatsby: Penguin Popular Classics, 1994.- 188 р.
Казанский Государственный Университет; из сборника «Взгляд молодых», раздел Литературоведение, Казань, 2003. http://www.kcn.ru/tat_ru/universitet/fil/kn2/index.php?sod=40
javascript — gatsby-image-background с использованием v3 gatsby-image
Я пытаюсь заставить gatsby-background-image работать с v3 gatsby-plugin-image. Я следил за документацией и обнаружил, что должен использовать gbimage-bridge.
По какой-то причине это не работает. Мой запрос отлично работает при тестировании в ide. Я пытался изменить свой запрос и константы разными способами, но не могу заставить его работать.
Сейчас он просто выводит текст Test, но фон не отображается.
Мой код:
import { graphql, useStaticQuery } from "gatsby"
import { getImage } from "gatsby-plugin-image"
import { BgImage } from "gbimage-bridge"
const GbiBridged = () => {
const { backgroundImage123 } = useStaticQuery(graphql`
query {
backgroundImage123: allWpPage {
nodes {
ACFforside {
heroimg {
localFile {
childImageSharp {
gatsbyImageData(
width: 2000
quality: 50
placeholder: BLURRED
formats: [AUTO, WEBP, AVIF]
)
}
}
}
}
}
}
}
`)
const pluginImage = getImage(backgroundImage123)
return (
<BgImage image={pluginImage}>Test</BgImage>
)
}
export default GbiBridged
1
TurboTobias 8 Май 2021 в 10:23
1 ответ
Лучший ответ
Думаю, ваш фрагмент должен выглядеть так:
import React from 'react'
import { graphql, useStaticQuery } from 'gatsby'
import { getImage, GatsbyImage } from "gatsby-plugin-image"
import { convertToBgImage } from "gbimage-bridge"
import BackgroundImage from 'gatsby-background-image'
const GbiBridged = () => {
const { backgroundImage123 } = useStaticQuery(
graphql`
query {
backgroundImage123: allWpPage {
nodes {
ACFforside {
heroimg {
localFile {
childImageSharp {
gatsbyImageData(
width: 2000
quality: 50
placeholder: BLURRED
formats: [AUTO, WEBP, AVIF]
)
}
}
}
}
}
}
}
`
)
const image = getImage(backgroundImage123.nodes[0].ACFforside.heroimg.localFile)
// Use like this:
const bgImage = convertToBgImage(image)
return (
<BackgroundImage
Tag="section"
// Spread bgImage into BackgroundImage:
{...bgImage}
preserveStackingContext
>
<div style={{minHeight: 1000, minWidth: 1000}}>
<GatsbyImage image={image} alt={"testimage"}/>
</div>
</BackgroundImage>
)
}
export default GbiBridged
Я предполагаю, что ваш запрос выбирает правильные узлы, в противном случае протестируйте его на игровой площадке localhost:8000/___graphql
0
Ferran Buireu 8 Май 2021 в 09:41
Великий Гэтсби
Рассказчик от первого лица Ник Каррауэй начинает своё повествование с совета, который когда-то ему дал его обеспеченный отец, просивший его не судить других людей, не обладавших его преимуществами. Следование этому совету вошло в привычку Ника, за исключением случая Гэтсби. Ник покидает Нью-Йорк, где произошла ещё не поведанная читателям история, чтобы вернуться на родной Средний Запад. Таким образом, последующий рассказ представляет из себя ретроспективу.
Свою историю Ник начинает воспоминанием о том, как арендовал дом в Уэст Эгге на Лонг-Айленде, где, в отличие от Ист Эгга, жили не знатные, но не менее богатые люди. Ник посещает роскошный особняк Тома и Дэзи Бьюкененов. Дэзи была троюродной сестрой Ника, а её муж, Том, некогда играл в футбол в Йеле (там он был шапочно знаком с Ником), а ныне наслаждается богатством. Том изображается Ником как высокомерный человек с расистскими взглядами и мощным телосложнием, а Дэзи как милая, но недалёкая домохозяйка с трёхлетней дочерью. Именно в этом доме Ник встречает Джордан Бейкер, подругу Дэзи и очень известного игрока в гольф. Джордан сообщает Нику, что у Тома любовница в Нью-Йорке.
Для встреч с последней, Миртл Вилсон, женой ничего не подозревающего автомеханика Джорджа, Том арендует шикарные апартаменты в городе. Том приглашает туда Ника, где он также знакомится с Кэтрин, сестрой Миртл, и Честером и Люсиль Мак-Ки, друзьями Миртл. Ночь заканчивается всеобщей попойкой и разбитым носом Миртл, раздражавшей Тома упоминанием имени Дэзи. Ник удаляется из этого хаоса с мистером Мак-Ки.
Ник был ближайшим соседом Джея Гэтсби, очень богатого человека, известного проведением шикарных весёлых вечеринок в своём гигантском особняке, которую каждую субботу посещали сотни людей. Вскоре шофёр Гэтсби принёс Нику формальное приглашение на подобную вечеринку.
Гэтсби был загадочным человеком, о размере и источнике огромных богатств которого ходило много слухов. Никто из встреченных Ником гостей ничего не знал о его прошлом. Во время вечеринки некий мужчина узнал Ника, так как он служил с ним в Третьей дивизии Армии США во время Первой мировой войны. Ник подтвердил свою службу в армии, и поинтересовался где можно найти мистера Гэтсби. Оказалось, что собеседник Ника и есть мистер Гэтсби. Вскоре между мужчинами завязалась дружба.
Ник был очень удивлён, когда Джей привёз его в Нью-Йорк и без объяснения причин своего поступка поведал ему историю своего восхождения по социальной лестнице, казавшуюся выдуманной. Вышеупомянутая знакомая Ника Джордан Бейкер поведала ему, что Гэтсби проводит эти вечеринки в надежде на то, что Дэзи, его бывшая подружка, случайно заглянет к нему. Через Джордан Гэтсби просит Ника устроить ему встречу с Дэзи. Ник обещает сделать это, и воссоединение влюблённых состоялось, в начале ситуация была неловкой, но затем всё пошло по плану. Одновременно начинается роман между Ником и Джордан.
Вскоре по ходу сверхэмоциональной сцены в отеле «Плаза» Том узнаёт о любви Джея к Дэзи, и обвиняет его в том, что он бутлегер. Том угрожает Гэтсби и выражает свою ненависть к нему. В ответ Джей настаивает на том, чтобы Дэзи сказала, что она никогда не любила Тома, надеясь на восстановление прерванной 5 лет назад любви. Дэзи хоть и нерешительно, но отказывается говорить это. Том чувствует победу. Он решает, что обратно Дэзи и Гэтсби поедут вместе, а он, Ник и Джордан едут в другой машине.
В это время Джордж Вилсон также спорил со своей женой. Она выбегает из дома и её сбивает машина Гэтсби, которую вела Дэзи. Миртл тотчас умирает, Дэзи и Джей уносятся прочь. Ехавшие позади, Джордан, Ник и Том, замечают погибшую. Том понимает, что его любовница умерла. Джордж выбегает из дома с безумным выражением лица и кричит, что видел жёлтую машину. Том уводит Вилсона в дом и объясняет, что не ехал на жёлтой машине сейчас, на которой ехал по дороге в Нью-Йорк, но Вилсон его не слушает. Решив, что водитель машины был тем, с кем встречалась Миртл, он решает найти эту машину.
Здесь прекращается повествование Ника и последний превращается в одного из прочих героев романа. Он советует Гэтсби уехать на недельку. Последние слова, которые Ник говорит Джею звучат так: «Ничтожество на ничтожестве, вот они кто. Вы один стоите их всех, вместе взятых».
Вилсон доходит до дома Тома, и тот под дулом пистолета говорит, что это Гэтсби вёл ту машину. Вилсон убивает Гэтсби в его бассейне и совершает самоубийство.
Ник обзванивает знакомых Гэтсби, но никто из них не приходит на похороны Гэтсби. Ник находит отца Гэтсби Генри Гетца, гордого своим сыном. Помимо их двоих и слуг на похоронах присутствует только человек, похожий на филина, которого Ник встретил как-то в библиотеке Гэтсби. После разрыва отношений с Джордан Бейкер и небольшой перебранки с Томом, Ник покидает Нью-Йорк, уезжая на Средний Запад, размышляя о возможности вернуть прошлое.
Мебель и интерьеры из фильма » Великий Гэтсби» (The-Great-Gatsby)
Один из самых ожидаемых фильмов года сначала открыл Каннский фестиваль, а спустя несколько дней вышел на большие экраны. Киноверсия знаменитого романа Скотта Фитцджеральда «Великий Гэтсби» может похвастаться не только отменными актерскими работами, но и восхитительными интерьерами
в стиле ар-деко.
На фото:
20-е годы прошлого века — время веселья, гламура и джаза. Эту эпоху, когда на взлете экономики и во время сухого закона нарождалась новая череда нуворишей, когда наряды становились все откровеннее, а вечеринки превращались в настоящие карнавалы богатства, и описал в своем знаменитом романе известный американский писатель Скотт Фитцджеральд. История трагической любви великого Гэтсби развивается в незабываемый век ар-деко, стиля, олицетворяющего богатство, процветание и роскошь.
На фото:
Леонардо ДиКаприо очень хотел сыграть Гэтсби — ему импонировала «идея человека, который был абсолютно ничем, и создал себя, отталкиваясь только от собственного воображения».
Свое путешествие мы начнем со старинного особняка Тома и Дэйзи Бьюкенен, беззаботных отпрысков богатых семей, где обман и измены давно стали нормой существования. Они такое же порождение своей эпохи, как и их старинный дом, где легкий современный стиль потихоньку начал выживать затхлый викторианский.
В столовой все еще царствует прошлое, отягощенное громоздкой деревянной мебелью, расписными восточными вазами и отделанными позолотой ширмами.
Ширму часто называли подвижной стенкой. Придумали ее китайцы еще в 7 веке, а в 17-ом она прочно обосновалась и в Европе.
Авторы фильма до мелочей воссоздали эпоху 20-х годов прошлого века с ее жаждой роскоши и тягой к экзотике. Стены, согласно старинным традициям, покрыли расписанными вручную шелковыми панелями в стиле шинуазри. Характерные китайские рисунки в стиле шинуазри выполнены теплыми, яркими, а иногда и смелыми цветами. Как инородное вкрапление смотрится современный вентилятор, установленный на витую колонну, где раньше, быстрее всего, восседал керамический шедевр в стиле шинуазри.
Тумбы-комоды с фигурно отделанными фасадами в те времена были обязательным предметом интерьера богатых особняков.
В гостиной Бьюкененов старые традиции находятся уже на заднем плане. Да и цветовое оформление воздушной гостиной уже мало напоминает сдержанные краски старинных особняков. Их сменили мягкие, женственные цвета: розовый, коралловый, кремовый, бежевый. Ткани и узоры тоже стали демократичней. Мебель украсили современные рисунки, пример — деревянный комод в шахматном окрасе. Старинный привет из прошлого — тяжелая струящаяся хрустальная люстра — вместе с развивающимися легкими белоснежными шторами, делают интерьер более воздушным и легким…
Благодаря своей форме хрустальная люстра в гостиной Бьюкененов в отличие от старинных светильников с множеством подвесок не смотрится громоздкой и не отягощает интерьер.
Культура прошлого еще не сошла со сцены. Отдыхать и скрываться от жары «золотая» молодежь все-таки предпочитает в легендарном отеле «Plaza Hotel», где вторжение нового стиля пока еще еле заметно. Разве только в нетипичной расцветке тканей (новомодная полоска на обивке кресла) и демократичной организации пространства (настольная лампа на полу). Кстати, именно в этом отеле провели свой медовый месяц автор романа «Великий Гэтсби» Скотт Фицджеральд и его супруга Зельда.
Когда-то такие кресла считались верхом дизайнерской мысли, а их конструкция — наиболее удобной для человеческого тела.
А это уже порождение нового времени и новых денег! Дворец в неоготическом стиле (стрельчатые окна, высокий арочный потолок, художественный паркет, массивные постаменты для таких же массивных цветочных ваз). Роскошь, элегантность отделки и изобилие позолоты превращает этот замок в настоящий Версаль. Из новых веяний здесь только парящая, словно взлетающая в небеса, с изящным изгибом лестница да оригинальный рисунок на полу, выложенный из драгоценных пород древесины.
В нашей подборке вы найдете несколько привлекательных вариантов декоративных розеток из коллекций художественного паркета.
Современные танцы в доме великого Гэтсби сопровождает органная музыка, а яства вкушают на восточный манер — развалившись на ворохе подушек. Вот такое пиршество в век машин, откровенных нарядов и быстро заработанных лихих денег! Вечеринка в стиле ар-деко — поистине визитная карточка безнадежного романтика Гэтсби.
На вечеринке в восточном стиле, конечно, не обойтись без вороха разноформатных декоративных подушек!
Жилище одного из героев фильма, который и рассказывает историю взлета и падения великого Гэтсби, Ника, задумано как полузаброшенный коттедж со скромной обстановкой, в отличие от величия соседнего имения Гэтсби. Домик несостоявшегося писателя завален мебелью и устаревшими предметами интерьера. Но и его мечтатель Гэтсби может превратить в настоящее любовное гнездышко для встреч со своей возлюбленной.
Специально для сладкоежек в свое время были изобретены подставки для пирожных и многоярусных тортов. В наше время без них тоже не обойтись.
Анализ произведения «Великий Гэтсби» (Фрэнсис Скотт Фицджеральд)
Популярный роман американского писателя Френсиса Скотта Фицджеральда «Великий Гэтсби» был опубликован в Париже в апреле 1925 года.
События, описанные в произведении, произошли в Америке двадцатых годов.
Совсем недавно завершилась Первая мировая война. Вчерашние молодые солдаты возвращаются к мирной жизни в мегаполисах. Поколение, бредящее «американской мечтой», гонится за личным счастьем, успехом, богатством.
Введение Сухого закона открывает небывалые возможности заработать на подпольной торговле спиртным. Именно так заработал свое состояние мечтатель Джей Гэтсби, о драматической истории жизни которого, положенной в основу сюжета, рассказывает его сосед, главный герой произведения, Ник Каррауэй.
Это история очень богатого человека, ставшего жертвой неограниченного материализма и кризиса нравственности в Америке того времени, названного
самим писателем «Веком Джаза».
Именно джаз играет важнейшую роль в романе. Это не просто музыкальный фон, на котором развивается действие произведения. Принцип построения джазовой пьесы удивительным образом использован автором в композиционной структуре романа.
Жанр, направление
«Великий Гэтсби» — реалистический роман со свойственными жанру и направлению признаками. Автором точно и скрупулезно описаны все детали и особенности жизни американского общества того времени.
Суть
«Великий Гэтсби» — одно из самых ярких произведений американской литературы, давшее емкую характеристику величию и низменности «американской мечты».
Экономический бум, роскошь, развлечения и вечный праздник – это не только фон, на котором происходят драматические события романа. Это ценности и приоритеты целого поколения молодежи, это неотъемлемые компоненты «американской мечты».
Поражающее воображение богатство и возможность расточительно тратить деньги позволяют главному герою стать частью того общества, о котором он мечтает с юных лет, но не избавляют от душевных терзаний, а в конце концов приводят к краху мечты и гибели.
Сам Фицджеральд так сказал о «Великом Гэтсби»: «Мой роман — о том, как растрачиваются иллюзии, которые придают миру такую красочность, что, испытав эту магию, человек становится безразличен к понятию об истинном и ложном».
Главные герои и их характеристика
Повествование ведется от лица главного героя произведения— Ника Каррауэя, по воле судьбы ставшего соседом Джея Гэтсби.
Именно глазами Ника читатель видит все происходящие события.
Каррауэй честен. Его оценка происходящего может быть воспринята в качестве верной с точки зрения общечеловеческой морали.
Ник подмечает двойственность в стремлениях Гэтсби, незаурядность его натуры и остается преданным ему.
Благодаря Джею Ник осознает свое место в жизни, но ему не чужды мечты Гэтсби о богатстве и романтическое восприятие окружающей действительности. Ведь не просто так Ник влюбляется в эгоистичную и инфантильную Джордан, подругу Дэйзи.
Со временем, на похоронах Гэтсби, Каррауэй осознает всю жестокость окружающего его общества и делает вывод о его нравственной несостоятельности и антигуманности.
Джей Гэтсби – окутанный тайной, удачливый и очень состоятельный мужчина лет тридцати.
Джей – сын небогатого фермера из Северной Дакоты, с детства мечтающий о богатстве, счастье и блистательном будущем.
Гэтсби побывал на фронтах Первой мировой. Мундир офицера некоторое время стал его пропуском в аристократичные слои общества, где он и познакомился с Дэйзи. И со времени их знакомства все, что делал Гэтсби, он делал ради нее и во имя ее. Дэйзи стала его любовью, его мечтой.
Но для этой мечты ему необходимо было стать очень состоятельным.
В душе Гэтсби зарождается конфликт двух противоположных начал.
Таким образом, в душе главного героя разворачивается конфликт несовместимых устремлений, совершенно разнородных начал – наивной мечтательности, чистоты, негаснущего «зеленого огонька» и беспринципной предприимчивости воротилы-бутлегера.
Возвышенная мечта выводит Гэтсби на опасный, полный обмана путь бутлегерства, а затем и вовсе губит его. Но даже находясь на грани крушения, Гэтсби не перестает верить и мечтать. И это делает его великим.
Дэйзи (Дэзи) Бьюкенен — центральная героиня романа, троюродная сестра Ника. Она молода, красива, богата. Дэйзи иронична и жестока. Ее интересуют лишь собственные желания и абсолютно не тревожит ответственность за свои поступки.
Выросшая в богатом доме, Дэйзи привыкла к роскоши и вниманию молодых мужчин. Не дождавшись, когда разбогатеет молодой офицер, в которого она была влюблена, Дэйзи вышла замуж за мужчину своего круга. Ее беспечную, веселую жизнь омрачают только измены мужа.
Дэйзи не решается принять предложение влюбленного в нее Гэтсби и остается с нелюбимым супругом.
Томас «Том» Бьюкенен — муж Дэйзи, очень неприятный персонаж. На первый взгляд веселый, добродушный, но на самом деле скользкий, опасный, хитрый и циничный человек. Изменяет жене, не скрывая это от друзей. В женщинах видит лишь существ для произведения на свет детей. Всегда поступает так, как ему хочется.
Тематические линии романа
В произведении прослеживается несколько тематических линий, связанных между собой.
Одной из ключевых является тема социального неравенства (отношения выходца из бедной семьи Джея Гэтсби и аристократки Дэйзи). Невозможность молодых людей быть вместе порождена осуждением общества, его ложными, надуманными ценностями.
Жизнь, подчиненная иллюзиям – вторая тематическая линия романа. Вся жизнь Гэтсби – это стремление к осуществлению иллюзии и гибель от нее.
Тема отношений в семье раскрывается на примере отношений Дэйзи и Тома, Гэтсби и его отца.
Тема страха изменений в жизни прослеживается в описании поступков Дэейзи, не желающей порывать отношения с нелюбимым и изменяющим мужем ради того, кто мечтает о ней всю жизнь.
При жизни писателя роман не завоевал особенной популярности, хотя почти сразу после публикации был поставлен на сцене Бродвея и экранизирован в Голливуде. Но после смерти Фицджеральда произведение было переиздано. 150 000 экземпляров книги отправили на фронт солдатам. В последующие десять лет роман стал бестселлером, обязательным к изучению в учебных заведениях многих англоязычных стран мира.
Сегодня «Великий Гэтсби» входит в сотню лучших романов на английском языке, написанных в XX веке.
Генератор статики gatsby
На выходных захотелось поэкспериментировать с блогом. Возможности vuepress исследованы. Душа просит новизны. Под руку попался gatsby. Ну, что ж, попробуем сделать мультиязычный сайт и поиграть с graphql, который поставляется как вариант по-умолчанию для передачи данных.
Установка
Любимый для подобных вещей npx
спешит на помощь. Выбираем минимальный starter-шаблон, чтобы
всё сделать по-своему с нуля. Используемая версия gatsby: 3.
$ npx gatsby new gatsby-blog https://github.com/gatsbyjs/gatsby-starter-hello-world
$ cd gatsby-blog
$ npm run develop
Файловая структура представлена ниже. Можно не воспроизводить её как есть, она лишь иллюстрирует откуда берутся те или иные файлы и помогает ориентироваться в дальнейших кусках кода.
.
├── content
│ ├── en
│ │ └── frontend
│ └── ru
│ ├── frontend
│ └── backend
├── gatsby-browser.js
├── gatsby-config.js
├── gatsby-node.js
├── gatsby-ssr.js
├── src
│ ├── assets
│ │ ├── images
│ │ │ └── great.jpg
│ │ └── styles
│ │ └── base.css
│ ├── components
│ │ ├── layout.js
│ │ └── theme-switcher.js
│ ├── pages
│ │ ├── 404.js
│ │ └── index.js
│ ├── templates
│ │ └── post-template.js
│ └── translations
│ ├── en.json
│ ├── ru.json
│ └── index.js
└── static
├── favicon.ico
├── sitemap.xml
└── robots.txt
Из названий, в общем-то, всё понятно. Единственное, что стоило бы уточнить: данные будут представлять собой markdown-файлы. Это наша база данных. Типичная для генератора статики, но не являющаяся единственным вариантом в случае с gatsby.
Graphql
После получения копии gatsby, можно сразу же запустить его в режиме разработки и поиграть
с graphql. Чтобы получить что-то полезное, сначала надо это полезное написать. Хотя бы
задать глобальные данные для сайта. Сделать это можно в gatsby-config.js
.
module.exports = {
siteMetadata: {
title: "Great gatsby multi-language blog",
},
}
Открыть браузер по адресу http://localhost:8000/___graphql и написать запрос:
{
site {
siteMetadata {
title
}
}
}
В файле конфигурации можно прописать названия и пути к каким-либо страницам и вывести
динамическое меню. Только помните: если запросы используются в компоненте, получайте их
через useStaticQuery
. Но обо всём по порядку.
Надеюсь, вы получили в ответ свой заголовок. Пора отправляться дальше.
Контент
Главная вещь, ради которой мы тут собрались: данные. Этот раздел самый большой, поэтому приготовьте чаю.
Данные
Перво-наперво пишем заметочку. Лучше несколько.
По slug
определим путь к заметке. Category
для тех, кто хочет разбивать страницы по категориям.
Конечно, дата, в формате год-месяц-день. Остальное должно быть понятно.
---
h2: Заголовок поста
title: Title для браузера
description: Описание для поисковых роботов
date: 2020-04-06
category: frontend
slug: gatsby
---
Мой контент
![alt](./tree.jpg)
Структура директории в формате локаль -> категория -> запись
:
.
├── content
│ ├── en
│ │ └── frontend
│ └── ru
│ ├── frontend
│ │ ├── gatsby
│ │ │ ├── gatsby.jpg
│ │ │ └── gatsby.mdx
Инструменты
Установка пакетов для работы с форматом mdx (в отличие от обычного markdown эта штука позволит использовать компоненты прямо в md-файлах. Ну не круто ли?).
$ npm i gatsby-plugin-mdx @mdx-js/mdx @mdx-js/react
Пакет «расшаривания» директории, где лежит контент, чтобы его содержимое было видно в graphql.
$ npm i gatsby-source-filesystem
И пакеты, позволяющие запросто подключать картинки и хранить их не где-то в static
,
а рядом с файлом-заметкой.
$ npm i gatsby-plugin-sharp gatsby-remark-images
Скормим их в файлу конфигурации:
module.exports = {
plugins: [
"gatsby-plugin-sharp",
{
resolve: "gatsby-source-filesystem",
options: {
name: "content",
path: `${__dirname}/content/`,
},
},
{
resolve: `gatsby-plugin-mdx`,
options: {
extensions: [`.mdx`, `.md`],
gatsbyRemarkPlugins: [
{
resolve: `gatsby-remark-images`,
options: {
maxWidth: 1200,
},
},
],
},
},
],
}
Данные подготовлены, пакеты установлены. Дальше следует выяснить как работает механизм
передачи данных. Для каждого markdown-файла создаётся страница (gatsby-node.js
).
Страница должна иметь шаблон (post-template.js
). В шаблоне можно вывести что угодно.
Поехали.
Создание страниц
const path = require("path")
exports.createPages = async ({ actions, graphql }) => {
const { createPage } = actions
const {
data: {
allMdx: { edges: posts },
},
} = await graphql(`
{
allMdx {
edges {
node {
frontmatter {
slug
category
}
}
}
}
}
`)
posts.forEach(({ node }) => {
const { slug, category } = node.frontmatter
return createPage({
path: `${category}/${slug}`,
component: require.resolve("./src/templates/post-template.js"),
context: { slug },
})
})
}
Шаблон
В шаблоне запрашиваем любые данные.
import React from "react"
import { graphql } from "gatsby"
import { MDXRenderer } from "gatsby-plugin-mdx"
export const query = graphql`
query getPost($slug: String!) {
mdx(frontmatter: { slug: { eq: $slug } }) {
body
frontmatter {
h2
slug
}
}
}
`
export default function PostTemplate({ data }) {
const { h2 } = data.mdx.frontmatter
const { body } = data.mdx
return (
<main>
<h2>{h2}</h2>
<MDXRenderer>{body}</MDXRenderer>
</main>
)
}
Всё! Новую запись можно увидеть по адресу http://localhost:8000/frontend/gatsby/
.
Это был самый трудоёмкий этап. Дальше можно вывести все записи на главной и перейти к пунктам
более простым и не менее полезным.
Записи на главной:
import React from "react"
import { graphql, useStaticQuery, Link } from "gatsby"
const getPosts = graphql`
query allPosts {
allMdx(sort: { fields: frontmatter___date, order: DESC }) {
edges {
node {
frontmatter {
h2
slug
category
date(formatString: "MMMM Do, YYYY")
}
}
}
}
}
`
export default function HomePage() {
const response = useStaticQuery(getPosts)
const posts = response.allMdx.edges
return (
<main>
<h2>Posts</h2>
<ul>
{posts.map(({ node: { frontmatter: post } }, index) => (
<li key={index}>
<span>{post.date}</span><br/>
<Link to={`${post.category}/${post.slug}/`}>{post.h2}</Link>
</li>
))}
</ul>
</main>
)
}
Объект posts
можно фильтровать и сортировать как захочется прямо здесь. На производительность
это не повлияет. После сборки останется статичная страница с преобразованными заранее данными.
Мультиязычность и SEO
На мой взгляд хорошим подспорьем для переводов в обычных javascript-файлах,
таких как страницы (pages), может быть пакет react-intl
. Однако, есть одна проблема:
для gatsby его метод injectIntl
работать не будет: не предусмотрен для использования
в этом окружении. Но не беда, есть обёртка над react-intl
, её и установим.
$ npm i gatsby-plugin-intl
Файл конфигурации принимает следующий вид:
module.exports = {
plugins: [
{
resolve: "gatsby-plugin-intl",
options: {
path: `${__dirname}/src/translations`,
languages: ["en", "ru"],
defaultLanguage: "ru",
redirect: false,
},
},
],
}
Создайте файлы с языковыми переводами, если не сделали этого раньше.
src
└── translations
├── en.json
├── ru.json
└── index.js
Переводы не должны иметь вложенность. Только flat. Это ограничение react-intl
.
Оно, конечно, обходится, но не станем заострять на этом внимание сейчас.
{
"home.h2": "Hello, welcome {user}",
"home.title": "Home title",
"home.description": "Home description"
}
Предпочитаю брать их все из одного места. Так удобнее.
import locale_en from "./en.json"
import locale_ru from "./ru.json"
export default {
en: locale_en,
ru: locale_ru,
}
В markdown-файлы добавить информацию о языке, это очень важные данные!
---
h2: Заголовок поста
lang: ru
---
h2: Post heading
lang: en
Поскольку контентные страницы создаём самостоятельно, передавать контекст тоже надо самостоятельно.
exports.createPages = async ({ actions, graphql }) => {
frontmatter {
lang
slug
category
}
posts.forEach(({ node }) => {
const { lang, slug, category } = node.frontmatter
return createPage({
path: `${lang}/${category}/${slug}`,
component: require.resolve("./src/templates/post-template.js"),
context: { lang, slug },
})
})
}
И lang
в шаблон, конечно, прокинуть. Надо же теперь распределять весь контент
по языковой принадлежности! Заодно правильно отформатируем даты для текущего языка.
export const query = graphql`
query getPost($slug: String!, $lang: String!) {
mdx(frontmatter: { slug: { eq: $slug }, lang: { eq: $lang } }) {
body
frontmatter {
h2
date(formatString: "MMMM Do, YYYY", locale: $lang)
}
}
}
`
Страницы в page
после установки плагина обзавелись новой переменной контекста — language
.
Теперь для каждой из них можно получить язык, установленный в браузере посетителя.
Фильтровать по этому признаку записи или добавлять seo-заголовки. Попробуем.
frontmatter {
lang
h2
slug
category
}
export default function HomePage({ pageContext: { language } }) {
const response = useStaticQuery(getPosts)
const posts = response.allMdx.edges.filter(
post => post.node.frontmatter.lang === language
)
return (
<main>
<ul>
{posts.map(({ node: { frontmatter: post } }, index) => (
<li key={index}>
<Link to={`/${post.lang}/${post.category}/${post.slug}/`}>
{post.h2}
</Link>
</li>
))}
</ul>
</main>
)
}
Осталось разобраться с локализацией самих js-страниц. На сцену снова выходит react-intl
.
Конечно, захочется правильно устанавливать html-атрибут lang
и писать в head
всякие
красивые мета-данные для поисковых роботов. В этом поможет layout.js
, куда будем складывать всё
это добро. Ставим react-helmet
и gatsby-plugin-react-helmet
:
$ npm i react-helmet gatsby-plugin-react-helmet
В gatsby.config.js
добавляем последний. Так мета-теги будут учитываться при генерации статики.
plugins: [
'gatsby-plugin-react-helmet',
]
Чтобы не страдать с импортом относительных путей, докрутим webpack.
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
modules: [path.resolve(__dirname, "src"), "node_modules"],
},
})
}
Дописываем в gatsby-config.js
глобальные title и description. Или не дописываем, а передаём
с конкретной страницы. Тогда и graphql-запрос не нужен. В общем, идём делать SEO.
import React from "react"
import { Helmet } from "react-helmet"
import { useStaticQuery, graphql } from "gatsby"
export default function Layout({
lang = "ru",
title = "",
description = "",
children,
}) {
const { site } = useStaticQuery(
graphql`
query {
site {
siteMetadata {
title
description
}
}
}
`
)
const metaDescription = description || site.siteMetadata.description
return (
<>
<Helmet
htmlAttributes={{ lang }}
title={title}
titleTemplate={`%s | ${site.siteMetadata.title}`}
meta={[
{ name: "description", content: metaDescription },
]}
/>
<main>{children}</main>
</>
)
}
Допустим, pages/index.js
пуст (если нет, создаём любой другой, к примеру about.js
).
import React from "react"
import {
useIntl,
FormattedDate,
FormattedMessage,
FormattedNumber,
} from "gatsby-plugin-intl"
import Layout from "components/layout"
export default function HomePage({ pageContext: { language } }) {
const intl = useIntl()
return (
<Layout
lang={language}
title={intl.formatMessage({ id: "home.title" })}
description={intl.formatMessage({ id: "home.description" })}
>
<p>
<FormattedDate value={new Date()} /><br />
<FormattedNumber value={12000} currency="USD" /><br />
<FormattedMessage values={{ user: "Jack" }} />
</p>
</Layout>
)
}
На этом вопросы мультиязычности и SEO считаю закрытыми.
gatsby-ssr
Надо бы затронуть и этот файл тоже. Но для чего? Gatsby встраивает инлайновые стили на страницу. Не всем это придётся по вкусу по той причине, что такие стили по-умолчанию не кэшируются. Это поведение меняется здесь. На любителя.
export const onPreRenderHTML = ({ getHeadComponents, replaceHeadComponents }) => {
if (process.env.NODE_ENV !== "production") return
const headComponents = getHeadComponents()
headComponents.forEach(el => {
if (el.type === "style") {
el.type = "link"
el.props["href"] = el.props["data-href"]
el.props["rel"] = "stylesheet"
el.props["type"] = "text/css"
delete el.props["data-href"]
delete el.props["dangerouslySetInnerHTML"]
}
})
replaceHeadComponents(headComponents)
}
Webpack
Небольшой пример тюнинга конфигурации webpack был рассмотрен в предыдущем разделе.
exports.onCreateWebpackConfig = ({ getConfig, actions, plugins }) => {
actions.setWebpackConfig({
devtool: getConfig().mode === "production" ? false : "source-map",
resolve: {
modules: [path.resolve(__dirname, "src"), "node_modules"],
},
plugins: [
plugins.define({
'__REACT_DEVTOOLS_GLOBAL_HOOK__': `({ isDisabled: true })`
})
],
})
}
Здесь упомяну лишь о том, как ставить свои плагины. На самом деле нет ничего проще.
Ставим что хотим + обязательно babel-preset-gatsby
.
$ npm i --save-dev babel-preset-gatsby @babel/plugin-proposal-optional-chaining
Создаём свой .babelrc
в корне проекта.
{
"plugins": [
"@babel/plugin-proposal-optional-chaining"
],
"presets": [
[
"babel-preset-gatsby",
{
"targets": {
"browsers": [
">0.5%",
"not dead"
]
}
}
]
]
}
Всё. Уже можно использовать plugin-proposal-optional-chaining
.
Картинки вне static
Импорт картинок, лежащих не глобально в static
, а где-нибудь в src/assets
, можно произвести
следующим образом:
import React from "react"
import image from "assets/images/great.jpg"
export default function HomePage() {
return (
<main>
<img src={image} alt="Great Gatsby" width={375} />
</main>
)
}
Dark mode
В мобильных приложениях появился dark mode. Осмелюсь доложить, штука неплохая. Вечерами спасает глаза. Те, кто хочет завести себе PWA и быть ближе к нативным мобильным, явно захотят и эту фичу. Что ж, сделаем!
Я опишу сложный вариант, чтобы продемонстрировать работу с gatsby-browser.js
.
Можно проще: менять класс у html
или body
(рабоать это будет, конечно, до перезагрузки страницы).
Понадобятся стили, общие для всех страниц для объявления в них css-переменных. В примере динамически меняться будут только фон и текст страницы.
:root {
--textColor: #3f3f3f;
--bgColor: #fafafa;
}
[data-theme="dark"] {
--textColor: #d9d7e0;
--bgColor: #232129;
}
body {
background-color: var(--bgColor);
color: var(--textColor);
}
Идём на сторону клиента. Код в onClientEntry
отрабатывает только один раз когда посетитель зашёл
на страницу.
require("./src/assets/styles/base.css")
exports.onClientEntry = () => {
enableTheme()
}
function enableTheme() {
const root = document.getElementsByTagName("body")[0]
try {
const uiTheme = localStorage.getItem("theme-ui-color-mode")
const theme = uiTheme ? uiTheme : "light"
root.setAttribute("data-theme", theme)
} catch (error) {
console.error('localStorage error', error);
}
}
Неплохо бы сделать переключатель, чтобы пользователь сам мог менять оформление.
import React from "react"
const onThemeToggle = () => {
const root = document.getElementsByTagName("body")[0]
const theme = root.getAttribute("data-theme")
const uiTheme = theme === "dark" ? "light" : "dark"
try {
root.setAttribute("data-theme", uiTheme)
localStorage.setItem("theme-ui-color-mode", uiTheme)
} catch (error) {
return false
}
}
export default function ThemeSwitcher() {
return (
<button onClick={onThemeToggle} type="button">
Change Theme
</button>
)
}
Ну, и подключить компонент-switcher куда-нибудь на страницу или в другой компонент: в шапку сайта, например.
import React from "react"
import Layout from "components/layout"
import ThemeSwitcher from "components/theme-switcher"
export default function HomePage({ pageContext: { language } }) {
return (
<Layout lang={language}>
<ThemeSwitcher />
<h2>Home</h2>
</Layout>
)
}
Проверяем, кликаем.
Если хочется менять тему в зависимости от времени суток, лучший вариант prefers-color-scheme. Тогда приведённый выше код даже писать не придётся.
Подсветка кода
Когда вы пишете в своих заметках тонны кода как это делаю я, подсветка жизненно необходима. Для gatsby есть два варианта: prism.js или highlight.js. Возьмём первый.
$ npm i prismjs gatsby-remark-prismjs
Настроек у пакета достаточно. Не вижу смысла описывать их все здесь, лучше увидеть полную картину.
Ограничимся минимумом. Надо сказать gatsby-plugin-mdx
, чтобы он применил prism.js
.
module.exports = {
plugins: [
{
resolve: `gatsby-plugin-mdx`,
options: {
gatsbyRemarkPlugins: [
{
resolve: `gatsby-remark-prismjs`,
options: {
classPrefix: "language-",
inlineCodeMarker: null,
},
},
],
},
},
],
}
Не забыть подключить стили подсветки. Можно глобально, а можно только на страницах записей.
require("prismjs/themes/prism-solarizedlight.css")
И посмотреть-таки, что получилось.
Кусок кода css.
```css
.gatsby-highlight {
background-color: #fdf6e3;
border-radius: 0.3em;
}
```
Комментарии
Редкий блог обходится без комментариев. Здесь у каждого свои предпочтения, начиная от выбора самой системы комментирования, и заканчивая реализацией её подключения. Мне интересно поведение, когда комментарии показываются только если посетитель сам захотел их увидеть. Следовательно, до этого момента (а он может не наступить никогда), я не хочу грузить какие-то сторонние скрипты.
Реализация именно такого поведения и представлена ниже. Из всего многообразия похожих скриптовых систем используем disqus.
Код disqus.
const DISQUS_ID = "xxxxx.disqus.com"
export const runDisqus = () => (function () {
const page = window.document;
const dscript = page.createElement("script");
dscript.src = `//${DISQUS_ID}/embed.js`;
dscript.setAttribute("data-timestamp", +new Date());
(page.head || page.body).appendChild(dscript);
})();
Компонент комментариев.
import React, { useState, useEffect } from "react"
import { runDisqus } from "./disqus"
const Comments = () => {
const [isThreadOpened, setIsThreadOpened] = useState(false)
const handleOpenThread = () => {
setIsThreadOpened(true)
if (typeof window !== "undefined") { runDisqus() }
}
useEffect(() => {
if (window.DISQUS) {
window.DISQUS.reset()
}
}, [])
return (
<div className="comments">
{!isThreadOpened && (
<button onClick={handleOpenThread}>
Show comments
</button>
)}
<div />
</div>
)
}
export default Comments
Подключаем компонент на страницы записей.
import React from "react"
import { graphql } from "gatsby"
import { MDXRenderer } from "gatsby-plugin-mdx"
import Comments from "components/comments"
export default function PostTemplate({ data }) {
const { h2 } = data.mdx.frontmatter
const { body } = data.mdx
return (
<main>
<h2>{h2}</h2>
<MDXRenderer>{body}</MDXRenderer>
<Comments />
</main>
)
}
Ещё вариант: подключать скрипт когда скролл доходит до конца страницы, чтобы ленивцы не напрягали палец нажатием на кнопку.
MDX
Plugin MDX — это в первую очередь доступ к множеству пакетов. Для gatsby они подключаются в двух вариациях: как адаптированный gatsby-пакет или как родной пакет remark.
Выглядит это так:
module.exports = {
plugins: [
{
resolve: "gatsby-plugin-mdx",
options: {
extensions: [".mdx", ".md"],
remarkPlugins: [
require("remark-external-links"),
],
gatsbyRemarkPlugins: [
"gatsby-remark-images",
"gatsby-remark-prismjs",
],
},
},
],
}
А самое вкусное то, что можно импортировать компоненты прямо в markdown-файлы. Это позволит сделать почти всё, что угодно. Вывод красивых табличек-предупреждений, нормальные вкладки с табами. Возможно, даже галерею изображений.
Самый простой случай — предупреждения. Делаем.
.tip {
padding: 2rem;
color: white;
}
.heading { font-weight: bold; }
.warning { background-color: coral; }
.danger { background-color: crimson; }
Сам компонент:
import React from "react"
import * as styles from "./tip.module.css"
export default function Tip ({ type, heading, children }) {
return (
<div className={[styles.tip, styles[type]].join(' ')}>
<p className={styles.heading}>{heading}</p>
{children}
</div>
)
}
Использование в mdx-файле:
import Tip from "components/tip"
<Tip heading="Danger!" type="danger">
My danger text
</Tip>
Публикация
Вариантов много. Рассмотрим деплой на github pages.
От знакомства с vuepress у меня остался прекрасный маленький скрипт, который я оставлю здесь, потому как он универсален.
#!/usr/bin/env sh
set -e
npm run build && cd public
echo 'blogname.com' > CNAME
git init
git add -A
git commit -m 'deploy'
git push -f [email protected]:jack/jack.github.io.git master:gh-pages
Послесловие
В статье осталось много неосвящённых моментов: как поднять PWA (точно надо?), можно ли брать gatsby когда нужно сотворить Headless CMS + статику (можно), обязательно ли использовать graphql (нет).
Ответы есть в официальной документации. Она очень хороша для глубокого погружения.
С чем сравнивать gatsby когда стоишь перед выбором? Зависит от потребностей.
На первой ступени стоят генераторы статики.
Тот же vuepress был создан в первую очередь для написания документации. И с этой задачей он справляется на 100% без ручного вмешательства. Его можно сравнить с octopress или jekyll. Вернее, из него можно сделать octopress (и даже лучше).
Вторая ступень… не знаю как обозначить эти фреймворки. Gatsby и его молодой аналог на Vue — Gridsome. Они предоставляют больше возможностей: обращение к серверу или напрямую к базе данных, или использование классики в виде локально хранящихся markdown-файлов.
Третья ступень: Next.js/Nuxt.js. Это если нужен server side rendering «из коробки», но одной лишь статикой не обойтись. В основном это приложения с множеством страниц, когда интерфейс подстраивается под каждого пользователя индивидуально.
Про мир Angular сказать не могу, но явно у них есть свои решения.
В любом случае смотреть надо на наличие хорошей документации, поддержки сообщества и того, сколько средств вливается в инструмент. У gatsby в этом плане на текущий момент всё очень неплохо.
У меня остались хорошие впечатления. И я, пожалуй, перееду на gatsby когда надумаю в следующий раз делать глобальный редизайн.
Великий Гэтсби — Фрэнсис Скотт Фицджеральд (стр. 1)
In my younger and more vulnerable years my father gave me some advice that I’ve been turning over in my mind ever since.
В юношеские годы, когда человек особенно восприимчив, я как-то получил от отца совет, надолго запавший мне в память.
“Whenever you feel like criticizing any one,” he told me, “just remember that all the people in this world haven’t had the advantages that you’ve had.”
— Если тебе вдруг захочется осудить кого то, — сказал он, — вспомни, что не все люди на свете обладают теми преимуществами, которыми обладал ты.
He didn’t say any more, but we’ve always been unusually communicative in a reserved way, and I understood that he meant a great deal more than that.
К этому он ничего не добавил, но мы с ним всегда прекрасно понимали друг друга без лишних слов, и мне было ясно, что думал он гораздо больше, чем сказал.
In consequence, I’m inclined to reserve all judgments, a habit that has opened up many curious natures to me and also made me the victim of not a few veteran bores.
Вот откуда взялась у меня привычка к сдержанности в суждениях — привычка, которая часто служила мне ключом к самым сложным натурам и еще чаще делала меня жертвой матерых надоед.
The abnormal mind is quick to detect and attach itself to this quality when it appears in a normal person, and so it came about that in college I was unjustly accused of being a politician, because I was privy to the secret grief’s of wild, unknown men.
Нездоровый ум всегда сразу чует эту сдержанность, если она проявляется в обыкновенном, нормальном человеке, и спешит за нее уцепиться; еще в колледже меня незаслуженно обвиняли в политиканстве, потому что самые нелюдимые и замкнутые студенты поверяли мне свои тайные горести.
Most of the confidences were unsought—frequently I have feigned sleep, preoccupation, or a hostile levity when I realized by some unmistakable sign that an intimate revelation was quivering on the horizon; for the intimate revelations of young men, or at least the terms in which they express them, are usually plagiaristic and marred by obvious suppressions.
Я вовсе не искал подобного доверия — сколько раз, заметив некоторые симптомы, предвещающие очередное интимное признание, я принимался сонно зевать, спешил уткнуться в книгу или напускал на себя задорно-легкомысленный тон; ведь интимные признания молодых людей, по крайней мере та словесная форма, в которую они облечены, представляют собой, как правило, плагиат и к тому же страдают явными недомолвками.
Reserving judgments is a matter of infinite hope.
Сдержанность в суждениях — залог неиссякаемой надежды.
I am still a little afraid of missing something if I forget that, as my father snobbishly suggested, and I snobbishly repeat, a sense of the fundamental decencies is parceled out unequally at birth.
Я до сих пор опасаюсь упустить что-то, если позабуду, что (как не без снобизма говорил мой отец и не без снобизма повторяю за ним я) чутье к основным нравственным ценностям отпущено природой не всем в одинаковой мере.
And, after boasting this way of my tolerance, I come to the admission that it has a limit.
А теперь, похвалившись своей терпимостью, я должен сознаться, что эта терпимость имеет пределы.
Conduct may be founded on the hard rock or the wet marshes, but after a certain point I don’t care what it’s founded on.
Поведение человека может иметь под собой разную почву — твердый гранит или вязкую трясину; но в какой-то момент мне становится наплевать, какая там под ним почва.
When I came back from the East last autumn I felt that I wanted the world to be in uniform and at a sort of moral attention forever; I wanted no more riotous excursions with privileged glimpses into the human heart.
Когда я прошлой осенью вернулся из Нью-Йорка, мне хотелось, чтобы весь мир был морально затянут в мундир и держался по стойке «смирно».
Я больше не стремился к увлекательным вылазкам с привилегией заглядывать в человеческие души.
Only Gatsby, the man who gives his name to this book, was exempt from my reaction—Gatsby, who represented everything for which I have an unaffected scorn.
Только для Гэтсби, человека, чьим именем названа эта книга, я делал исключение, — Гэтсби, казалось, воплощавшего собой все, что я искренне презирал и презираю.
Великий Гэтсби: Джей Гэтсби | Анализ характера
Анализ характера Джей Гэтсби
Как и Ник, Гэтсби родом со Среднего Запада (Северная Дакота, хотя его отец позже родом из Миннесоты). В начале книги он описывается как очаровательный, милосердный и немного загадочный мечтатель. Однако по мере развития истории читатель узнает все больше и больше о том, что порождает тайну: все, что он делал в своей взрослой жизни, было с единственной целью — осуществить самую нереалистичную из мечтаний — вернуть прошлое.Гэтсби во многих отношениях, как следует из названия, отличный , но если посмотреть на него критически, то некоторые вещи, которые он отстаивает, могут быть не такими замечательными.
В каком-то смысле история успеха Гэтсби из грязи в богатство делает его воплощением американской мечты. Он начал жизнь с малого, будучи сыном довольно неудачных фермеров. К тому времени, когда он был молодым человеком, у него было еще меньше, поскольку он добровольно отдалился от своей семьи, неспособный смириться с участью, с которой он столкнулся в жизни.Находясь в одиночестве, у него была возможность заново изобрести себя, и исключительно благодаря собственной изобретательности Джимми Гатц превратился в Джея Гэтсби. Таким образом, жизнь сильно изменилась (хотя ему не хватало одного ключевого ингредиента: денег). Он больше не был привязан к своим ранним годам, но мог представить себе любое прошлое, какое пожелал. А потом он влюбился, роковой случай, который навсегда изменил ход его жизни. После встречи с Дейзи все, что он делал, было единственной целью — завоевать ее.По сути, деньги были проблемой, которая мешала им быть вместе, и поэтому Гэтсби позаботился о том, чтобы больше никогда не остаться без них. Стремление и настойчивость Гэтсби в достижении своей цели во многих смыслах достойны похвалы. Он самодельный человек (во всех отношениях) и как таковой достоин восхищения.
Однако, помимо всех положительных качеств, есть аспекты Джея Гэтсби, которые ставят под сомнение это восхищение. Деньги Гэтсби поступили не от наследства, как он хотел бы думать, а от организованной преступности.Действие происходит во времена запрета, и Гэтсби получил большую прибыль от незаконной продажи спиртных напитков. К тому же, хотя люди приходят на вечеринки Гэтсби толпами, он действительно очень мало о них знает. На самом деле, он не хочет, чтобы знал о них много, а просто знает, знают ли они Дейзи. Наконец, дружба Гэтсби с Ником действительно начинает расцветать только после того, как он узнает, что Ник — двоюродный брат Дейзи.
Оценивая Гэтсби, нужно исследовать его слепое преследование Дейзи.Все, что он делает, каждая покупка, каждая вечеринка, которую он устраивает, — все это часть его грандиозного плана по возвращению Дейзи в его жизнь навсегда. С одной стороны, это прекрасный романтический жест, но с другой — он увековечивает детскую иллюзию. Сосредоточившись на своей мечте о Дейзи, Гэтсби все дальше и дальше продвигается в фантастический мир. Его неспособность иметь дело с реальностью выводит его за рамки нормы, и, в конце концов, его удержание за мечту приводит к его смерти. К концу главы 7 Гэтсби стоит на страже возле дома Дейзи на ненужном бдении.Он совершенно не может понять, что его мечта не является реальностью, и поэтому стоит, ожидая знака от Дейзи. Он считает то, что он делает, благородным, благородным и целеустремленным. Читатель, однако, видит тщетность своей задачи, поскольку он становится пародией на свое прежнее «я». Гэтсби в буквальном смысле фатально идеалист. Ему не терпится отдалиться от своего прошлого с точки зрения его семьи, но все же он живет своей взрослой жизнью, пытаясь вернуть прошлое, которое у него было с Дейзи. Что еще хуже, так это то, что он влюблен в идею Дейзи, а не Дейзи, как она сама.
timhagn / gatsby-background-image: компонент React с отложенной загрузкой (мульти) фонового изображения с дополнительной поддержкой эффекта размытия.
Быстрый, оптимизированный фон -картинки без работы!
gatsby-background-image
и gatsby-background-image-es5
— это компоненты React.
которые для фоновых изображений предоставляют то, что собственное изображение Gatsby gatsby-image
Гэтсби делает для
остальные изображения и даже больше:
Тестирование объяснено в отдельном разделе. Встроенная опора Art-Direction.
Обладает всеми преимуществами gatsby-image,
включая технику «размытия» или «отслеживаемого заполнителя»
SVG для предварительного просмотра изображения во время загрузки,
плюс можно использовать в качестве контейнера (больше никаких взломов с дополнительными обертками)
плюс может работать с несколькими сложенными фоновыми изображениями
плюс иметь возможность стилизовать с Tailwind CSS и подобными Frameworks
Весь гламур (и скорость) gatsby-image
для ваших фоновых изображений!
Конечно, можно стилизовать с стилизованными компонентами,
и тому подобным!
Преамбула
Начиная с gatsby-background-image @ 0.6.0
, это монорепозиторий, управляемый lerna
, так что взгляните на отдельные README
Пример репо
gatsby-background-image
имеет пример репозитория, чтобы увидеть его сходства
и отличия от gatsby-image
рядом.
Он находится по адресу: gbitest
Чтобы использовать его с gatsby-background-image-es5,
измените там зависимость.
Содействие
Приглашаем всех внести свой вклад в этот небольшой пакет!
Документы, Обзоры, Тестирование, Код — все, что вы хотите добавить, просто сделайте это :).Так что взгляните на наш ДОПОЛНИТЕЛЬНЫЙ файл и попробуйте.
Заранее спасибо!
TODO
Если вы сочтете нужным, сообщите мне, открыв выпуск или PR:)!
Почему я считаю, что в Gatsby.js есть лучшие инструменты JavaScript для оптимизации изображений — и как их использовать
Брет Кэмерон
Руководство для начинающих по использованию Gatsby.js и GraphQL для оптимизации изображений
Изображение предоставлено: Райан Сирл / UnsplashКак и многие разработчики, моим первым полностью функционирующим сайтом был блог.Я создал его как настраиваемую тему WordPress, и у меня были грандиозные планы относительно домашней страницы, заполненной высококачественными изображениями статей.
Когда сайт был запущен в первый раз, я ввел URL-адрес и… ждал. Это был серьезный анти-кульминационный момент. Прошло слишком много секунд, пока образы медленно оживали.
До этого момента я не производил значительных оптимизаций изображений. Это был важный урок для относительно нового разработчика, и я начал изучать, как сделать как можно больше оптимизаций.Но оптимизация размеров изображения, настройка разных размеров и разрешений каждого изображения для разных дисплеев и настройка отложенной загрузки с хорошей анимацией «постепенного появления» — это большая работа. Попытки решить их вручную были хороши для обучения, но определенно не то, что я хотел делать снова и снова.
К счастью, есть способ получше. Теперь, как разработчик React, я столкнулся с множеством различных систем и модулей обработки изображений, которые упрощают оптимизацию изображений.Но — пока — ничто из встреченных мной не может сравниться с Gatsby.js.
Используя несколько компонентов Gatsby, вы можете легко оптимизировать доставку изображений — в комплекте с «размытой» анимацией или отслеживаемыми заполнителями SVG — плюс дополнительные оптимизации, такие как использование форматов изображений WebP для браузеров, которые их поддерживают. Они загружаются быстро и выглядят действительно гладко при идеальном разрешении.
Мощное сочетание: React, GraphQL и GatsbyПредставляем Gatsby Image Optimization
Gatsby.js упрощает оптимизацию изображений, за исключением одного: если вы никогда раньше не использовали GraphQL, этот процесс тоже может занять некоторое время. Мне потребовалось несколько усилий, чтобы разобраться с изображением Gatsby, в основном из-за того, что я не прыгнул в GraphQL.
Я также чувствовал, что многие учебные пособия (включая официальные) не оправдывают ожиданий, когда дело доходит до объяснения того, как работать с более чем одним изображением. Официальный стартовый пакет Gatsby содержит компонент изображения, и он будет работать нормально, если на вашем сайте будет только несколько изображений.Но что, если бы их были десятки или сотни?
Вот на что отвечает эта статья. В нем мы рассмотрим пошаговый подход к объединению возможностей Gatsby и GraphQL для оптимизации изображений. Мы начнем с рендеринга трех изображений, а в последнем разделе я расскажу о нескольких способах увеличения.
Пошаговое руководство
Шаг 1. Установка зависимостей
Gatsby имеет два основных компонента образа: gatsby-image
и gatsby-background-image
.
Чтобы использовать любой из них, вам потребуется несколько дополнительных компонентов для вашего проекта Gatsby. (Если вы новичок в Гэтсби, вы можете узнать, как начать проект здесь). После того, как ваш проект Gatsby настроен, вы можете установить все необходимые плагины, связанные с изображениями, через npm, набрав:
npm i gatsby-image gatsby-background-image gatsby-source-filesystem gatsby-plugin-sharp gatsby-transformer -sharp -s
Это может показаться много, но каждый плагин более или менее выполняет одну задачу:
-
gatsby-image
используется для отображения изображений -
gatsby-background-image
is используется для отображения фоновых изображений -
gatsby-source-filesystem
позволяет запрашивать файлы в файловой системе вашего сайта с помощью GraphQL -
gatsby-transformer-sharp
— это плагин, который позволяет создавать несколько изображений нужных размеров и разрешений через запросы - и
gatsby-plugin-sharp
соединяет плагины Sharp и Gatsby вместе
Шаг 2: Настройка Gatsby
После установки вы должны убедиться, что некоторые из вышеперечисленных pl ugins присутствуют в вашем gatsby-config .js
в корневом каталоге вашего веб-приложения.
В приведенном ниже примере я определил два каталога, изображений
и страниц
, в которых я хотел бы иметь возможность запрашивать свою файловую систему. В этой статье мы сосредоточимся только на изображениях
, но обычно также запрашивают ваш каталог страниц
!
module.exports = {плагины: [`gatsby-transformer-sharp`,` gatsby-plugin-sharp`, {resolve: `gatsby-source-filesystem`, параметры: {name:` images`, path: ` $ {__ dirname} / src / images`,},}, {resolve: `gatsby-source-filesystem`, параметры: {name:` pages`, путь: `$ {__ dirname} / src / pages`,},} ,],}
Если вы привыкли устанавливать и импортировать пакеты npm, это может показаться довольно простым.На этом этапе все становится немного необычнее.
Шаг 3A: Тестовые запросы в GraphQL
Теперь мы собираемся получить доступ к интерфейсу GraphiQL. По умолчанию приложение Gatsby запускается на localhost: 8000
. Мы можем получить доступ к интерфейсу GraphiQL, добавив / ___ graphql
в конец домена (это 3 символа подчеркивания подряд).
Здесь мы можем опробовать различные запросы к нашим данным перед их фиксацией в нашем коде. Это сэкономит нам время на отладку позже, потому что мы знаем, что запросы собирают те данные, которые нам нужны.
Во-первых, давайте проверим, что наш файл gatsby-config.js
работает правильно. Введите следующий код в интерфейс GraphiQL и нажмите значок воспроизведения (или CTRL / CMD
+ ENTER
):
{allDirectory {Edge {node {name}}}}
У меня также есть «значки» подкаталог в моей папке изображений, так что он тоже был возвращен.Если вы видите что-то похожее на изображение выше, значит, оно работает. Теперь давайте запросим содержимое нашей папки изображений, набрав:
{allFile (filter: {sourceInstanceName: {eq: "images"}}) {Edge {node {relativePath childImageSharp {id}}}}}
Если свойство childImageSharp возвращает идентификатор, это означает, что мы можем использовать для него оптимизацию изображения Gatsby.Это вернет null
для файлов, таких как SVG, потому что они не могут быть дополнительно оптимизированы, но он должен давать вам строку для каждых jpg
и png
.
Шаг 3B: Подготовьте наши конкретные запросы изображений
Теперь давайте возьмем несколько конкретных изображений. При выполнении запросов к изображению вам необходимо сообщить Гэтсби, является ли это изображение фиксированным
или жидким
. фиксированных изображений
имеют известные размеры, и для их оптимизации требуется меньше процессов.Жидкость Изображения
имеют размеры, которые изменяются в зависимости от размера области просмотра и других контекстных факторов.
Я создаю портфолио, и у меня есть изображения для каждой из моих услуг. Допустим, мы хотим взять три изображения с именами webdev.jpg
, design.jpg
и writing.jpg
, и мы знаем, что их размеры составляют , жидкость
.
{webdev: file (relativePath: {eq: "webdev.jpg"}) {childImageSharp {fluid (maxWidth: 1600) {base64}}} design: file (relativePath: {eq: "design.jpg "}) {childImageSharp {fluid (maxWidth: 1600) {base64}}} writing: file (relativePath: {eq:" writing.jpg "}) {childImageSharp {fluid (maxWidth: 1600) {base64}}}}
Обратите внимание, что термины перед каждым двоеточием могут быть чем угодно. Здесь имеет смысл придерживаться имени файла. Мы также устанавливаем свойство max-width равным 1600 пикселей, поэтому Гэтсби знает, что это не обязательно. подготовить версии каждого изображения большего размера, чем это
base64
— это свойство, которое содержит крошечную размытую версию нашего изображения, которая загружается почти сразу, а затем плавно заменяется версией с высоким разрешением.Если наш запрос возвращает значение base64
, значит, все работает. Мы готовы включить этот запрос в наш код!
Шаг 4. Импорт компонентов и визуализация
Перейдите к любому компоненту, в котором вы хотите отображать изображения. Во-первых, вам нужно импортировать компоненты StaticQuery
и graphql
из "gatsby"
в верхней части файла, а также Img
или BackgroundImage
, например:
import {StaticQuery, graphql } из «gatsby» импортировать Img из «gatsby-image» импортировать BackgroundImage из «gatsby-background-image»
Наш компонент React должен возвращать тег
является свойством запроса
и
рендеринг собственности.
(<> {/ * здесь наш JSX * /} >)} />
Мы можем вставить наши запросы изображений выше в свойство query
, но на этот раз мы заменим base64
на фрагмент, который мы хотим визуализировать. В этом случае мы будем использовать ... GatsbyImageSharpFluid
.
Но, допустим, позже мы решили, что нам нужен эффект отслеживаемого SVG, и что мы хотим использовать формат WebP, где это возможно.Мы можем просто заменить наш фрагмент на ... GatsbyImageSharpFluid_withWebp_tracedSVG
.
Наш код теперь должен выглядеть так:
(<> {/ * сюда идет наш JSX * /} >)} / >
Наконец, нам просто нужно включить изображение в наш JSX.
Компонент Img
принимает свойство fluid
(где вы помещаете ссылку на данные запроса) и свойство alt
.
< Img fluid = {data.webdev.childImageSharp.fluid} alt = "" />
Компонент BackgroundImage
принимает свойство tag
(если оставить поле пустым, он отображает div
), свойство fluid
и свойство backgroundColor
.
Объединяем все вместе
Вот полный компонент Gatsby, который берет три изображения для нашей папки изображений
и отображает их:
Стратегии для Увеличение масштаба
Итак, как мы можем заставить это работать, когда нам нужно обработать большее количество изображений? Вот несколько идей для начала.
Цикл по папке
Допустим, у нас есть список значков, которые мы хотели отобразить. Вместо того, чтобы запрашивать их все по отдельности, мы могли бы поместить их в отдельный каталог и использовать цикл для перебора результатов запроса. Например, мы можем запросить весь каталог значков:
{icons: allFile (filter: {relativeDirectory: {eq: "icons"}}) {Edge {node {name relativePath childImageSharp {id}}}}}
Тогда, если мы зарегистрируем данных.icons.edges
в консоль, мы можем увидеть массив элементов, по которым мы могли бы выполнить итерацию. Вот пример того, как это может выглядеть.
data.icons.edges.map (item => ())
Передача динамических данных
Один из важных методов - добавление динамических переменных в наши запросы. В GraphQL для этого есть специальный синтаксис.
Для этого дадим нашему запросу имя findFile
, используя ключевое слово query
.Затем в скобках мы можем назвать любое количество новых переменных.
В GraphQL всем переменным должно предшествовать $
. После имени переменной мы используем двоеточие, а затем указываем тип: здесь String
. Наконец, мы можем использовать =
для передачи резервного значения по умолчанию, и это позволит нам протестировать запрос в GraphiQL.
query findFile ($ relativePath: String = "webdev.jpg") {file (relativePath: {eq: $ relativePath}) {id relativePath publicURL}}
К этим запросам можно добавить дополнительную логику, используя директивы @include (if: Boolean)
и @skip (if: Boolean)
.
Переменные GraphQL особенно полезны, если мы хотим, чтобы наши пользователи могли динамически фильтровать данные. Но они также пригодятся по любой причине, по которой мы можем захотеть отделить определенные данные от нашего фактического запроса, например, если нам нужно сначала каким-то образом изменить их.
Создание пользовательских фрагментов
Помните ... GatsbyImageSharpFluid
выше? Это фрагмент, который по сути является сокращением для многоразового набора полей запроса. Мы также можем определять наши собственные фрагменты.
Даже если мы вызываем только три поля запроса - id
, relativePath
и publicURL
- это может добавить к многим строкам кода дополнительный код, если мы будем использовать их повторно. Вместо этого мы могли бы определить настраиваемый фрагмент, позволяющий повторно использовать поля запроса. Вместо того, чтобы повторять описание того, как это сделать, в официальной документации, я рекомендую вам проверить это.
Заключение
В целом, я надеюсь, что эта статья открыла вам глаза на мощные инструменты оптимизации изображений, которые поставляются с Gatsby.js и дал вам несколько идей о том, как применять их в более масштабных проектах.
Чтобы полностью понять и максимально использовать эти мощные инструменты, вам необходимо разобраться как с React, так и с GraphQL. Когда я впервые начал использовать Gatsby, я пропустил GraphQL, не понимая, что его понимание - по крайней мере, на базовом уровне - необходимо для максимально эффективного использования возможностей Gatsby по оптимизации изображений.
gatsby-background-image не отображается: gatsbyjs
Привет снова!
Прежде чем я забегу слишком далеко, репо находится здесь: https: // github.com / McC4b3r / mckeevineyard, а часть репо, с которой у меня возникают проблемы, - это раздел HomeContent в каталоге компонентов.
У меня возникла новая проблема с моим проектом gatsby. Идея достаточно проста: я пытаюсь использовать gatsby-background-image с Gatsby v3, который также использует gbimage-bridge. Я следил за учебником на YouTube, который хорошо объясняет вещи, и завершил его без ошибок из gatsby или в консоли Chrome. Несмотря на это, мое фоновое изображение просто не отображается.
Я хочу использовать это фоновое изображение таким образом, чтобы я мог складывать контент поверх него, имея при этом все преимущества обработки изображений Gatsby.
FWIW Я также использую ChakraUI, но в его нынешнем виде это не имеет отношения к этому аспекту проекта. Мой запрос graphql действительно извлекает данные в графическом интерфейсе, и снова нет ошибки, о которой можно было бы говорить, когда я смотрю на свой терминал или консоль Chrome. Кто-нибудь работал с gatsby-plugin-image вместе с gbimage-bridge для установки фонового изображения? Благодарность!
-edit-: Посмотрев на chrome devtools, опора изображения в моем компоненте BgImage говорит undefined.Это странно, потому что у меня есть рабочий запрос graphql через графический интерфейс, который я копирую / вставляю в свой файл. Похоже, здесь виноват запрос, но я не могу найти отключение.
запрос находится здесь:
const {heroImage} = useStaticQuery (graphql`
запрос {
heroImage: file (relativePath: {eq: "DSC_0499.JPG"}) {
childrenImageSharp {
gatsbyImageData (
ширина: 2000,
качество: 50,
webpOptions: {quality: 70})
}
}
}
`
)
-edit2-: разрешено неопределенное изображение! Мой мозг работает гладко, и я выбрал childrenImageSharp вместо childImageSharp, так как мне нужен только один рисунок.Изображение все еще не отображается, но, по крайней мере, свойство изображения отображается в инструментах разработки реакции
-edit3-: resolved! закончился удалением ненужного плагина в моем gatsby-config, он перезапустился, и изображение появилось. все хорошо.
Обучение Великому Гэтсби: история создания
Обучение Великий Гэтсби может быть увлекательным и увлекательным. Студенты исследуют совершенно новую эру (хлопушки! Джаз! Speakeasies!), Продолжая при этом находить современные связи. Однако, чтобы в полной мере ощутить влияние этого американского классического произведения, учащимся необходимо поместить его в исторический контекст.
Контекст здания: послевоенная эпохаПеред тем, как преподавать Великий Гэтсби и причуды 1920-х годов, вы должны поделиться с учащимися контекстом американского духа сразу после мировой войны. И. в 1917 году мы пошатнулись! В зависимости от того, как ваша школа устанавливает ваш учебный план по истории, учащиеся могут быть уже знакомы с этим. Активация предшествующих знаний создает мост между их уроком истории и вашим новым отрядом.
Мозговой штурм с четырьмя угламиРазделите учащихся на четыре группы. Задайте каждой группе один из следующих вопросов.
- С какими трудностями могут столкнуться солдаты, возвращающиеся домой с войны?
- Как изменилась жизнь в Америке, когда автомобиль стал широко доступным?
- Какой была жизнь женщин и семей солдат во время Первой мировой войны?
- Какие возможности и проблемы были у афроамериканцев после Первой мировой войны?
Цель состоит в том, чтобы получить возможные ответы для представления другим студентам.На самом деле нет «неправильных» ответов - ученики делятся предыдущими знаниями в групповой обстановке. Все студенты должны записывать заметки из своих обсуждений, потому что все они будут послами в других группах. (3-5 минут)
Теперь разделите студентов так, чтобы в новые группы входил хотя бы один член от каждой дискуссионной группы. Студенты должны делиться своими идеями со своими новыми группами и создавать новые. (5-7 минут)
Мозговой штурм позволяет сформировать совместные знания, не выделяя учащихся за то, чего они еще не знают! Вы можете продолжить это обсуждение внимательным чтением . Он обобщает послевоенные настроения и является отличной отправной точкой для дальнейших исследований.
Если вы хотите получить еще более подробный урок перед тем, как преподавать The Great Gatsby , посмотрите мой Introduction to the Roaring Twenties Escape Room .
Великая миграция и Гарлемское ВозрождениеВеликая миграция и Гарлемское Возрождение - это два движения (одно географическое, одно художественное), которые сформировали американское мышление в течение 1920-х годов.Оба повлияли на развитие культуры и гражданских прав. Несмотря на то, что эти темы не очевидны в The Great Gatsby , они имеют решающее значение для понимания эпохи.
«Goin’ North » - удивительный проект Западно-Честерского университета. Через устные рассказы филадельфийцы делятся своим опытом во время Великого переселения народов. «В движении: опыт афроамериканской миграции» - еще один отличный сборник. Составленный Центром исследований черной культуры им. Шомбурга, он дает богатый взгляд на влияние Великой миграции.
Я уже писал о «Преподавание Гарлемского Возрождения» раньше, так что обязательно проверьте это. Два видео, которыми я люблю делиться со студентами: Лэнгстон Хьюз, читающий свое стихотворение «Усталый блюз» и «Визуализация джазовых сцен Гарлемского Возрождения» . Если вы ищете первоисточники, вы не ошибетесь с оцифрованными архивами THE CRISIS: Magazine .
Я использовал эти и другие ресурсы для создания своего «Введение в квест Harlem Renaissance Escape Room »!
Введение запретаПеред обучением Великий Гэтсби, ввести запрет.Этот закон оказал огромное влияние на американскую культуру 20-х годов! Это то, как Гэтсби зарабатывает деньги, и в основном подчеркивает весь дух времени, раскрытый в книге.
Эти пять ресурсов предоставляют краткий обзор Запрета:
«Speakeasies, Flappers, and Red Hot Jazz: The Music of the Prohibited», из Джазовой программы Стэнфордского университета.
Джозефин Бейкер исполняет Чарльстон. в 1925 году с музыкой оркестра Ишема Джонса (видео)
«Хлопковый клуб Гарлема» из BlackPast.org Blog
Дюк Эллингтон исполняет «Bugle Call Rag» с танцорами Cotton Club Бесси Дадли и Флоренс Хилл (видео)
«Запрет» с History.com
Текст песни эпохи запрета . Эта игра похожа на квест, но намного короче. Это отличная подготовка к тесту на основе содержания и отличное введение перед преподаванием The Great Gatsby.
Освобождение женщинОдна из основных проблем в Великий Гэтсби - это то, как переопределяются и видоизменяются роли женщин.Решите, как это контекстуализировать. Хотите сделать акцент на инновациях и достижениях женщин? Музыка и мода? Политика? У вас так много вариантов!
Прежде чем говорить о 20-х годах, я возвращаюсь к послевоенной эпохе и делюсь временной шкалой «Что на самом деле Первая мировая война сделала для женщин?» от BBC. Это помогает показать студентам, как война изменила климат для женщин в Соединенных Штатах.
Помимо джаза, я представляю блюз и профиль Ма Рейни.Отличная статья - «Странная черная женщина, которая заново изобрела блюз» из AtlasObscura. В нем подробно рассказывается о жизни и достижениях Ма Рейни. Я сосредотачиваюсь на ней, потому что она оказала огромное влияние на будущих исполнителей и была одной из первых квир-икон. Исполнители от Бесси Смит до Бейонсе называют ее образцом для подражания! В своей песне «Prove It On Me Blues» Ма Рейни ссылается на свою сексуальность и отказ подчиняться гендерным нормам. Она говорит: «Вчера вечером вышла с толпой моих друзей. Должно быть, это были женщины, потому что я не люблю мужчин» и «Это правда, что я ношу воротник и галстук».
Вы можете поделиться статьей «Что Маргарет Сэнджер на самом деле сказала о евгенике и расе» , написанной Дженнифер Латсон . Sanger - сложная фигура. Люди до сих пор расходятся во мнениях относительно ее взглядов и работ. Она выступала за широкий доступ к безопасным противозачаточным средствам и позже основала компанию Planned Parenthood. Это было огромным толчком к освобождению женщин. Хотя это изменило жизнь многих американских женщин, взгляды и убеждения Сэнгер политически и этически противоречивы.Среди прочего, Сэнгер поддерживал евгенику, веру в то, что общества должны применять селекционное разведение для совершенствования человеческого рода. Она выступала за принудительную стерилизацию афроамериканцев и людей с ограниченными возможностями. Таким образом, несмотря на то, что она способствовала освобождению женщин, ее усилия отдавали приоритет белым здоровым женщинам. Эта «горячая» тема требует тщательной подготовки, но требует обстоятельного обсуждения.
Преподавание Великий ГэтсбиСамая большая цель обучения Великий Гэтсби и ревущие двадцатые - это иллюстрация неравного доступа к американской мечте.По этой причине сильный исторический контекст может подготовить ваших учеников к разговорам, которые вы будете вести во время романа.
Какие еще ресурсы вам нравятся для создания фона до этого романа? Напишите в комментариях!
Удачного обучения!
В поисках фона «Гэтсби» в Коннектикуте, Нот Лонг-Айленд
«Мне сказали, что снимают документальный фильм о жизни Фицджеральда в Вестпорте, и я подумал:« Боже мой, хм, что будет дальше? Первая поездка Зельды по магазинам в Macy's? »- цитируется в книге Морин Корриган, профессор Джорджтаунского университета.«Какую минуту мы собираемся ехать?» На этот вопрос она могла бы ответить, потому что она знает пейзаж Геральд-сквер почти так же хорошо, как пейзаж «Гэтсби». Когда-то она работала в Macy’s.
Г-жа Корриган сказала в интервью, что в «Гэтсби» было «как минимум три пейзажа, накладываемых друг на друга». По ее словам, Сент-Пол, Миннесота, где вырос Фицджеральд, был одним из них. Вестпорт был другим.
«Но тогда на Лонг-Айленде обязательно есть Восточное Яйцо и Вест-Эгг», - сказала она.«Он писал это в неотапливаемой комнате над гаражом» в доме, который они снимали в Грейт-Нек.
Потом был Северный бульвар и дорога через Куинс. «Это то, чего они не получают, настаивая на том, что Вестпорт превосходит все», - сказала она.
И они настаивают. Фицджеральд описал место на пути к Манхэттену, «где пепел, как пшеница, превращается в гряды, холмы и гротескные сады». Долгое время считалось, что он вспомнил, где был сброшен и сожжен бруклинский мусор.Роберт Мозес, комиссар по паркам, который на протяжении многих поколений формировал физический и политический ландшафт Нью-Йорка, жаловался на «облако дыма днем и огненный столб ночью» и требовал земли для Гранд Сентрал Бульвар и Всемирной выставки 1939 года. .
Но мистер Уэбб сказал, что в Вестпорте были кучи пепла. Не говоря уже о том, что Фицджеральд упомянул их на той же странице, что и рекламный щит доктора Т. Дж. Эклберга, помещенный там с огромными глазами и всем остальным, «чтобы откормить свою практику в районе Квинс.И поездка из Вестпорта в Манхэттен не прошла бы Фицджеральд через Куинс. Поездка от Грейт-Нек до Манхэттена могла бы.
«В« Гэтсби »он ссылается и путает путешествие из Лонг-Айленда в Нью-Йорк с Вестпортом в Нью-Йорк», - сказал г-н Уэбб. «Он пил все эти годы, - когда он вручил рукопись, - поэтому, когда он начинает думать, что написать, он думает о Вестпорте».
Кто такой Джордж Уилсон в «Великом Гэтсби»? - Анализ характера - Видео и стенограмма урока
Встреча с Джорджем
Мы встречаемся с Джорджем Уилсоном во второй главе сериала Великий Гэтсби .По пути в Нью-Йорк Ник Каррауэй и Том Бьюкенен останавливаются в гараже Уилсона, чтобы попросить Миртл присоединиться к ним. Первое появление Уилсона не впечатляет. Во-первых, Уилсон владеет заправочной станцией и гаражом в пустынном районе между Эггс и Нью-Йорком, место, которое Ник Каррауэй описывает как «долину пепла».
Внутри гаража: «Интерьер был неблагополучным и голым», качество, которое также отражается на владельце. По словам Каррауэя, «Он [Джордж Уилсон] был блондином, бездуховным, анемичным и слегка красивым.«Уилсон явно избитый человек, увязший в своем плачевном финансовом положении:« Когда он увидел нас [Каррауэй и Бьюкенен], в его голубых глазах вспыхнул влажный проблеск надежды ».
Внешний вид и поведение Уилсона в дальнейшем подчеркивают как Том Бьюкенен, так и его жена Миртл. Когда Том Бьюкенен входит в гараж, он берет ситуацию под контроль. Он явно ответственный человек, обладающий властью. Между тем Уилсон не уверен в себе и старается угодить своим гостям.Хотя Каррауэй не описывает Мирт как красавицу, он объясняет читателю, что она движется «чувственно» и имеет вид «жизненной силы». Для сравнения, Джорджу Уилсону не хватает той мощной жизненной силы, которая, кажется, есть у его жены.
Второе появление Джорджа Уилсона
После встречи с Джорджем Уилсоном его персонаж, кажется, просто исчезает из истории. В конце концов, что действительно нужно было помнить? Что на самом деле мог добавить в историю такой скучный, бесхарактерный и жалкий персонаж?
Персонаж Джорджа Уилсона становится релевантным для The Great Gatsby в главе 7, когда Ник Каррауэй, Джей Гэтсби, Дейзи и Том Бьюкенен и Джордан Бейкер направляются в город жарким летним днем.За рулем машины Гэтсби Ник, Том и Джордан останавливаются на заправке Уилсона только для того, чтобы обнаружить, что с ним что-то явно не в порядке. Уилсон говорит им: «Я болен ... Я болел весь день». Рассказчик, Каррауэй, понимает, что «Он, Уилсон, обнаружил, что Миртл живет некоей жизнью отдельно от него, в другом мире, и потрясение сделало его физически больным». В своем безмерном горе после открытия Джордж Уилсон решает встать и перевезти свою жену куда-нибудь на запад, подальше от ее тайного любовника.
В тот же день группа из пяти человек выезжает из Нью-Йорка, на этот раз на разных машинах. Дейзи Бьюкенен, управляя автомобилем Гэтсби, случайно попадает в Миртл, убивая ее при ударе. Когда Ник, Том и Джордан прибывают на место происшествия, они понимают, что произошло. Уилсон явно вне себя, но в его голове начинает формироваться идея. Его жену убила желтая машина, та же самая машина, на которой Том ехал ранее в тот день.
После смерти Миртл Джордж Уилсон стал одержимым.Он выслеживает владельца желтой машины и в конечном итоге определяет, что она принадлежит Джею Гэтсби. В качестве своего последнего акта в книге Джордж Уилсон стреляет в Гэтсби, а затем стреляет в себя.
Анализ
Так почему именно Джордж Уилсон имеет значение? С очевидной точки зрения, именно он убивает главного героя - Джея Гэтсби. Несмотря на то, что он редко появлялся на протяжении всего романа, Джордж Уилсон имеет гораздо большее значение, чем номинальная стоимость. Уилсон предлагает читателям резкую встряску реальности.
Мы видим мир глазами Ника Каррауэя. Он не такой богатый, как Гэтсби или Бьюкенен, но он привилегированный человек, который, безусловно, наслаждается роскошными вечеринками и чрезмерным образом жизни своих богатых друзей. Уилсон напоминает читателям, что в то время как Гэтсби в мире устраивают вечеринки и живут без последствий, другие люди живут в гораздо более суровой реальности. Уилсон бедный и безнадежный. Эти качества исходят как от его личности, так и от его внешнего вида.
Важно отметить, что Джордж Уилсон - человек, который верит в Бога.Мы узнаем об этом после смерти Миртл, когда он рассказывает о взаимодействии со своей женой до аварии. Уилсон говорит Миртл, что она, возможно, обманула его, «но она не могла обмануть Бога». Он продолжает: «Бог видит все». Вера Уилсона в Бога привлекает внимание к кажущейся безбожной жизни, которой живет высший класс на протяжении всей книги. Если Бог может увидеть, что делает Миртл, то, несомненно, он сможет увидеть то, что делают Гэтсби, Ник Каррауэй, Бьюкененцы и Джордан Бейкер.
Персонаж также разделяет параллельные опыты с Томом Бьюкененом и Джеем Гэтсби.Прямо перед вторым появлением Уилсона в истории Том только что осознал, что его жена влюблена в Гэтсби. В то же время Уилсон смирялся с любовным романом своей жены с кем-то другим. Уилсон тоже похож на Гэтсби. Оба мужчины любят женщин, которые любят Тома Бьюкенена. В результате их жизни начинают разваливаться.
Краткое содержание урока
В фильме Великий Гэтсби Ф. Скотта Фицджеральда персонаж Джордж Уилсон - заправщик и владелец гаража, живущий в «долине пепла» между Эггсом и Нью-Йорком.Жена Уилсона, Миртл, занимается любовью с Томом Бьюкененом.
Уилсон - человек, потерпевший поражение в своих обстоятельствах. Он бедный и избитый. Персонаж Джорджа Уилсона появляется позже в книге, когда Ник Каррауэй, Том Бьюкенен и Джордан Бейкер останавливаются за бензином. Читатель узнает, что Уилсон обнаружил роман своей жены. Вскоре после этого Миртл убивает Дейзи Бьюкенен во время вождения автомобиля Гэтсби.