CINXE.COM
Building a Website with Node.js and Express.js Online Class | LinkedIn Learning, formerly Lynda.com
<!DOCTYPE html> <html lang="en"> <head> <meta name="pageKey" content="d_learning_course_guest"> <!----><!----> <meta name="locale" content="en_US"> <meta id="config" data-app-version="2.0.2217" data-call-tree-id="AAYnj4uO2UgCF7tVRcW4pw==" data-multiproduct-name="learning-guest-frontend" data-service-name="learning-guest-frontend" data-browser-id="2da5da25-ca7f-470f-87b3-6cdbf217313e" data-enable-page-view-heartbeat-tracking data-page-instance="urn:li:page:learning_course_guest;o0f/N0PyQTueJikONqCAqw==" data-disable-jsbeacon-pagekey-suffix="false" data-member-id="0"> <link rel="canonical" href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3"> <!----><!----> <!----> <!----> <!----> <link rel="manifest" href="/homepage-guest/manifest.json" crossorigin="use-credentials"> <!----> <script> function getDfd() {let yFn,nFn;const p=new Promise(function(y, n){yFn=y;nFn=n;});p.resolve=yFn;p.reject=nFn;return p;} window.lazyloader = getDfd(); window.tracking = getDfd(); window.impressionTracking = getDfd(); window.ingraphTracking = getDfd(); window.appDetection = getDfd(); window.pemTracking = getDfd(); </script> <!----> <link rel="icon" href="https://static.licdn.com/aero-v1/sc/h/444zstxv7s91nepfm5et6ofge"> <title>Building a Website with Node.js and Express.js Online Class | LinkedIn Learning, formerly Lynda.com</title> <meta name="robots" content="noarchive, max-image-preview:large"> <meta name="description" content="Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework."> <meta property="og:site_name" content="LinkedIn"> <meta name="twitter:site" content="@LI_Learning"> <meta name="twitter:card" content="summary"> <meta name="litmsProfileName" content="learning-guest-frontend"> <meta property="og:title" content="Building a Website with Node.js and Express.js Online Class | LinkedIn Learning, formerly Lynda.com"> <meta name="twitter:title" content="Building a Website with Node.js and Express.js Online Class | LinkedIn Learning, formerly Lynda.com"> <meta property="og:description" content="Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework."> <meta name="twitter:description" content="Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework."> <meta property="og:image" content="https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY"> <meta name="twitter:image" content="https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY"> <!----> <meta property="og:url" content="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3"> <meta property="og:type" content="website"> <meta name="clientSideIngraphs" content="1" data-gauge-metric-endpoint="/learning-guest/api/ingraphs/gauge" data-counter-metric-endpoint="/learning-guest/api/ingraphs/counter"> <link rel="stylesheet" href="https://static.licdn.com/aero-v1/sc/h/ccepec31u8riooiwchbtig8m0"> <script type="application/ld+json"> {"@context":"http://schema.org/","@type":"Course","provider":{"@type":"Organization","name":"LinkedIn Learning","url":"https://www.linkedin.com/learning/"},"publisher":{"@type":"Organization","name":"LinkedIn Learning","url":"https://www.linkedin.com/learning/"},"hasCourseInstance":{"@type":"CourseInstance","courseMode":"online","courseWorkload":"PT3H10M42S","instructor":[{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"}]},"inLanguage":"en","name":"Building a Website with Node.js and Express.js","offers":[{"@type":"Offer","category":"Subscription"},{"@type":"Offer","category":"Paid","price":"249.99","priceCurrency":"HKD"}],"description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","image":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","creator":[{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"}],"author":[{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"}],"dateCreated":"2020-01-10","datePublished":"2020-01-10","thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","timeRequired":"PT3H10M42S","totalHistoricalEnrollment":43075,"url":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3","about":[{"@type":"Thing","url":"https://www.linkedin.com/learning/topics/express-js","name":"Express.js"},{"@type":"Thing","url":"https://www.linkedin.com/learning/topics/node-js","name":"Node.js"}],"hasPart":[[{"@type":"VideoObject","name":"Dynamic websites with Node and Express - Introduction","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT50S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/dynamic-websites-with-node-and-express"},{"@type":"VideoObject","name":"What you should know - Introduction","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT1M5S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/what-you-should-know"},{"@type":"VideoObject","name":"Using the exercise files and GitHub - Introduction","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT3M40S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/using-the-exercise-files-and-github-24696875"},{"@type":"VideoObject","name":"Setting up your development environment - Introduction","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT1M36S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/setting-up-your-development-environment"}],[{"@type":"VideoObject","name":"Create an Express server in three minutes - 1. Building a Basic Express Application","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT4M9S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/create-an-express-server-in-three-minutes"},{"@type":"VideoObject","name":"Building from a HTML page or template - 1. Building a Basic Express Application","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT4M23S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/building-from-a-html-page-or-template"},{"@type":"VideoObject","name":"Serving HTML pages and static content - 1. Building a Basic Express Application","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT4M43S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/serving-html-pages-and-static-content"},{"@type":"VideoObject","name":"Setting up ESLint and Prettier - 1. Building a Basic Express Application","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT6M46S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/setting-up-eslint-and-prettier"},{"@type":"VideoObject","name":"Setting up nodemon - 1. Building a Basic Express Application","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT2M12S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/setting-up-nodemon"}],[{"@type":"VideoObject","name":"Template engines and Express - 2. Template Engines","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT1M49S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/template-engines-and-express"},{"@type":"VideoObject","name":"Getting to know the EJS template engine - 2. Template Engines","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT3M7S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/getting-to-know-the-ejs-template-engine"},{"@type":"VideoObject","name":"Rendering the index page with EJS - 2. Template Engines","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT2M41S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/rendering-the-index-page-with-ejs"}],[{"@type":"VideoObject","name":"Express middleware and routes - 3. Express Routes and Middleware","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT6M12S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/express-middleware-and-routes"},{"@type":"VideoObject","name":"Modular routes with express.Router - 3. Express Routes and Middleware","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT4M22S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/modular-routes-with-express-router"},{"@type":"VideoObject","name":"Creating routes for all subpages - 3. Express Routes and Middleware","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT6M58S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-routes-for-all-subpages"},{"@type":"VideoObject","name":"Add business logic - 3. Express Routes and Middleware","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT8M26S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/add-business-logic"},{"@type":"VideoObject","name":"Add a session management middleware - 3. Express Routes and Middleware","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT6M40S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/add-a-session-management-middleware"}],[{"@type":"VideoObject","name":"Create a site-wide layout - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT6M54S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/create-a-site-wide-layout"},{"@type":"VideoObject","name":"Using partials with EJS - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT4M56S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/using-partials-with-ejs"},{"@type":"VideoObject","name":"Template variables in more detail - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT5M57S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/template-variables-in-more-detail"},{"@type":"VideoObject","name":"Looping through lists in templates - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT11M33S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/looping-through-lists-in-templates"},{"@type":"VideoObject","name":"Creating a list page - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT6M4S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-a-list-page"},{"@type":"VideoObject","name":"Using parameter routes - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT7M9S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/using-parameter-routes"},{"@type":"VideoObject","name":"Challenge: Partials and lists - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT2M20S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/challenge-partials-and-lists"},{"@type":"VideoObject","name":"Solution: Partials and lists - 4. Professional Templating with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT8M46S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/solution-partials-and-lists"}],[{"@type":"VideoObject","name":"How to handle errors in express - 5. Handling Errors Gracefully","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT8M14S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/how-to-handle-errors-in-express"},{"@type":"VideoObject","name":"Creating an error page - 5. Handling Errors Gracefully","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT7M22S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-an-error-page"},{"@type":"VideoObject","name":"Populating the error page - 5. Handling Errors Gracefully","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT1M57S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/populating-the-error-page"}],[{"@type":"VideoObject","name":"Creating a form template - 6. Handling Form Data","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT5M26S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-a-form-template"},{"@type":"VideoObject","name":"Handling POST requests - 6. Handling Form Data","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT5M36S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/handling-post-requests"},{"@type":"VideoObject","name":"Validating and sanitizing user input - 6. Handling Form Data","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT10M31S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/validating-and-sanitizing-user-input"},{"@type":"VideoObject","name":"Storing data - 6. Handling Form Data","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT4M41S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/storing-data"}],[{"@type":"VideoObject","name":"A little intro to REST APIs - 7. Creating APIs with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT3M52S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/a-little-intro-to-rest-apis"},{"@type":"VideoObject","name":"Creating and testing an API endpoint - 7. Creating APIs with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT8M19S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-and-testing-an-api-endpoint"},{"@type":"VideoObject","name":"Add client side JavaScript - 7. Creating APIs with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT3M16S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/add-client-side-javascript"},{"@type":"VideoObject","name":"Updating the page from REST - 7. Creating APIs with Express","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT7M29S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/updating-the-page-from-rest"}],[{"@type":"VideoObject","name":"Build on what you've learned - Conclusion","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT41S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/build-on-what-you-ve-learned"}]],"syllabusSections":[{"@type":"Syllabus","name":"Dynamic websites with Node and Express","timeRequired":"PT50S","description":"Get an introduction to building websites with Node and Express."},{"@type":"Syllabus","name":"What you should know","timeRequired":"PT1M5S","description":"Find out what you should know before watching this course. You should have some prior knowledge of JavaScript and Node.js. This means, that you should know how to install a package via npm, know how to run a Node.js application and you should also be familiar with recent syntax features of JavaScript (ES6)."},{"@type":"Syllabus","name":"Using the exercise files and GitHub","timeRequired":"PT3M40S","description":"All exercise files of this course are available for free on GitHub and Daniel uses branches that reflect the changes made throughout the course. Explore how to check out all branches to your development machine for later reference."},{"@type":"Syllabus","name":"Setting up your development environment","timeRequired":"PT1M36S","description":"Before you start building, make sure that all the needed tools are installed on your machine. Check out this video to install Visual Studio Code and learn about how it integrates with Git."},{"@type":"Syllabus","name":"Create an Express server in three minutes","timeRequired":"PT4M9S","description":"Follow along as Daniel shows you how to set up a very simple Express server that will be used for your website's development. Despite its simplicity, it is fully functional and will be extended throughout the course."},{"@type":"Syllabus","name":"Building from a HTML page or template","timeRequired":"PT4M23S","description":"When doing web development, you often receive an HTML page from a designer. Walk through the provided HTML page and all the subpages to get an idea of the overall site structure."},{"@type":"Syllabus","name":"Serving HTML pages and static content","timeRequired":"PT4M43S","description":"A website usually consists of HTML pages but also contains images, stylesheets or font files. Express provides a middleware for that. Learn about how to set it up to render static HTML pages as well as images and styles contained in your page."},{"@type":"Syllabus","name":"Setting up ESLint and Prettier","timeRequired":"PT6M46S","description":"A well equipped toolbelt makes development easy and fun. Discover how to add some extensions for professional development to your development workflow."},{"@type":"Syllabus","name":"Setting up nodemon","timeRequired":"PT2M12S","description":"Express needs to be reloaded when you change your code. Nodemon watches your projects and and reloads the application when there were changes. Learn about how to install and set up this tool."},{"@type":"Syllabus","name":"Template engines and Express","timeRequired":"PT1M49S","description":"In any web framework templates provide a way to modularize a website, reuse components, and render dynamic content into these pages. Discover which template engines are supported by Express and how to include them."},{"@type":"Syllabus","name":"Getting to know the EJS template engine","timeRequired":"PT3M7S","description":"This course uses the EJS template engine. It's very simple and is based on regular HTML and JavaScript. Learn about the basic concepts and how to add EJS to your project."},{"@type":"Syllabus","name":"Rendering the index page with EJS","timeRequired":"PT2M41S","description":"Learn about how to convert a static HTML file into a template that can be parsed and rendered with EJS."},{"@type":"Syllabus","name":"Express middleware and routes","timeRequired":"PT6M12S","description":"In previous chapters, we already used routes to serve different pages. Now is a good time to have a closer look at them to really understand how routes work. Middlewares are very similar to routes, they are just at a different place in the Express lifecycle. Both concepts are key to understanding Express. Learn about them in this video."},{"@type":"Syllabus","name":"Modular routes with express.Router","timeRequired":"PT4M22S","description":"Express provides a way to use split out routes into modules. By doing so every root is like an express mini app that is independent of the path with which it was called. Learn about how to use this important feature to create the route structure for your website."},{"@type":"Syllabus","name":"Creating routes for all subpages","timeRequired":"PT6M58S","description":"Your website consists of several subpages. Learn how to create a directory structure and extend the modular router you previously created to add routes for those pages."},{"@type":"Syllabus","name":"Add business logic","timeRequired":"PT8M26S","description":"Modern websites usually contain some dynamic content. This project does as well. This content needs to be retrieved from a database, an API, or the filesystem. The logic for that is already included in the exercise files. Discover how to wire these service classes into the application."},{"@type":"Syllabus","name":"Add a session management middleware","timeRequired":"PT6M40S","description":"HTTP is stateless, this means that it does not recognize a user between requests. To persist data for a user, we need sessions. Express supports a large variety of session management backends. Learn about how to add a cookie-based session management system."},{"@type":"Syllabus","name":"Create a site-wide layout","timeRequired":"PT6M54S","description":"Modularizing a design by factoring out parts that are used throughout a site is an important technique when creating easy-to-maintain, non-redundant templates. Learn about how to use EJS to create a layout that contains the elements found on any sub page."},{"@type":"Syllabus","name":"Using partials with EJS","timeRequired":"PT4M56S","description":"Some parts of a website are used on different places. Partly we solved that by using a layout but there are good reasons to modularize the page even more. Learn about how to modularize the templates you have so far to remove all redundancies."},{"@type":"Syllabus","name":"Template variables in more detail","timeRequired":"PT5M57S","description":"Templates provide an easy way to render dynamic data into HTML. This video shows the different ways this can be accomplished during a request lifecycle in Express."},{"@type":"Syllabus","name":"Looping through lists in templates","timeRequired":"PT11M33S","description":"We have to render the speakers list on various locations. For that we need a way to loop through a list and render the list data into a block of HTML. Discover different control structures needed to accomplish that."},{"@type":"Syllabus","name":"Creating a list page","timeRequired":"PT6M4S","description":"The pattern of list and detail pages is very common. In our case we have a list that shows all speakers and then another that should show the details for a speaker. To know which user to show on the detail page, we have to pass this information to the route. This is where parameter routes come into play. Learn about how to create such a list page."},{"@type":"Syllabus","name":"Using parameter routes","timeRequired":"PT7M9S","description":"Parameter routes allow for variable parts in URL. These variable parts are accessible in a route and can contain information that identify the information to show under a route. Learn about how to create a parameter route for speaker details."},{"@type":"Syllabus","name":"Challenge: Partials and lists","timeRequired":"PT2M20S","description":"Using the topics covered so far, you should now be able to create a list of artwork that shows either all pieces or just the ones of a given speaker. Give it a try."},{"@type":"Syllabus","name":"Solution: Partials and lists","timeRequired":"PT8M46S","description":"Explore the solution for creating an artwork list template."},{"@type":"Syllabus","name":"How to handle errors in express","timeRequired":"PT8M14S","description":"Errors can always occcur and sometimes they have to be presented to the user. Discover how errors are handled and then learn about how to set up a dedicated middleware that will be called every time an error occurs."},{"@type":"Syllabus","name":"Creating an error page","timeRequired":"PT7M22S","description":"A professional website should provide a proper error page in case something goes wrong. Learn about how to create such a page from a static HTML sample page found on the web."},{"@type":"Syllabus","name":"Populating the error page","timeRequired":"PT1M57S","description":"Learn about how to modify the error template to show the error code and error message."},{"@type":"Syllabus","name":"Creating a form template","timeRequired":"PT5M26S","description":"The template for the feedback page is still missing. It is similar to what was done before, work along as Daniel goes through the steps."},{"@type":"Syllabus","name":"Handling POST requests","timeRequired":"PT5M36S","description":"POST requests are often used to send forms. Learn about how to add a middleware that is needed to parse form data and discover how to create a route that can handle such requests."},{"@type":"Syllabus","name":"Validating and sanitizing user input","timeRequired":"PT10M31S","description":"We can not trust our users that they will always provide correct data. They might even have bad intentions and try to crash our site with wrong user input. Learn about the concept of input validation."},{"@type":"Syllabus","name":"Storing data","timeRequired":"PT4M41S","description":"With the infrastructure for storing data already provided, try this challenge to store the data provided via form."},{"@type":"Syllabus","name":"A little intro to REST APIs","timeRequired":"PT3M52S","description":"Express is often used to create so-called REST APIs. Discover the basic concepts and the many ways APIs are used on the web today."},{"@type":"Syllabus","name":"Creating and testing an API endpoint","timeRequired":"PT8M19S","description":"We've learned that REST APIs usually return their data as JSON. Learn about how to create a typical API endpoint with Express."},{"@type":"Syllabus","name":"Add client side JavaScript","timeRequired":"PT3M16S","description":"We need client side JavaScript to do the REST call and update the page. Learn about how to extend the application to add provided client-side JavaScript to the feedback page."},{"@type":"Syllabus","name":"Updating the page from REST","timeRequired":"PT7M29S","description":"Learn about the provided client side JavaScript and how it calls the REST API and updates the page."},{"@type":"Syllabus","name":"Build on what you've learned","timeRequired":"PT41S","description":"Discover how to continue building your skill set with Node and Express."}],"aggregateRating":{"@type":"AggregateRating","ratingCount":353,"ratingValue":4.5,"bestRating":5,"worstRating":1},"review":[{"@type":"Review","author":{"@type":"Person","name":"Jimmy Rucker","jobTitle":"UX/UI Designer, Graphic Designer, IT Services, IT Consulting, Adobe XD, Adobe Suite, Html, Wordpress, Joomla, Mail Chimp","url":"https://www.linkedin.com/in/jimmyrucker"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Get course nice an slow to explain ","datePublished":"2023-11-28T16:28:13.810Z","publisher":{"@type":"Organization","name":"LinkedIn"},"bestRating":5,"worstRating":1},{"@type":"Review","author":{"@type":"Person","name":"Tarun Keshav","jobTitle":"To new opportunities and exciting times","url":"https://in.linkedin.com/in/tarun-keshav-1a4a687"},"reviewRating":{"@type":"Rating","ratingValue":3},"reviewBody":"did not understand the settings or changes or why we are doing all these... yet...","datePublished":"2023-10-16T11:54:29.694Z","publisher":{"@type":"Organization","name":"LinkedIn"},"bestRating":5,"worstRating":1},{"@type":"Review","author":{"@type":"Person","name":"Ameer Hamza Khuhro","jobTitle":"MERN Developer || IBA'23","url":"https://pk.linkedin.com/in/ameer-hamza-khuhro"},"reviewRating":{"@type":"Rating","ratingValue":4},"reviewBody":"This course is designed very well. It covers the basics understandings of NodeJS and ExpressJS. I highly recommend the beginners to start with this course in order to gain the hands-on experience with these technologies.","datePublished":"2023-08-13T08:09:47.592Z","publisher":{"@type":"Organization","name":"LinkedIn"},"bestRating":5,"worstRating":1}],"video":{"@type":"VideoObject","name":"Dynamic websites with Node and Express - Building a Website with Node.js and Express.js","author":{"@type":"Person","name":"Daniel Khan","description":"Member of the Management Board | KHAN Berufsbekleidung","jobTitle":"Member of the Management Board | KHAN Berufsbekleidung","url":"https://at.linkedin.com/in/khandaniel","image":"https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY","description":"Learn how to build dynamic websites with Node.js and Express.js, a popular web server framework.","duration":"PT50S","datePublished":"2020-01-10","uploadDate":"2020-01-10","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/dynamic-websites-with-node-and-express"},"educationalLevel":"Beginner","educationalCredentialAwarded":[{"@type":"EducationalOccupationalCredential","name":"LinkedIn Learning Certificate of Completion","url":"https://www.linkedin.com/help/learning/answer/a598944/learning-certificates-of-completion-faqs","credentialCategory":"Certificate","offers":[{"@type":"Offer","category":"Subscription"}]}]} </script> <!----> </head> <body dir="ltr"> <!----><!----><!----> <!----> <a href="#main-content" class="skip-link btn-md btn-primary absolute z-11 -top-[100vh] focus:top-0"> Skip to main content </a> <header class="header base-detail-page__header px-mobile-container-padding bg-color-background-container global-alert-offset sticky-header"> <nav class="nav pt-1.5 pb-2 flex items-center justify-between relative flex-nowrap babymamabear:py-1.5 nav--minified-mobile " aria-label="Primary"> <a href="https://www.linkedin.com/learning/?trk=learning-course_nav-header-logo" class="nav__logo-link link-no-visited-state z-1 mr-auto min-h-[52px] flex items-center babybear:z-0 hover:no-underline focus:no-underline active:no-underline babymamabear:mr-3" data-tracking-control-name="learning-course_nav-header-logo" data-tracking-will-navigate> <div class="learning-logo"> <icon class="learning-logo__inbug onload" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4zqr0f9jf98vi2nkijyc3bex2"></icon> <span class="learning-logo__text" aria-hidden="true">Learning</span> <span class="sr-only">LinkedIn Learning</span> </div> </a> <section class="search-bar relative flex flex-grow h-[40px] bg-cool-gray-20 min-w-0 max-w-full mx-4 rounded-sm babymamabear:mx-0 babymamabear:mb-1.5 babymamabear:bg-color-transparent babymamabear:w-full babymamabear:flex babymamabear:flex-wrap search-bar--minified-mobile" data-current-search-type="LEARNING"> <button class="search-bar__placeholder papabear:hidden text-input w-full mt-1.5 !pl-[14px] border-1 border-solid border-color-border-faint rounded-[2px] h-[40px] max-h-[40px] flex items-center overflow-hidden cursor-text" data-tracking-control-name="learning-course_search-switcher-opener"> <icon class="text-color-icon w-3 h-3 mr-1" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/397vrsk6op88l4981ji1xe1qt"></icon> <div class="search-bar__full-placeholder font-sans text-md text-color-text max-w-[calc(100%-40px)] text-left whitespace-nowrap overflow-hidden text-ellipsis"> <!----><!----> Search skills, subjects, or software <!----> </div> <span class="sr-only">Expand search</span> </button> <div class="switcher-tabs__trigger-and-tabs babymamabear:flex"> <button aria-expanded="false" class="switcher-tabs__placeholder flex !h-full !py-0 !pl-2 !pr-1.5 border-r-1 border-solid border-r-color-border-faint babymamabear:hidden tab-md papabear:tab-vertical papabear:justify-start cursor-pointer" data-tracking-control-name="learning-course_switcher-tabs-placeholder" aria-describedby="switcher-description"> <span class="switcher-tabs__placeholder-text m-auto"></span> <icon class="switcher-tabs__caret-down-filled onload pointer-events-none block my-auto min-h-[24px] min-w-[24px] h-[24px] babymamabear:hidden" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/7asbl4deqijhoy3z2ivveispv"></icon> </button> <div id="switcher-description" class="hidden">This button displays the currently selected search type. When expanded it provides a list of search options that will switch the search inputs to match the current selection. </div> <!----> <div class="switcher-tabs hidden z-[1] w-auto min-w-[160px] mb-1.5 py-1 absolute top-[48px] left-0 border-solid border-1 border-color-border-faint papabear:container-raised babymamabear:static babymamabear:w-[100vw] babymamabear:h-[48px] babymamabear:p-0 overflow-y-hidden overflow-x-auto md:overflow-x-hidden"> <ul class="switcher-tabs__list flex flex-1 items-stretch papabear:flex-col" role="tablist"> <li class="switcher-tabs__tab h-[44px] babymamabear:basis-1/2" role="presentation"> <button aria-controls="jobs-search-panel" aria-selected="false" class="switcher-tabs__button w-full h-full tab-md papabear:tab-vertical papabear:justify-start cursor-pointer " data-switcher-type="JOBS" data-tracking-control-name="learning-course_switcher-tabs-jobs-search-switcher" id="job-switcher-tab" role="tab"> Jobs </button> </li> <li class="switcher-tabs__tab h-[44px] babymamabear:basis-1/2" role="presentation"> <button aria-controls="people-search-panel" aria-selected="false" class="switcher-tabs__button w-full h-full tab-md papabear:tab-vertical papabear:justify-start cursor-pointer " data-switcher-type="PEOPLE" data-tracking-control-name="learning-course_switcher-tabs-people-search-switcher" id="people-switcher-tab" role="tab"> People </button> </li> <li class="switcher-tabs__tab h-[44px] babymamabear:basis-1/2" role="presentation"> <button aria-controls="learning-search-panel" aria-selected="true" class="switcher-tabs__button w-full h-full tab-md papabear:tab-vertical papabear:justify-start cursor-pointer tab-selected" data-switcher-type="LEARNING" data-tracking-control-name="learning-course_switcher-tabs-learning-search-switcher" id="learning-switcher-tab" role="tab"> Learning </button> </li> </ul> <button aria-label="Close" class="switcher-tabs__cancel-btn papabear:hidden block w-6 h-6 m-auto text-color-text-low-emphasis" data-tracking-control-name="learning-course_switcher-tabs-cancel-search-switcher" type="button"> <icon class="switcher-tabs__cancel-icon block w-3 h-3 m-auto onload" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </div> </div> <section class="base-search-bar w-full h-full" data-searchbar-type="PEOPLE" aria-labelledby="people-switcher-tab" id="people-search-panel" role="tabpanel"> <form class="base-search-bar__form w-full flex babymamabear:mx-mobile-container-padding babymamabear:flex-col" role="search" action="/pub/dir" data-tracking-control-name="learning-course_people-search-bar_base-search-bar-form"> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 search-input"> <input aria-label="First Name" autocomplete="on" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_people-search-bar_first-name_dismissable-input" maxlength="500" name="firstName" placeholder="First Name" type="search"> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_people-search-bar_first-name_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 search-input"> <input aria-label="Last Name" autocomplete="on" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_people-search-bar_last-name_dismissable-input" maxlength="500" name="lastName" placeholder="Last Name" type="search"> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_people-search-bar_last-name_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <input name="trk" value="learning-course_people-search-bar_search-submit" type="hidden"> <button class="base-search-bar__submit-btn block basis-[40px] flex-shrink-0 cursor-pointer babymamabear:invisible babymamabear:ml-[-9999px] babymamabear:w-[1px] babymamabear:h-[1px]" aria-label="Search" data-tracking-control-name="learning-course_people-search-bar_base-search-bar-search-submit" type="submit"> <icon class="base-search-bar__search-icon onload mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cb5bsr4tsn2r4sjg9e3ls4tjl"></icon> </button> </form> </section> <section class="base-search-bar w-full h-full" data-searchbar-type="JOBS" aria-labelledby="job-switcher-tab" id="jobs-search-panel" role="tabpanel"> <form class="base-search-bar__form w-full flex babymamabear:mx-mobile-container-padding babymamabear:flex-col" role="search" action="/jobs/search" data-tracking-control-name="learning-course_jobs-search-bar_base-search-bar-form"> <code id="i18n_aria_live_text_no-suggestions" style="display: none"><!--"No suggestions found"--></code> <code id="i18n_aria_live_text_one-suggestion" style="display: none"><!--"One Suggestion. Use up and down keys to navigate"--></code> <code id="i18n_aria_live_text_multiple-suggestions" style="display: none"><!--"Multiple Suggestions. Use up and down keys to navigate"--></code> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 typeahead-input keywords-typeahead-input text-input"> <input aria-autocomplete="list" aria-controls="job-search-bar-keywords-typeahead-list" aria-haspopup="listbox" aria-label="Search job titles or companies" autocomplete="off" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_dismissable-input" id="job-search-bar-keywords" maxlength="500" name="keywords" placeholder="Search job titles or companies" role="combobox" type="search"> <!----> <div class="typeahead-input__dropdown container-lined absolute top-[calc(100%+3px)] left-0 w-full rounded-b-md rounded-t-none z-[10] overflow-hidden max-w-none babybear:min-w-full babybear:bottom-0 babybear:overflow-y-auto"> <template class="typeahead-item-template"> <li class="typeahead-input__dropdown-item py-1.5 px-2 hover:cursor-pointer hover:bg-color-surface-new-hover hover:border-y-2 hover:border-solid hover:border-color-container-primary" role="option"> <span class="typeahead-input__dropdown-text font-sans text-sm font-bold text-color-text"></span> </li> </template> <ul class="typeahead-input__dropdown-list w-full" id="job-search-bar-keywords-typeahead-list" role="listbox"></ul> </div> <!----> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <!----> <code id="i18n_aria_live_text_no-suggestions" style="display: none"><!--"No suggestions found"--></code> <code id="i18n_aria_live_text_one-suggestion" style="display: none"><!--"One Suggestion. Use up and down keys to navigate"--></code> <code id="i18n_aria_live_text_multiple-suggestions" style="display: none"><!--"Multiple Suggestions. Use up and down keys to navigate"--></code> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 typeahead-input location-typeahead-input"> <input aria-autocomplete="list" aria-controls="job-search-bar-location-typeahead-list" aria-haspopup="listbox" aria-label="Location" autocomplete="off" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_dismissable-input" id="job-search-bar-location" maxlength="500" name="location" placeholder="Location" role="combobox" value="Hong Kong" type="search"> <!----> <div class="typeahead-input__dropdown container-lined absolute top-[calc(100%+3px)] left-0 w-full rounded-b-md rounded-t-none z-[10] overflow-hidden max-w-none babybear:min-w-full babybear:bottom-0 babybear:overflow-y-auto"> <template class="typeahead-item-template"> <li class="typeahead-input__dropdown-item py-1.5 px-2 hover:cursor-pointer hover:bg-color-surface-new-hover hover:border-y-2 hover:border-solid hover:border-color-container-primary" role="option"> <span class="typeahead-input__dropdown-text font-sans text-sm font-bold text-color-text"></span> </li> </template> <ul class="typeahead-input__dropdown-list w-full" id="job-search-bar-location-typeahead-list" role="listbox"></ul> </div> <!----> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <input name="geoId" value="102817007" type="hidden"> <input name="trk" value="learning-course_jobs-search-bar_search-submit" type="hidden"> <button class="base-search-bar__submit-btn block basis-[40px] flex-shrink-0 cursor-pointer babymamabear:invisible babymamabear:ml-[-9999px] babymamabear:w-[1px] babymamabear:h-[1px]" aria-label="Search" data-tracking-control-name="learning-course_jobs-search-bar_base-search-bar-search-submit" type="submit"> <icon class="base-search-bar__search-icon onload mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cb5bsr4tsn2r4sjg9e3ls4tjl"></icon> </button> </form> </section> <section class="base-search-bar w-full h-full" data-searchbar-type="LEARNING" aria-labelledby="learning-switcher-tab" id="learning-search-panel" role="tabpanel"> <form class="base-search-bar__form w-full flex babymamabear:mx-mobile-container-padding babymamabear:flex-col" role="search" action="/learning/search" data-tracking-control-name="learning-course_learning-search-bar_base-search-bar-form"> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 search-input"> <input aria-label="Search skills, subjects, or software" autocomplete="on" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_learning-search-bar_keywords_dismissable-input" maxlength="500" name="keywords" placeholder="Search skills, subjects, or software" type="search"> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_learning-search-bar_keywords_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <input class="nav__search-uoo" name="upsellOrderOrigin" type="hidden"> <input name="trk" value="learning-course_learning-search-bar_search-submit" type="hidden"> <button class="base-search-bar__submit-btn block basis-[40px] flex-shrink-0 cursor-pointer babymamabear:invisible babymamabear:ml-[-9999px] babymamabear:w-[1px] babymamabear:h-[1px]" aria-label="Search" data-tracking-control-name="learning-course_learning-search-bar_base-search-bar-search-submit" type="submit"> <icon class="base-search-bar__search-icon onload mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cb5bsr4tsn2r4sjg9e3ls4tjl"></icon> </button> </form> </section> <!----> <div aria-live="polite" class="search-bar__live-text sr-only" role="status"></div> </section> <!----> <div class="nav__cta-container order-3 flex gap-x-1 justify-end min-w-[100px] flex-nowrap flex-shrink-0 babybear:flex-wrap flex-2 babymamabear:min-w-[50px] "> <a class="nav__button-tertiary btn-md btn-tertiary" href="http://www.linkedin.com/learning/subscription/products?courseSlug=building-a-website-with-node-js-and-express-js-3&destRedirectURL=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3&trk=learning-course_nav-header-join&upsellTrk=lil_upsell_nav_subscription&session_redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card" data-tracking-control-name="lil_upsell_nav_subscription" data-tracking-impression-name="lil_upsell_nav_subscription" data-test-live-nav-primary-cta data-tracking-will-navigate> Start free trial </a> <a class="nav__button-secondary btn-md btn-secondary-emphasis" href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&fromSignIn=true&session_redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_nav-header-signin" data-tracking-control-name="learning-course_nav-header-signin" data-tracking-will-navigate> Sign in </a> <a aria-label="Sign in" class="nav__link-person papabear:hidden mamabear:hidden" data-tracking-control-name="learning-course_nav-header-signin" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&fromSignIn=true&session_redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_nav-header-signin"> <img class="inline-block relative rounded-[50%] w-4 h-4 bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt> </a> </div> <!----> <!----> </nav> </header> <!----> <div class="cta-banner "> <div class="enterprise-nav"> <div class="enterprise-nav__content-wrapper"> <p id="enterprise-nav-solutions" class="enterprise-nav__content" tabindex="-1"> Solutions for: </p> <a href="https://learning.linkedin.com/for-entire-companies?src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-business" class="enterprise-nav__content" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" id="business-nav-business">Business</a> <a href="https://learning.linkedin.com/for-higher-education?src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-education" class="enterprise-nav__content" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" id="business-nav-education">Higher Education</a> <a href="https://learning.linkedin.com/for-governments?src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-government" class="enterprise-nav__content" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" id="business-nav-government">Government</a> <a href="/learning/subscription/teams?veh=lil_upx&src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-buy" class="enterprise-nav__content" data-test-live-enterprise-upsell="true" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" data-tracking-impression-name="lil_upsell_learning-course_enterprise-nav_teambuy" id="business-nav-buy">Buy for my team</a> </div> </div> <!----> <!----> </div> <main class="main papabear:flex papabear:w-content-max-w papabear:mx-auto papabear:pt-desktop-content-top-margin mamabear:pt-desktop-content-top-margin " id="main-content" role="main"> <section class="core-rail mx-auto papabear:w-core-rail-width mamabear:max-w-[790px] babybear:max-w-[790px]"> <ol class="breadcrumb__list"> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/browse?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>All topics</a> </li> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/topics/technology?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>Technology</a> </li> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/topics/web-development?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>Web Development</a> </li> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/topics/javascript-frameworks?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>JavaScript Frameworks</a> </li> </ol> <script type="application/ld+json"> {"@context":"http://schema.org/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"All topics","item":"https://www.linkedin.com/learning/browse"},{"@type":"ListItem","position":2,"name":"Technology","item":"https://www.linkedin.com/learning/topics/technology"},{"@type":"ListItem","position":3,"name":"Web Development","item":"https://www.linkedin.com/learning/topics/web-development"},{"@type":"ListItem","position":4,"name":"JavaScript Frameworks","item":"https://www.linkedin.com/learning/topics/javascript-frameworks"}]} </script> <section class="top-card-layout container-lined overflow-hidden babybear:rounded-[0px]"> <section class="top-card__image-container"> <img class="top-card__image" alt="Building a Website with Node.js and Express.js" data-delayed-url="https://media.licdn.com/dms/image/v2/C560DAQHNu_2nM0E_OA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1578674895854?e=2147483647&v=beta&t=iO17C7utFWESU09K9yMep2zfuYV8o3OVaaBJIGMHIBY"> <a class="top-card__overlay-button" data-tracking-control-name="course_preview" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/dynamic-websites-with-node-and-express?autoplay=true&trk=course_preview"> <span class="top-card__preview-cta "> <icon class="top-card__preview-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l"> </icon> <span class="top-card__preview-cta-text">Preview</span> </span> <!----> </a> </section> <div class="top-card-layout__card relative p-2 papabear:p-details-container-padding"> <div class="top-card-layout__entity-info-container flex flex-wrap papabear:flex-nowrap"> <div class="top-card-layout__entity-info flex-grow flex-shrink-0 basis-0 babybear:flex-none babybear:w-full babybear:flex-none babybear:w-full"> <h1 class="top-card-layout__title font-sans text-lg papabear:text-xl font-bold leading-open text-color-text mb-0"> Building a Website with Node.js and Express.js </h1> <h2 class="top-card-layout__headline break-words font-sans text-md leading-open text-color-text"> <div class="top-card__headline-row"> <span class="top-card__headline-row-item top-card__headline-row-item--large">With Daniel Khan</span> <span class="top-card__headline-row-item">Liked by 2,014 users</span> </div> <div class="top-card__headline-row"> <span class="top-card__headline-row-item">Duration: 3h 10m</span> <span class="top-card__headline-row-item">Skill level: Beginner</span> <span class="top-card__headline-row-item">Released: 1/10/2020</span> </div> </h2> <!----> <!----> <div class="top-card-layout__cta-container flex flex-wrap mt-0.5 papabear:mt-0 ml-[-12px]"> <a href="http://www.linkedin.com/learning/subscription/products?courseSlug=building-a-website-with-node-js-and-express-js-3&destRedirectURL=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3&trk=course_info&upsellTrk=lil_upsell_course_info_subscription" data-tracking-control-name="lil_upsell_course_info_subscription" data-tracking-impression-name="lil_upsell_course_info_subscription" data-litms-tracking-control-name="lil_upsell_course_info_subscription" data-tracking-will-navigate class="top-card__upsell-link top-card-layout__cta mt-2 ml-1.5 h-auto babybear:flex-auto top-card-layout__cta--primary btn-md btn-primary" data-test-live-course-sub-upsell> Start my 1-month free trial </a> <a class="buy-for-your-team-cta__link top-card-layout__cta mt-2 ml-1.5 h-auto babybear:flex-auto top-card-layout__cta--secondary btn-md btn-secondary" href="/learning/subscription/teams?veh=lil_upx&src=li-lil-upsell&trk=learning-course_buy-for-your-team-cta" data-tracking-control-name="learning-course_buy-for-your-team-cta" data-tracking-impression-name="lil_upsell_learning-course_buy-for-your-team-cta_teambuy" data-test-live-buy-for-your-team-upsell data-tracking-will-navigate> Buy for my team </a> </div> </div> <!----> </div> <!----> <!----> </div> </section> <div class="details mx-details-container-padding"> <section class="core-section-container my-3 course-details"> <!----> <h2 class="core-section-container__title section-title"> Course details </h2> <!----> <div class="core-section-container__content break-words"> <section class="show-more-less-html course-details__description" data-max-lines="4"> <div class="show-more-less-html__markup show-more-less-html__markup--clamp-after-4 relative overflow-hidden"> Node.js is a major platform for the web, used by companies like Uber, Netflix, and Intuit. Express.js is a fast, minimalist framework that sits on top of Node.js and allows you to build powerful single- and multi-page web applications and websites. In this course, instructor Daniel Khan shows how to build a realistic and robust website with these technologies. Learn how to build a basic application in minutes, transform HTML into dynamic pages, leverage template engines to modularize code, add routing and business logic, handle errors, store form data, and create API endpoints for single-page applications. Along the way, Daniel helps you pick up bits and pieces about Express.js and improve your overall knowledge of how to work effectively with Node.js. </div> <button class="show-more-less-html__button show-more-less-button show-more-less-html__button--more ml-0.5" data-tracking-control-name="learning-course_show-more-html-btn" aria-label="i18n_show_more" aria-expanded="false"> <!----> Show more <icon class="show-more-less-html__button-icon show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less-html__button show-more-less-button show-more-less-html__button--less ml-0.5" data-tracking-control-name="learning-course_show-less-html-btn" aria-label="i18n_show_less" aria-expanded="true"> <!----> Show less <icon class="show-more-less-html__button-icon show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <!----> </section> </div> </section> <section class="core-section-container my-3 course-skills"> <!----> <h2 class="core-section-container__title section-title"> Skills you’ll gain </h2> <!----> <div class="core-section-container__content break-words"> <ul class="course-skills__skill-list"> <li class="course-skills__skill-list-item"> <a href="https://www.linkedin.com/learning/topics/express-js?trk=learning-course_pill-list" data-tracking-control-name="learning-course_pill-list" data-tracking-will-navigate class="pill flex w-fit mr-[6px] mb-1 hover:no-underline skill-pill"> Express.js </a> </li> <li class="course-skills__skill-list-item"> <a href="https://www.linkedin.com/learning/topics/node-js?trk=learning-course_pill-list" data-tracking-control-name="learning-course_pill-list" data-tracking-will-navigate class="pill flex w-fit mr-[6px] mb-1 hover:no-underline skill-pill"> Node.js </a> </li> </ul> </div> </section> <section class="core-section-container my-3"> <!----> <h2 class="core-section-container__title section-title"> Earn a sharable certificate </h2> <!----> <div class="core-section-container__content break-words"> <p class="course-certificate__body-paragraph">Share what you’ve learned, and be a standout professional in your desired industry with a certificate showcasing your knowledge gained from the course.</p> <div class="course-certificate__image-container"> <img class="course-certificate__certificate-image" alt="Sample certificate" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/52nu8qc7cfcn7vrftr7ttceqt"> <div> <h3 class="course-certificate__detail-list-heading"> <div class="learning-logo"> <icon class="learning-logo__inbug onload" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4zqr0f9jf98vi2nkijyc3bex2"></icon> <span class="learning-logo__text learning-logo__text--show-on-mobile" aria-hidden="true">Learning</span> <span class="sr-only">LinkedIn Learning</span> </div> <span>Certificate of Completion</span> </h3> <ul> <li class="course-certificate__detail-list-item"> <div class="course-certificate__detail-list-item-icon-wrapper"><icon data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5lqa4dj5v9gp6yjh6s6iwtdbb"></icon></div> <p class="course-certificate__detail-list-item-text">Showcase on your LinkedIn profile under “Licenses and Certificate” section</p> </li> <li class="course-certificate__detail-list-item"> <div class="course-certificate__detail-list-item-icon-wrapper"><icon data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5lqa4dj5v9gp6yjh6s6iwtdbb"></icon></div> <p class="course-certificate__detail-list-item-text">Download or print out as PDF to share with others</p> </li> <li class="course-certificate__detail-list-item"> <div class="course-certificate__detail-list-item-icon-wrapper"><icon data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5lqa4dj5v9gp6yjh6s6iwtdbb"></icon></div> <p class="course-certificate__detail-list-item-text">Share as image online to demonstrate your skill</p> </li> </ul> </div> </div> </div> </section> <section class="core-section-container my-3 course-instructors"> <!----> <h2 class="core-section-container__title section-title"> Meet the instructor </h2> <!----> <div class="core-section-container__content break-words"> <ul class="course-instructors__list"> <li class="course-instructors__list-item"> <a href="https://at.linkedin.com/in/khandaniel?trk=learning-course_instructor" target="_self" data-tracking-control-name="learning-course_instructor" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link"> <!----> <img class="inline-block relative rounded-[50%] w-6 h-6 " data-delayed-url="https://media.licdn.com/dms/image/v2/C4D03AQGgnDtvONM9oQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516506347352?e=2147483647&v=beta&t=kiHi6K5TYCk7vS0MwZPyQfs8_lNaugjdfv_N0csaD0U" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Click here to view Daniel Khan’s instructor page"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Daniel Khan </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> Member of the Management Board | KHAN Berufsbekleidung </h4> <!----> <!----> </div> <!----> </a> </li> </ul> </div> </section> <section class="core-section-container my-3 reviews-feed"> <!----> <h2 class="core-section-container__title section-title"> Learner reviews </h2> <!----> <div class="core-section-container__content break-words"> <div class="reviews-feed__ratings-summary"> <section class="ratings-summary"> <div class="ratings-summary__overall-rating"> <h3 class="ratings-summary__header"><span class="ratings-summary__rating-average">4.5</span> <span class="ratings-summary__rating-max">out of 5</span></h3> <figure class="ratings-summary__figure"> <span class="star-rating" role="img" aria-label="Rating: 4.5 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/7dacecy4xq1otzk8pae2g0hxd"></icon> </span> </span> <figcaption class="ratings-summary__ratings-total">353 ratings</figcaption> </figure> </div> <div class="ratings-summary__breakdown"> <div class="ratings-summary__disclaimer"> <div class="tooltip"> <button class="tooltip__trigger ratings-summary__disclaimer-trigger" data-tracking-control-name="toggle_disclaimer" type="button"> <icon class="ratings-summary__disclaimer-icon" data-svg-class-name="ratings-summary__disclaimer-icon-svg" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/g8uts9v3k83n9e3iyvcxit0k"> </icon> <span class="ratings-summary__disclaimer-text">How are ratings calculated?</span> </button> <span role="tooltip" class="tooltip__popup" aria-hidden="true"> The overall rating is calculated using the average of submitted ratings. Ratings and reviews can only be submitted when non-anonymous learners complete at least 40% of the course. This helps us avoid fake reviews and spam. </span> </div> </div> <ul> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 5 star </figcaption> <progress class="ratings-summary__progress-bar" max="353" value="244" aria-valuemin="0" aria-valuenow="244" aria-valuemax="353"> Current value: 244 </progress> <span class="ratings-summary__rating-count-percent"> 69% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 4 star </figcaption> <progress class="ratings-summary__progress-bar" max="353" value="76" aria-valuemin="0" aria-valuenow="76" aria-valuemax="353"> Current value: 76 </progress> <span class="ratings-summary__rating-count-percent"> 22% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 3 star </figcaption> <progress class="ratings-summary__progress-bar" max="353" value="21" aria-valuemin="0" aria-valuenow="21" aria-valuemax="353"> Current value: 21 </progress> <span class="ratings-summary__rating-count-percent"> 6% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 2 star </figcaption> <progress class="ratings-summary__progress-bar" max="353" value="3" aria-valuemin="0" aria-valuenow="3" aria-valuemax="353"> Current value: 3 </progress> <span class="ratings-summary__rating-count-percent"> <1% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 1 star </figcaption> <progress class="ratings-summary__progress-bar" max="353" value="9" aria-valuemin="0" aria-valuenow="9" aria-valuemax="353"> Current value: 9 </progress> <span class="ratings-summary__rating-count-percent"> 3% </span> </figure> </li> </ul> </div> </section> </div> <ul class="reviews-feed__reviews-list"> <li class="reviews-feed__reviews-list-item"> <div class="review-card"> <div class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link review-card__entity"> <a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]" href="https://www.linkedin.com/in/jimmyrucker?trk=learning-course" data-tracking-control-name="learning-course" data-tracking-will-navigate> <span class="sr-only"> Jimmy Rucker <!----> </span> </a> <img class="inline-block relative rounded-[50%] w-6 h-6 " data-delayed-url="https://media.licdn.com/dms/image/v2/C4E03AQFZjt6vSzeS8A/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1658390854902?e=2147483647&v=beta&t=JKjmSZcpWVIT_Io_I1iOE-zpQRJVcRMufL8fWEaCb7o" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Jimmy Rucker"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Jimmy Rucker <!----> </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> UX/UI Designer, Graphic Designer, IT Services, IT Consulting, Adobe XD, Adobe Suite, Html, Wordpress, Joomla, Mail Chimp </h4> <!----> <div class="body-text text-color-text-low-emphasis base-main-card__metadata"> <div class="review-card__content"> <div class="review-card__centered-row"> <div class="review-card__star-container"> <span class="star-rating" role="img" aria-label="Rating: 5 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> </span> </div> <span class="review-card__rating"> 5/5 </span> <span class="review-card__date"> November 28, 2023 </span> </div> <div class="review-card__text"> Get course nice an slow to explain </div> <div class="review-card__centered-row review-card__actions"> <a class="review-card__centered-row review-card__action-button" aria-label="Jimmy Rucker’s comment is helpful" data-tracking-control-name="learning-course_review-card-helpful-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_review-card-helpful-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ptx189gjbxrh9wf3ncsehms9" data-svg-class-name="review-card__like-icon"></icon> Helpful </a> <span class="review-card__dot-delimiter">·</span> <a class="review-card__centered-row review-card__action-button" aria-label="Report Jimmy Rucker’s comment" data-tracking-control-name="learning-course_review-card-report-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_review-card-report-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/d04ze1wt0ev8ck8e4ovqk762o" data-svg-class-name="review-card__flag-icon"></icon> Report </a> </div> </div> </div> </div> <!----> </div> </div> </li> <li class="reviews-feed__reviews-list-item"> <div class="review-card"> <div class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link review-card__entity"> <a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]" href="https://in.linkedin.com/in/tarun-keshav-1a4a687?trk=learning-course" data-tracking-control-name="learning-course" data-tracking-will-navigate> <span class="sr-only"> Tarun Keshav <!----> </span> </a> <img class="inline-block relative rounded-[50%] w-6 h-6 " data-delayed-url="https://media.licdn.com/dms/image/v2/C5603AQFhEa4Pm6IzJQ/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1516339643231?e=2147483647&v=beta&t=LSO99gf4TMTKCAU7QcZbDUoMCLH4FI8jEI_iBDzE_NM" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Tarun Keshav"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Tarun Keshav <!----> </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> To new opportunities and exciting times </h4> <!----> <div class="body-text text-color-text-low-emphasis base-main-card__metadata"> <div class="review-card__content"> <div class="review-card__centered-row"> <div class="review-card__star-container"> <span class="star-rating" role="img" aria-label="Rating: 3 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/e0hq4l058yoqerjsrssp5pbr0"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/e0hq4l058yoqerjsrssp5pbr0"></icon> </span> </span> </div> <span class="review-card__rating"> 3/5 </span> <span class="review-card__date"> October 16, 2023 </span> </div> <div class="review-card__text"> did not understand the settings or changes or why we are doing all these... yet... </div> <div class="review-card__centered-row review-card__actions"> <a class="review-card__centered-row review-card__action-button" aria-label="Tarun Keshav’s comment is helpful" data-tracking-control-name="learning-course_review-card-helpful-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_review-card-helpful-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ptx189gjbxrh9wf3ncsehms9" data-svg-class-name="review-card__like-icon"></icon> Helpful </a> <span class="review-card__dot-delimiter">·</span> <a class="review-card__centered-row review-card__action-button" aria-label="Report Tarun Keshav’s comment" data-tracking-control-name="learning-course_review-card-report-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_review-card-report-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/d04ze1wt0ev8ck8e4ovqk762o" data-svg-class-name="review-card__flag-icon"></icon> Report </a> </div> </div> </div> </div> <!----> </div> </div> </li> <li class="reviews-feed__reviews-list-item"> <div class="review-card"> <div class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link review-card__entity"> <a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]" href="https://pk.linkedin.com/in/ameer-hamza-khuhro?trk=learning-course" data-tracking-control-name="learning-course" data-tracking-will-navigate> <span class="sr-only"> Ameer Hamza Khuhro <!----> </span> </a> <img class="inline-block relative rounded-[50%] w-6 h-6 " data-delayed-url="https://media.licdn.com/dms/image/v2/D4D03AQEC-CD-2bhNsA/profile-displayphoto-shrink_100_100/profile-displayphoto-shrink_100_100/0/1675334985582?e=2147483647&v=beta&t=fEBJc9gdrLFIC5CcsU_uB_qSkBMiQj_JnpQpKsMiSMo" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Ameer Hamza Khuhro"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Ameer Hamza Khuhro <!----> </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> MERN Developer || IBA'23 </h4> <!----> <div class="body-text text-color-text-low-emphasis base-main-card__metadata"> <div class="review-card__content"> <div class="review-card__centered-row"> <div class="review-card__star-container"> <span class="star-rating" role="img" aria-label="Rating: 4 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/e0hq4l058yoqerjsrssp5pbr0"></icon> </span> </span> </div> <span class="review-card__rating"> 4/5 </span> <span class="review-card__date"> August 13, 2023 </span> </div> <div class="review-card__text"> This course is designed very well. It covers the basics understandings of NodeJS and ExpressJS. I highly recommend the beginners to start with this course in order to gain the hands-on experience with these technologies. </div> <div class="review-card__centered-row review-card__actions"> <a class="review-card__centered-row review-card__action-button" aria-label="Ameer Hamza Khuhro’s comment is helpful" data-tracking-control-name="learning-course_review-card-helpful-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_review-card-helpful-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ptx189gjbxrh9wf3ncsehms9" data-svg-class-name="review-card__like-icon"></icon> Helpful </a> <span class="review-card__dot-delimiter">·</span> <a class="review-card__centered-row review-card__action-button" aria-label="Report Ameer Hamza Khuhro’s comment" data-tracking-control-name="learning-course_review-card-report-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-a-website-with-node-js-and-express-js-3%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&trk=learning-course_review-card-report-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/d04ze1wt0ev8ck8e4ovqk762o" data-svg-class-name="review-card__flag-icon"></icon> Report </a> </div> </div> </div> </div> <!----> </div> </div> </li> </ul> </div> </section> </div> </section> <section class="right-rail papabear:w-right-rail-width papabear:ml-column-gutter mamabear:max-w-[790px] mamabear:px-mobile-container-padding babybear:max-w-[790px] babybear:px-mobile-container-padding"> <section class="table-of-contents mb-4 table-of-contents--with-max-height"> <h2 class="table-of-contents__header"> Contents </h2> <ul class="table-of-contents__list"> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Introduction <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Introduction <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/dynamic-websites-with-node-and-express?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Dynamic websites with Node and Express </div> <div class="table-of-contents__item-duration"> 50s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/what-you-should-know?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> What you should know </div> <div class="table-of-contents__item-duration"> 1m 5s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/using-the-exercise-files-and-github-24696875?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Using the exercise files and GitHub </div> <div class="table-of-contents__item-duration"> 3m 40s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/setting-up-your-development-environment?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Setting up your development environment </div> <div class="table-of-contents__item-duration"> 1m 36s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 1. Building a Basic Express Application <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 1. Building a Basic Express Application <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/create-an-express-server-in-three-minutes?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Create an Express server in three minutes </div> <div class="table-of-contents__item-duration"> 4m 9s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/building-from-a-html-page-or-template?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Building from a HTML page or template </div> <div class="table-of-contents__item-duration"> 4m 23s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/serving-html-pages-and-static-content?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Serving HTML pages and static content </div> <div class="table-of-contents__item-duration"> 4m 43s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/setting-up-eslint-and-prettier?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Setting up ESLint and Prettier </div> <div class="table-of-contents__item-duration"> 6m 46s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/setting-up-nodemon?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Setting up nodemon </div> <div class="table-of-contents__item-duration"> 2m 12s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 2. Template Engines <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 2. Template Engines <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/template-engines-and-express?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Template engines and Express </div> <div class="table-of-contents__item-duration"> 1m 49s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/getting-to-know-the-ejs-template-engine?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Getting to know the EJS template engine </div> <div class="table-of-contents__item-duration"> 3m 7s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/rendering-the-index-page-with-ejs?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Rendering the index page with EJS </div> <div class="table-of-contents__item-duration"> 2m 41s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 3. Express Routes and Middleware <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 3. Express Routes and Middleware <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/express-middleware-and-routes?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Express middleware and routes </div> <div class="table-of-contents__item-duration"> 6m 12s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/modular-routes-with-express-router?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Modular routes with express.Router </div> <div class="table-of-contents__item-duration"> 4m 22s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-routes-for-all-subpages?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Creating routes for all subpages </div> <div class="table-of-contents__item-duration"> 6m 58s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/add-business-logic?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Add business logic </div> <div class="table-of-contents__item-duration"> 8m 26s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/add-a-session-management-middleware?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Add a session management middleware </div> <div class="table-of-contents__item-duration"> 6m 40s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 4. Professional Templating with Express <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 4. Professional Templating with Express <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/create-a-site-wide-layout?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Create a site-wide layout </div> <div class="table-of-contents__item-duration"> 6m 54s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/using-partials-with-ejs?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Using partials with EJS </div> <div class="table-of-contents__item-duration"> 4m 56s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/template-variables-in-more-detail?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Template variables in more detail </div> <div class="table-of-contents__item-duration"> 5m 57s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/looping-through-lists-in-templates?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Looping through lists in templates </div> <div class="table-of-contents__item-duration"> 11m 33s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-a-list-page?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Creating a list page </div> <div class="table-of-contents__item-duration"> 6m 4s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/using-parameter-routes?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Using parameter routes </div> <div class="table-of-contents__item-duration"> 7m 9s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/challenge-partials-and-lists?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Challenge: Partials and lists </div> <div class="table-of-contents__item-duration"> 2m 20s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/solution-partials-and-lists?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Solution: Partials and lists </div> <div class="table-of-contents__item-duration"> 8m 46s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 5. Handling Errors Gracefully <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 5. Handling Errors Gracefully <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/how-to-handle-errors-in-express?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> How to handle errors in express </div> <div class="table-of-contents__item-duration"> 8m 14s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-an-error-page?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Creating an error page </div> <div class="table-of-contents__item-duration"> 7m 22s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/populating-the-error-page?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Populating the error page </div> <div class="table-of-contents__item-duration"> 1m 57s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 6. Handling Form Data <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 6. Handling Form Data <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-a-form-template?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Creating a form template </div> <div class="table-of-contents__item-duration"> 5m 26s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/handling-post-requests?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Handling POST requests </div> <div class="table-of-contents__item-duration"> 5m 36s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/validating-and-sanitizing-user-input?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Validating and sanitizing user input </div> <div class="table-of-contents__item-duration"> 10m 31s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/storing-data?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Storing data </div> <div class="table-of-contents__item-duration"> 4m 41s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 7. Creating APIs with Express <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 7. Creating APIs with Express <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/a-little-intro-to-rest-apis?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> A little intro to REST APIs </div> <div class="table-of-contents__item-duration"> 3m 52s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/creating-and-testing-an-api-endpoint?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Creating and testing an API endpoint </div> <div class="table-of-contents__item-duration"> 8m 19s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/add-client-side-javascript?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Add client side JavaScript </div> <div class="table-of-contents__item-duration"> 3m 16s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/updating-the-page-from-rest?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Updating the page from REST </div> <div class="table-of-contents__item-duration"> 7m 29s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Conclusion <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Conclusion <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-a-website-with-node-js-and-express-js-3/build-on-what-you-ve-learned?autoplay=true&trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Build on what you've learned </div> <div class="table-of-contents__item-duration"> 41s </div> </div> </a> </li> </ul> <!----> </div> </li> </ul> </section> <section class="aside-section-container mb-4 subscription-value-props-aside-section"> <h2 class="aside-section-container__title section-title"> What’s included </h2> <!----> <div class="aside-section-container__content break-words"> <ul> <!----><!----> <li class="subscription-value-props-aside-section__list-item"> <span class="subscription-value-props-aside-section__value-prop-label">Learn on the go</span> <span class="subscription-value-props-aside-section__value-prop-sublabel">Access on tablet and phone</span> </li> <!----> </ul> </div> </section> <section class="aside-section-container mb-4 similar-courses-aside-section"> <h2 class="aside-section-container__title section-title"> Similar courses </h2> <!----> <div class="aside-section-container__content break-words"> <ul> <li> <!----> <a href="https://www.linkedin.com/learning/advanced-express?trk=learning-course_similar-courses" target="_self" data-tracking-control-name="learning-course_similar-courses" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-aside-card flex my-1.5 hover:show-play-button focus:show-play-button base-aside-card--link aside-learning-course-card"> <!----> <div class="base-aside-card__media flex-shrink-0 mr-0.5 overflow-hidden relative h-[54px] w-[95px] "> <img class="base-aside-card__media-element w-[100px] h-full object-cover" alt data-delayed-url="https://media.licdn.com/dms/image/v2/C4E0DAQEs-5ilV5t5IA/learning-public-crop_144_256/learning-public-crop_144_256/0/1568665801022?e=2147483647&v=beta&t=Kyi2toV2VZrcJU4qPoDPErKuL4GKVX0m1lKx4Nvjj1Y"> <div class="aside-learning-course-card__duration duration">2h 30m</div> <icon class="base-aside-card__play-button w-auto play-button overlay-center" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9n9raq7fmdu241tpsxwodsmcd" data-svg-class-name="base-aside-card__play-button-svg"></icon> </div> <div class="base-aside-card__info self-center pl-0.5 flex flex-col flex-1"> <h3 class="base-aside-card__title font-sans text-md font-bold text-color-text relative"> Advanced Express <!----> </h3> <!----> <!----> <!----> <!----> <!----> </div> <!----> </a> </li> </ul> </div> </section> <section class="aside-section-container mb-4"> <h2 class="aside-section-container__title section-title"> Download courses </h2> <!----> <div class="aside-section-container__content break-words"> <p>Use your iOS or Android LinkedIn Learning app, and watch courses on your mobile device without an internet connection.</p> <div class="app-links-aside-section__link-container"> <a class="app-links-aside-section__link" href="https://itunes.apple.com/app/apple-store/id1084807225?ls=1&pt=10746&mt=8&ct=learning_course_app_links&trk=learning-course_apple-app-store" data-tracking-control-name="learning-course_apple-app-store" data-tracking-will-navigate rel="noopener noreferrer" target="_blank"> <img alt="Download on the App Store" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/emczv26hz24woii2j4aleyry" height="42px" width="142px"> </a> <a class="app-links-aside-section__link" href="https://play.google.com/store/apps/details?id=com.linkedin.android.learning&referrer=utm_source%3Dlinkedinlearning%26utm_medium%3DmobileWeb%26utm_campaign%3Dlearning_guest&ct=learning_course_app_links&trk=learning-course_google-play-store" data-tracking-control-name="learning-course_google-play-store" data-tracking-will-navigate rel="noopener noreferrer" target="_blank"> <img alt="Get it on Google Play" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/535kqf5rsexfx0lucb3t6palb" height="42px" width="142px"> </a> </div> </div> </section> </section> </main> <div class="pre-footer "> <section class="core-section-container my-3 price-disclaimer"> <!----> <!----> <!----> <div class="core-section-container__content break-words"> <p class="price-disclaimer__copy"> <sup class="price-disclaimer__copy--sup">*</sup>Price may change based on profile and billing country information entered during Sign In or Registration </p> </div> </section> <section class="tw-linkster bg-cool-gray-20 browse-map" data-impression-id="learning-course_linkster" data-js-module-id="linkster"> <div class="max-w-screen-content-max-w w-full flex justify-between my-0 mx-auto mamabear:px-3 babybear:px-2 babybear:flex-col"> <div class="flex-1 w-1/2 pt-2 pr-4 pb-4 pl-0 babybear:pb-2 babybear:w-full babybear:border-b-1 babybear:border-solid babybear:border-color-border-low-emphasis babybear:last:border-b-0"> <h3 class="text-md font-bold text-color-text leading-open"> Explore Business Topics </h3> <ul class="my-1"> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/business-analysis-and-strategy?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Business Analysis and Strategy </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/business-software-and-tools?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Business Software and Tools </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/career-development-5?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Career Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/customer-service-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Customer Service </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/diversity-equity-and-inclusion-dei?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Diversity, Equity, and Inclusion (DEI) </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/finance-and-accounting?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Finance and Accounting </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/human-resources-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Human Resources </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/leadership-and-management?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Leadership and Management </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/marketing-2?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Marketing </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/professional-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Professional Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/project-management?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Project Management </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/sales-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Sales </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/small-business-and-entrepreneurship?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Small Business and Entrepreneurship </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/training-and-education?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Training and Education </a> </li> </ul> <a class="link tw-linkster-general-link" aria-label="See all business courses" href="https://www.linkedin.com/learning/topics/business?trk=learning-course_browsemap_general-link" data-tracking-control-name="learning-course_browsemap_general-link" data-tracking-will-navigate> See all </a> </div> <div class="flex-1 w-1/2 pt-2 pr-4 pb-4 pl-0 babybear:pb-2 babybear:w-full babybear:border-b-1 babybear:border-solid babybear:border-color-border-low-emphasis babybear:last:border-b-0"> <h3 class="text-md font-bold text-color-text leading-open"> Explore Creative Topics </h3> <ul class="my-1"> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/aec?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> AEC </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/animation-and-illustration?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Animation and Illustration </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/audio-and-music?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Audio and Music </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/graphic-design?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Graphic Design </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/motion-graphics-and-vfx?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Motion Graphics and VFX </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/photography-2?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Photography </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/product-and-manufacturing?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Product and Manufacturing </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/user-experience?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> User Experience </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/2015-54?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Video </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/visualization-and-real-time?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Visualization and Real-Time </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/web-design?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Web Design </a> </li> </ul> <a class="link tw-linkster-general-link" aria-label="See all creative courses" href="https://www.linkedin.com/learning/topics/creative?trk=learning-course_browsemap_general-link" data-tracking-control-name="learning-course_browsemap_general-link" data-tracking-will-navigate> See all </a> </div> <div class="flex-1 w-1/2 pt-2 pr-4 pb-4 pl-0 babybear:pb-2 babybear:w-full babybear:border-b-1 babybear:border-solid babybear:border-color-border-low-emphasis babybear:last:border-b-0"> <h3 class="text-md font-bold text-color-text leading-open"> Explore Technology Topics </h3> <ul class="my-1"> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/artificial-intelligence?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Artificial Intelligence (AI) </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/cloud-computing-5?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Cloud Computing </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/security-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Cybersecurity </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/data-science?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Data Science </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/database-management?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Database Management </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/devops?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> DevOps </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/hardware?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Hardware </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/it-help-desk-5?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> IT Help Desk </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/mobile-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Mobile Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/network-and-system-administration?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Network and System Administration </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/software-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Software Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/web-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Web Development </a> </li> </ul> <a class="link tw-linkster-general-link" aria-label="See all technology courses" href="https://www.linkedin.com/learning/topics/technology?trk=learning-course_browsemap_general-link" data-tracking-control-name="learning-course_browsemap_general-link" data-tracking-will-navigate> See all </a> </div> </div> </section> </div> <footer class="li-footer bg-transparent w-full "> <ul class="li-footer__list flex flex-wrap flex-row items-start justify-start w-full h-auto min-h-[50px] my-[0px] mx-auto py-3 px-2 papabear:w-[1128px] papabear:p-0"> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <span class="sr-only">LinkedIn</span> <icon class="li-footer__copy-logo text-color-logo-brand-alt inline-block self-center h-[14px] w-[56px] mr-1" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/e12h2cd8ac580qen9qdd0qks8"></icon> <span class="li-footer__copy-text flex items-center">© 2024</span> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://about.linkedin.com?trk=d_learning_course_guest_footer-about" data-tracking-control-name="d_learning_course_guest_footer-about" data-tracking-will-navigate> About </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/accessibility?trk=d_learning_course_guest_footer-accessibility" data-tracking-control-name="d_learning_course_guest_footer-accessibility" data-tracking-will-navigate> Accessibility </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/user-agreement?trk=d_learning_course_guest_footer-user-agreement" data-tracking-control-name="d_learning_course_guest_footer-user-agreement" data-tracking-will-navigate> User Agreement </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/privacy-policy?trk=d_learning_course_guest_footer-privacy-policy" data-tracking-control-name="d_learning_course_guest_footer-privacy-policy" data-tracking-will-navigate> Privacy Policy </a> </li> <!----> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/cookie-policy?trk=d_learning_course_guest_footer-cookie-policy" data-tracking-control-name="d_learning_course_guest_footer-cookie-policy" data-tracking-will-navigate> Cookie Policy </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/copyright-policy?trk=d_learning_course_guest_footer-copyright-policy" data-tracking-control-name="d_learning_course_guest_footer-copyright-policy" data-tracking-will-navigate> Copyright Policy </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://brand.linkedin.com/policies?trk=d_learning_course_guest_footer-brand-policy" data-tracking-control-name="d_learning_course_guest_footer-brand-policy" data-tracking-will-navigate> Brand Policy </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/psettings/guest-controls?trk=d_learning_course_guest_footer-guest-controls" data-tracking-control-name="d_learning_course_guest_footer-guest-controls" data-tracking-will-navigate> Guest Controls </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/professional-community-policies?trk=d_learning_course_guest_footer-community-guide" data-tracking-control-name="d_learning_course_guest_footer-community-guide" data-tracking-will-navigate> Community Guidelines </a> </li> <!----> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <div class="collapsible-dropdown collapsible-dropdown--footer collapsible-dropdown--up flex items-center relative hyphens-auto language-selector z-2"> <!----> <ul class="collapsible-dropdown__list hidden container-raised absolute w-auto overflow-y-auto flex-col items-stretch z-1 bottom-[100%] top-auto" role="menu" tabindex="-1"> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="العربية (Arabic)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ar_AE" data-locale="ar_AE" role="menuitem" lang="ar_AE"> العربية (Arabic) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="বাংলা (Bangla)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-bn_IN" data-locale="bn_IN" role="menuitem" lang="bn_IN"> বাংলা (Bangla) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Čeština (Czech)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-cs_CZ" data-locale="cs_CZ" role="menuitem" lang="cs_CZ"> Čeština (Czech) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Dansk (Danish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-da_DK" data-locale="da_DK" role="menuitem" lang="da_DK"> Dansk (Danish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Deutsch (German)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-de_DE" data-locale="de_DE" role="menuitem" lang="de_DE"> Deutsch (German) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Ελληνικά (Greek)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-el_GR" data-locale="el_GR" role="menuitem" lang="el_GR"> Ελληνικά (Greek) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="English (English) selected" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link--selected" data-tracking-control-name="language-selector-en_US" data-locale="en_US" role="menuitem" lang="en_US"> <strong>English (English)</strong> </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Español (Spanish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-es_ES" data-locale="es_ES" role="menuitem" lang="es_ES"> Español (Spanish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="فارسی (Persian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-fa_IR" data-locale="fa_IR" role="menuitem" lang="fa_IR"> فارسی (Persian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Suomi (Finnish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-fi_FI" data-locale="fi_FI" role="menuitem" lang="fi_FI"> Suomi (Finnish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Français (French)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-fr_FR" data-locale="fr_FR" role="menuitem" lang="fr_FR"> Français (French) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="हिंदी (Hindi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-hi_IN" data-locale="hi_IN" role="menuitem" lang="hi_IN"> हिंदी (Hindi) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Magyar (Hungarian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-hu_HU" data-locale="hu_HU" role="menuitem" lang="hu_HU"> Magyar (Hungarian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Bahasa Indonesia (Indonesian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-in_ID" data-locale="in_ID" role="menuitem" lang="in_ID"> Bahasa Indonesia (Indonesian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Italiano (Italian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-it_IT" data-locale="it_IT" role="menuitem" lang="it_IT"> Italiano (Italian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="עברית (Hebrew)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-iw_IL" data-locale="iw_IL" role="menuitem" lang="iw_IL"> עברית (Hebrew) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="日本語 (Japanese)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ja_JP" data-locale="ja_JP" role="menuitem" lang="ja_JP"> 日本語 (Japanese) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="한국어 (Korean)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ko_KR" data-locale="ko_KR" role="menuitem" lang="ko_KR"> 한국어 (Korean) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="मराठी (Marathi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-mr_IN" data-locale="mr_IN" role="menuitem" lang="mr_IN"> मराठी (Marathi) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Bahasa Malaysia (Malay)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ms_MY" data-locale="ms_MY" role="menuitem" lang="ms_MY"> Bahasa Malaysia (Malay) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Nederlands (Dutch)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-nl_NL" data-locale="nl_NL" role="menuitem" lang="nl_NL"> Nederlands (Dutch) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Norsk (Norwegian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-no_NO" data-locale="no_NO" role="menuitem" lang="no_NO"> Norsk (Norwegian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="ਪੰਜਾਬੀ (Punjabi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-pa_IN" data-locale="pa_IN" role="menuitem" lang="pa_IN"> ਪੰਜਾਬੀ (Punjabi) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Polski (Polish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-pl_PL" data-locale="pl_PL" role="menuitem" lang="pl_PL"> Polski (Polish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Português (Portuguese)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-pt_BR" data-locale="pt_BR" role="menuitem" lang="pt_BR"> Português (Portuguese) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Română (Romanian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ro_RO" data-locale="ro_RO" role="menuitem" lang="ro_RO"> Română (Romanian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Русский (Russian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ru_RU" data-locale="ru_RU" role="menuitem" lang="ru_RU"> Русский (Russian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Svenska (Swedish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-sv_SE" data-locale="sv_SE" role="menuitem" lang="sv_SE"> Svenska (Swedish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="తెలుగు (Telugu)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-te_IN" data-locale="te_IN" role="menuitem" lang="te_IN"> తెలుగు (Telugu) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="ภาษาไทย (Thai)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-th_TH" data-locale="th_TH" role="menuitem" lang="th_TH"> ภาษาไทย (Thai) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Tagalog (Tagalog)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-tl_PH" data-locale="tl_PH" role="menuitem" lang="tl_PH"> Tagalog (Tagalog) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Türkçe (Turkish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-tr_TR" data-locale="tr_TR" role="menuitem" lang="tr_TR"> Türkçe (Turkish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Українська (Ukrainian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-uk_UA" data-locale="uk_UA" role="menuitem" lang="uk_UA"> Українська (Ukrainian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Tiếng Việt (Vietnamese)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-vi_VN" data-locale="vi_VN" role="menuitem" lang="vi_VN"> Tiếng Việt (Vietnamese) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="简体中文 (Chinese (Simplified))" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-zh_CN" data-locale="zh_CN" role="menuitem" lang="zh_CN"> 简体中文 (Chinese (Simplified)) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="正體中文 (Chinese (Traditional))" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-zh_TW" data-locale="zh_TW" role="menuitem" lang="zh_TW"> 正體中文 (Chinese (Traditional)) </button> </li> <!----> </ul> <button class="language-selector__button select-none relative pr-2 font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover hover:cursor-pointer focus:text-color-link-focus focus:outline-dotted focus:outline-1" aria-expanded="false" data-tracking-control-name="footer-lang-dropdown_trigger"> <span class="language-selector__label-text mr-0.5 break-words"> Language </span> <icon class="language-selector__label-chevron w-2 h-2 absolute top-0 right-0" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> </div> </li> </ul> <!----> </footer> <script src="https://static.licdn.com/aero-v1/sc/h/eh08muqvrde4h3hc6koyij5ti" async></script> <!----> <script src="https://static.licdn.com/aero-v1/sc/h/awgwgu3fg49q0tcvd24ku87qq" async defer></script> <script data-delayed-url="https://static.licdn.com/aero-v1/sc/h/81wy0f4hfrhoilx9eqdwg202z" data-module-id="media-player"></script> <code id="trackingData" style="display: none"><!--{"hashedCourseId":"x7gmhDi4j4iVU43WiGIZjkzHuoCnnmC8a6V4sCVmiBk=","urn":"urn:li:lyndaCourse:2255009","totalPrice":{"currencyCode":"HKD","amount":"249.99"}}--></code> <code id="alcOnlyData" style="display: none"><!--{"isAlcOnly":false,"canPurchaseCourse":true}--></code> </body> </html>