Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Understanding How Node.js Differs from Browser JavaScript
📖 Scenario: You are learning JavaScript and want to understand the differences between running JavaScript in a browser and running it in Node.js on your computer.
🎯 Goal: Create a simple Node.js script that shows how to use a Node.js-specific feature and a browser-specific feature separately, so you can see the difference clearly.
📋 What You'll Learn
Create a variable called message with the value 'Hello from Node.js'
Create a variable called isBrowser that checks if the global window object exists
Use an if statement to print message if running in Node.js (when isBrowser is false)
Add a comment explaining that window is only available in browsers
💡 Why This Matters
🌍 Real World
Developers often need to write JavaScript that works differently in browsers and Node.js environments. Detecting the environment helps run the right code.
💼 Career
Understanding environment differences is key for full-stack developers and anyone working with JavaScript outside the browser.
Progress0 / 4 steps
1
Create a message variable
Create a variable called message and set it to the string 'Hello from Node.js'.
Node.js
Hint
Use const to create a variable that does not change.
2
Check if running in a browser
Create a variable called isBrowser that is true if the global window object exists, otherwise false. Use typeof window !== 'undefined' to check.
Node.js
Hint
Use typeof to safely check if window exists without causing errors.
3
Print message only in Node.js
Write an if statement that prints message only if isBrowser is false (meaning the code runs in Node.js). Use console.log(message) inside the if block.
Node.js
Hint
Use !isBrowser to check if you are not in a browser.
4
Add a comment about window object
Add a comment above the isBrowser variable explaining that the window object is only available in browsers.
Node.js
Hint
Write a simple comment starting with // above the isBrowser line.
Practice
(1/5)
1. Which of the following is a key difference between Node.js and browser JavaScript?
easy
A. Browser JavaScript can run server-side code, but Node.js cannot.
B. Browser JavaScript can access databases directly, but Node.js cannot.
C. Node.js runs only inside web pages, while browser JavaScript runs on servers.
D. Node.js can access the file system, but browser JavaScript cannot.
Solution
Step 1: Understand environment capabilities
Node.js runs outside the browser and can access system resources like files.
Step 2: Compare browser limitations
Browser JavaScript runs inside web pages and cannot access the file system for security reasons.
Final Answer:
Node.js can access the file system, but browser JavaScript cannot. -> Option D
Quick Check:
File system access = Node.js only [OK]
Hint: Remember: Node.js can read files; browsers cannot [OK]
Common Mistakes:
Thinking browser JavaScript can access local files directly
Confusing server-side and client-side roles
Assuming Node.js runs inside web pages
2. Which syntax correctly imports the built-in 'fs' module in Node.js?
import fs from 'fs'; is ES module syntax, which requires special setup; var fs = fetch('fs'); and let fs = import('fs'); are invalid for module import.
Hint: Use require() to import built-in modules in Node.js [OK]
Common Mistakes:
Using browser import syntax without Node.js ES module setup
Confusing fetch() with module import
Trying to use import() as a variable assignment
3. What will the following Node.js code output?
console.log(typeof window);
medium
A. "undefined"
B. "object"
C. "function"
D. "null"
Solution
Step 1: Understand the 'window' object context
The 'window' object exists in browsers as the global object for the page.
Step 2: Check Node.js global objects
Node.js does not have a 'window' object, so it is undefined.
Final Answer:
"undefined" -> Option A
Quick Check:
window in Node.js = undefined [OK]
Hint: window is browser-only; Node.js has no window [OK]
Common Mistakes:
Assuming window exists in Node.js
Confusing global and window objects
Expecting 'object' type for window in Node.js
4. Identify the error in this Node.js code snippet:
import fs from 'fs';
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
medium
A. The file path must be absolute, not relative.
B. readFileSync requires a callback function.
C. Using import without enabling ES modules causes a syntax error.
D. console.log cannot print file contents.
Solution
Step 1: Check import syntax in Node.js
By default, Node.js uses CommonJS; import requires ES module setup or .mjs extension.
Step 2: Validate readFileSync usage
readFileSync is synchronous and does not need a callback.
Final Answer:
Using import without enabling ES modules causes a syntax error. -> Option C
Quick Check:
import needs ES module setup in Node.js [OK]
Hint: Use require() or enable ES modules for import [OK]
Common Mistakes:
Thinking readFileSync needs a callback
Assuming relative paths always cause errors
Believing console.log can't print strings
5. You want to write a Node.js script that reads a file and sends its content to a web page. Which approach correctly uses Node.js features to do this?
hard
A. Use Node.js to read the file with 'fs', then serve it via an HTTP server module.
B. Use browser JavaScript to read the file directly and send it to the server.
C. Use Node.js to run code inside the browser to access the file system.
D. Use browser JavaScript to create an HTTP server and read files.
Solution
Step 1: Understand Node.js capabilities
Node.js can read files using 'fs' and create servers using 'http' or similar modules.
Step 2: Identify correct client-server roles
Browser JavaScript cannot read files directly from disk or create servers; Node.js handles server tasks.
Final Answer:
Use Node.js to read the file with 'fs', then serve it via an HTTP server module. -> Option A
Quick Check:
Node.js reads files and serves content [OK]
Hint: Node.js handles files and servers; browsers handle UI [OK]
Common Mistakes:
Expecting browser JS to read local files without user action