\n \n \n \n );\n }\n};',hasDropCap:null,dropCapImage:null,markups:[{__typename:"Markup",type:"STRONG",start:0,end:20,href:null,anchorType:null,userId:null,linkMetadata:null},{__typename:"Markup",type:"STRONG",start:28,end:35,href:null,anchorType:null,userId:null,linkMetadata:null},{__typename:"Markup",type:"STRONG",start:65,end:71,href:null,anchorType:null,userId:null,linkMetadata:null},{__typename:"Markup",type:"STRONG",start:96,end:102,href:null,anchorType:null,userId:null,linkMetadata:null},{__typename:"Markup",type:"STRONG",start:114,end:120,href:null,anchorType:null,userId:null,linkMetadata:null},{__typename:"Markup",type:"STRONG",start:133,end:137,href:null,anchorType:null,userId:null,linkMetadata:null},{__typename:"Markup",type:"STRONG",start:184,end:190,href:null,anchorType:null,userId:null,linkMetadata:null}],codeBlockMetadata:null,iframe:null,mixtapeMetadata:null},"Paragraph:b79e2ac9980a_45":{__typename:"Paragraph",id:"b79e2ac9980a_45",name:"63c7",type:"P",href:null,layout:null,metadata:null,text:"Forcing CSS and other asset types to be private implementation detail of a component, rather than something that is littered throughout your codebase, opens up a whole new level of opportunity for more efficient creation, optimisation and abstraction in our interfaces. Copying-and-pasting markup between pages — if it wasn’t already — should become a thing of the past.",hasDropCap:null,dropCapImage:null,markups:[],codeBlockMetadata:null,iframe:null,mixtapeMetadata:null},"Paragraph:b79e2ac9980a_46":{__typename:"Paragraph",id:"b79e2ac9980a_46",name:"ebd5",type:"P",href:null,layout:null,metadata:null,text:"As a bonus, taking this methodology to its logical conclusion will naturally result in a process that is much more amenable to style guide driven development. Using libraries like React where the cost of creating a new component is extremely low will quickly reward any efforts to separate display logic into smaller, independently testable units.",hasDropCap:null,dropCapImage:null,markups:[],codeBlockMetadata:null,iframe:null,mixtapeMetadata:null},"Paragraph:b79e2ac9980a_47":{__typename:"Paragraph",id:"b79e2ac9980a_47",name:"6c57",type:"P",href:null,layout:null,metadata:null,text:"Working towards the creation of a living style guide, where any visual updates are immediately propagated to production, requires another layer of discipline — ensuring that your low level components are isolated and strictly implemented as pure, completely stateless components — but that’s a story for another time.",hasDropCap:null,dropCapImage:null,markups:[],codeBlockMetadata:null,iframe:null,mixtapeMetadata:null},"Paragraph:b79e2ac9980a_48":{__typename:"Paragraph",id:"b79e2ac9980a_48",name:"de14",type:"P",href:null,layout:null,metadata:null,text:"Note: I’m sure many of you are wondering why I don’t give up on CSS entirely and use JavaScript for styles instead. This approach is gaining in popularity in the React community and eliminates the problem of global selectors that BEM tries to solve. The current set of tooling for this approach is yet to properly support progressive enhancement (support for media queries, pseudo classes and sibling selectors is y, at best), but this is an area that is showing a lot of promise.",hasDropCap:null,dropCapImage:null,markups:[{__typename:"Markup",type:"EM",start:0,end:485,href:null,anchorType:null,userId:null,linkMetadata:null}],codeBlockMetadata:null,iframe:null,mixtapeMetadata:null},"CollectionViewerEdge:collectionId:755e30b4b19e-viewerId:lo_f58b7900e702":{__typename:"CollectionViewerEdge",id:"collectionId:755e30b4b19e-viewerId:lo_f58b7900e702",isEditor:!1,isMuting:!1},"UserViewerEdge:userId:d7225e72eea-viewerId:lo_f58b7900e702":{__typename:"UserViewerEdge",id:"userId:d7225e72eea-viewerId:lo_f58b7900e702",isMuting:!1},"ImageMetadata:1*CVbiK_8cE1qVrsV5HxT_4w.png":{__typename:"ImageMetadata",id:"1*CVbiK_8cE1qVrsV5HxT_4w.png",originalWidth:616,originalHeight:238},"PostViewerEdge:postId:d7f99fcab52b-viewerId:lo_f58b7900e702":{__typename:"PostViewerEdge",shouldIndexPostForExternalSearch:!0,id:"postId:d7f99fcab52b-viewerId:lo_f58b7900e702"},"Tag:javascript":{__typename:"Tag",id:"javascript",displayTitle:"JavaScript",normalizedTagSlug:"javascript"},"Tag:css":{__typename:"Tag",id:"css",displayTitle:"CSS",normalizedTagSlug:"css"},"Tag:front-end-development":{__typename:"Tag",id:"front-end-development",displayTitle:"Front End Development",normalizedTagSlug:"front-end-development"},"Tag:engineering":{__typename:"Tag",id:"engineering",displayTitle:"Engineering",normalizedTagSlug:"engineering"},"Post:d7f99fcab52b":{__typename:"Post",id:"d7f99fcab52b",collection:{__ref:"Collection:755e30b4b19e"},'content({"postMeteringOptions":{"referrer":""}})':{__typename:"PostContent",isLockedPreviewOnly:!1,bodyModel:{__typename:"RichText",sections:[{__typename:"Section",name:"16bb",startIndex:0,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"f797",startIndex:5,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"33a2",startIndex:15,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"dfc6",startIndex:19,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"2882",startIndex:33,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"077e",startIndex:39,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"418c",startIndex:45,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null},{__typename:"Section",name:"2e09",startIndex:48,textLayout:null,imageLayout:null,backgroundImage:null,videoLayout:null,backgroundVideo:null}],paragraphs:[{__ref:"Paragraph:b79e2ac9980a_0"},{__ref:"Paragraph:b79e2ac9980a_1"},{__ref:"Paragraph:b79e2ac9980a_2"},{__ref:"Paragraph:b79e2ac9980a_3"},{__ref:"Paragraph:b79e2ac9980a_4"},{__ref:"Paragraph:b79e2ac9980a_5"},{__ref:"Paragraph:b79e2ac9980a_6"},{__ref:"Paragraph:b79e2ac9980a_7"},{__ref:"Paragraph:b79e2ac9980a_8"},{__ref:"Paragraph:b79e2ac9980a_9"},{__ref:"Paragraph:b79e2ac9980a_10"},{__ref:"Paragraph:b79e2ac9980a_11"},{__ref:"Paragraph:b79e2ac9980a_12"},{__ref:"Paragraph:b79e2ac9980a_13"},{__ref:"Paragraph:b79e2ac9980a_14"},{__ref:"Paragraph:b79e2ac9980a_15"},{__ref:"Paragraph:b79e2ac9980a_16"},{__ref:"Paragraph:b79e2ac9980a_17"},{__ref:"Paragraph:b79e2ac9980a_18"},{__ref:"Paragraph:b79e2ac9980a_19"},{__ref:"Paragraph:b79e2ac9980a_20"},{__ref:"Paragraph:b79e2ac9980a_21"},{__ref:"Paragraph:b79e2ac9980a_22"},{__ref:"Paragraph:b79e2ac9980a_23"},{__ref:"Paragraph:b79e2ac9980a_24"},{__ref:"Paragraph:b79e2ac9980a_25"},{__ref:"Paragraph:b79e2ac9980a_26"},{__ref:"Paragraph:b79e2ac9980a_27"},{__ref:"Paragraph:b79e2ac9980a_28"},{__ref:"Paragraph:b79e2ac9980a_29"},{__ref:"Paragraph:b79e2ac9980a_30"},{__ref:"Paragraph:b79e2ac9980a_31"},{__ref:"Paragraph:b79e2ac9980a_32"},{__ref:"Paragraph:b79e2ac9980a_33"},{__ref:"Paragraph:b79e2ac9980a_34"},{__ref:"Paragraph:b79e2ac9980a_35"},{__ref:"Paragraph:b79e2ac9980a_36"},{__ref:"Paragraph:b79e2ac9980a_37"},{__ref:"Paragraph:b79e2ac9980a_38"},{__ref:"Paragraph:b79e2ac9980a_39"},{__ref:"Paragraph:b79e2ac9980a_40"},{__ref:"Paragraph:b79e2ac9980a_41"},{__ref:"Paragraph:b79e2ac9980a_42"},{__ref:"Paragraph:b79e2ac9980a_43"},{__ref:"Paragraph:b79e2ac9980a_44"},{__ref:"Paragraph:b79e2ac9980a_45"},{__ref:"Paragraph:b79e2ac9980a_46"},{__ref:"Paragraph:b79e2ac9980a_47"},{__ref:"Paragraph:b79e2ac9980a_48"}]},validatedShareKey:"",shareKeyCreator:null},creator:{__ref:"User:d7225e72eea"},inResponseToEntityType:null,isLocked:!1,isMarkedPaywallOnly:!1,lockedSource:"LOCKED_POST_SOURCE_NONE",mediumUrl:"https://medium.com/seek-blog/block-element-modifying-your-javascript-components-d7f99fcab52b",primaryTopic:null,topics:[{__typename:"Topic",slug:"javascript"}],isLimitedState:!1,isPublished:!0,allowResponses:!0,responsesLocked:!1,visibility:"PUBLIC",latestPublishedVersion:"b79e2ac9980a",postResponses:{__typename:"PostResponses",count:3},responseDistribution:"NOT_DISTRIBUTED",clapCount:1504,title:"Block, Element, Modifying Your JavaScript Components",isSeries:!1,sequence:null,uniqueSlug:"block-element-modifying-your-javascript-components-d7f99fcab52b",socialTitle:"",socialDek:"",canonicalUrl:"",metaDescription:"",latestPublishedAt:1506469363401,readingTime:5.441509433962264,previewContent:{__typename:"PreviewContent",subtitle:"BEM was a transformative methodology in the world of CSS, but — when limited to the style sheet — it can only take us so far."},previewImage:{__ref:"ImageMetadata:1*-PGpvKD0DuA_abyeDlX4Fw.jpeg"},isShortform:!1,seoTitle:"",firstPublishedAt:1430363011646,updatedAt:1528170989759,shortformType:"SHORTFORM_TYPE_LINK",seoDescription:"",viewerEdge:{__ref:"PostViewerEdge:postId:d7f99fcab52b-viewerId:lo_f58b7900e702"},isSuspended:!1,license:"ALL_RIGHTS_RESERVED",tags:[{__ref:"Tag:javascript"},{__ref:"Tag:css"},{__ref:"Tag:front-end-development"},{__ref:"Tag:engineering"}],isFeaturedInPublishedPublication:!1,isNewsletter:!1,statusForCollection:"APPROVED",pendingCollection:null,detectedLanguage:"en",wordCount:1389,layerCake:0}}