A Hands-On Introduction to Modern JavaScript for SEOs

Here are a very powerful modifications.

We first seize in non permanent variables the submitted values for the identify and evaluation utilizing related CSS selectors.

Then, we modify the state of the inner variables utilizing the decision to this.setState.

After these modifications, you possibly can see that submitting critiques works as we deliberate.

We may proceed including extra performance to handle all of the critiques, and so on. however we are going to cease right here so we will transfer to add structured information to the web page.

When I initially positioned the React part script within the HTML HEAD, I’m going this error within the JavaScript Console.

A Hands-On Introduction to Modern JavaScript for SEOs

When I clicked on the error line reported submit_review.js:38, I used to be introduced with the problematic code.

A Hands-On Introduction to Modern JavaScript for SEOs

I suspected the selector wasn’t working, so I set a breakpoint (inexperienced highlighted line 36) and refreshed the web page. This halts the web page rendering on this line and brings up the Chrome JavaScript debugger. I can click on to step by means of the road and mouse over the variable domContainer, and it was null, which suggests there was no worth.

I typed the selector line of code within the JavaScript Console and I received the worth as anticipated. What was taking place right here?

In order to perceive the problem, we want to learn concerning the lifecycle of an HTML web page.

When browser masses a web page it goes by means of totally different phases and never all elements of the web page can be found. Everything is accessible when the web page is absolutely loaded.

I’m executing JavaScript code within the head that’s attempting to discover content material within the BODY, which has but to absolutely load.

So, to repair this difficulty, I merely moved my part script to the underside of the web page. Right earlier than the closing HTML BODY tag.

      <!-- Footer -->


                <div class="row">

                    <div class="col-lg-12">

                        <p>Copyright &copy; Home of the very best truffles, 2018 | 

                            <a href="http://html5-templates.com/" goal="_blank" rel="nofollow">HTML5 Templates</a></p>







               <!-- /.container -->


          <!-- Load our React part. -->

          <script src="http://www.searchenginejournal.com/submit_review.js"></script>




Adding Structured Data to our Recipe Page

Now that we have now a primary recipe web page with a barely functioning button, let’s add some structured information to assist make our web page stand out within the SERPs.

We are going to observe the steps on this codelab.

“Since our sample site is a recipe blog, we’re going to start with recipe structured data. Recipe structured data can provide a rich result that can include rich information, like a description of your recipe, cooking and preparation times, and nutrition information. Your content may also automatically enable a recipe badge for Google Images on mobile devices, voice guidance on the Google Home, and a content action on the Google Assistant.”

Google’s most well-liked format for structured information is JSON-LD. This is sweet as a result of it dramatically simplifies implementation.

We can add all markup in a single place on the web page and keep away from the complication of nesting values.

<script sort="software/ld+json">

"@context": "http://schema.org/",
"@type": "Recipe",
"name": "Party Coffee Cake"


This is our work in progress implementation. We are specifying the web page comprises a recipe for a Party Coffee Cake. This web page comprises all the main points we want to full our implementation.

Please word that we want to specify the sort as “application/ld+json”. By default, browsers assume “application/javascript”. We are additionally specifying schema.org because the markup sort.

A Hands-On Introduction to Modern JavaScript for SEOs

After we add the remaining required properties, we will check them within the Structured Data Testing Tool. We can see all values organized and displayed properly.

However, we will see a warning a few lacking non-compulsory attribute.



The combinationRating discipline is really useful. Please present a worth if obtainable.

We are going to enhance the markup by including a nested Review factor.


Then, we will add the lacking AggregateRating.


            "@type": "AggregateRating",

            "ratingCount": "18",

            "ratingValue": "4"


Finally, we will check the ultimate markup once more within the Structured Data Testing Tool.

A Hands-On Introduction to Modern JavaScript for SEOs

We removed the warning and for those who hit preview you will note the picture I introduced above.

Generate JSON-LD Markup with JavaScript

It is sweet that we produced legitimate markup, however as the info is hardcoded, it gained’t replace the variety of critiques as we add them.

Let’s put our new JavaScript expertise to good use and repair this!

For illustration functions, we are going to merely improve the variety of critiques on the internet web page and the JSON-LD object once we submit a brand new evaluation.

The identical strategy can be utilized to populate the JSON-LD object with information from the web page. However, in apply the info for the JSON-LD object will come from a database, the identical method because the content material for the web page is.

var json_str = `{

    "@context": "http://schema.org/",

    "@type": "Recipe",


    "@type": "Review",

    "reviewRating": ,

// Plus different components


The necessary method right here is that I saved the entire hard-coded JSON-LD code in a JavaScript string variable. I used backticks to deal with a number of strains of textual content.

perform update_ratingCount(ratingCount)

I used JSON.parse to convert the string to an object that makes it simple to reference any factor within the JSON-LD construction.

See how I can navigate nested ranges utilizing dots in jsonld.combinationRating.ratingCount. Then, after I replace the ratingCount worth, I want to convert the thing again to a string for insertion into the web page.

Finally, we want to replace the render() perform of our React part. It ought to carry out the next further steps:

  1. Extract the present variety of critiques
  2. Increase them by one
  3. Update the web page with the elevated critiques
  4. Update the JSON-LD as nicely, however it should change the entire script with the one generated by the perform we created.
    if (this.state.submitted) 

I examined this in Chrome and I can see the values up to date beneath the developer device’s factor tab. It gained’t work with the Structured Data Testing Tool as a result of the modifications are usually not everlasting.

And there you have got it. If you strive these code snippets and the codelab your self, you must have realized sufficient JavaScript to be harmful!

Community Projects & Resources to Learn More

The finest method to be taught programming and JavaScript, specifically, is by practising it. The extra you do it, the higher you get at it.

Don’t get discouraged by the preliminary obstacles, come again to them later with contemporary concepts.

Here are some tutorials to get you warmed up.

  1. JavaScript Tutorial from W3C Schools
  2. The Modern JavaScript Tutorial
  3. CSS Selectors reference from W3C
  4. Getting Started with JavaScript Debugging

This yr began with a lot pleasure round Python, coding, and automation within the website positioning neighborhood.

So many cool initiatives, articles, movies and introduction guides.

I’m so glad that everyone is constructing off the work of one another and making the neighborhood stronger and extra enjoyable day-after-day.

Here are some initiatives that I need to spotlight.

Dan Leibson and gang not solely created a tremendous Lighthouse automation device in Nodejs. They open-sourced it and received it featured by the Google Analytics Twitter account!

Rory Truesdale from Conductor simply began studying Python final yr and put collectively a crazily superior pocket book with so many priceless options. Very spectacular!

Gefen Hermesh created a classy clustering resolution that leverages BERT.

JR Oakes has been coding unbelievable issues. A mini web that received large reward from John Muller and extra just lately a sophisticated key phrase clustering algorithm.

Hülya Çoban put collectively this wonderful pocket book that helps plot Google Trends in Google Data Studio.
This goes to be an thrilling yr for certain.

More Resources:

Image Credits

All screenshots taken by writer, February 2020

Source hyperlink website positioning

Be the first to comment

Leave a Reply

Your email address will not be published.