Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
  • Privacy Policy
JavaScript

JavaScript: Use ES6 Modules for Organized Code

- 07.07.26 - ErcanOPAK

📦 ES6 Modules = Organized Code

Global namespace is messy. ES6 modules organize code. Import/export, encapsulation, dependency management.

❌ Script Tags (Messy)

<script src="utils.js"></script>
<script src="app.js"></script>
// Global variables everywhere

✅ ES6 Modules (Clean)

<script type="module" src="app.js"></script>
// Import/export only what's needed

📝 Module Examples

// math.js (exports)
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
export const multiply = (a, b) => a * b;

export default function calculate(a, b, op) {
    switch(op) {
        case '+': return add(a, b);
        case '-': return subtract(a, b);
        case '*': return multiply(a, b);
        default: return 0;
    }
}

// utils.js (exports)
export function formatDate(date) {
    return date.toLocaleDateString();
}

export const PI = 3.14159;

// app.js (imports)
import calculate, { add, subtract, multiply } from './math.js';
import { formatDate, PI } from './utils.js';

// Use imported functions
console.log(add(5, 3)); // 8
console.log(calculate(5, 3, '*')); // 15
console.log(formatDate(new Date()));
console.log(PI);

// Rename imports
import { formatDate as dateFormatter } from './utils.js';

// Import all
import * as utils from './utils.js';
utils.formatDate(new Date());

// Dynamic import
const module = await import('./math.js');
console.log(module.add(5, 3));

🎯 Module Patterns

// Named exports vs Default
// user.js
export const User = class { /* ... */ };
export function createUser(name) { /* ... */ }
export default { createUser, User };

// Import with alias
import UserModule from './user.js';
const { createUser, User } = UserModule;

// Re-export
// index.js
export * from './math.js';
export { add as sum } from './math.js';

// Circular dependencies (avoid)
// a.js
import { b } from './b.js';
export const a = 'A';

// b.js
import { a } from './a.js';
export const b = 'B'; // Avoid this

// Module bundling
// webpack/rollup for production
// Tree shaking removes unused exports

💡 Benefits

  • Encapsulation (private scope)
  • Dependency management
  • Tree shaking (remove unused)
  • Cleaner code organization
  • Easier testing

“ES6 modules organize JavaScript. Clean imports, exports, dependencies. Essential for modern JS.”

— JavaScript Developer

Related posts:

How to change star rating color on mouseover/out, mouseenter/leave with Javascript

JavaScript — map() Without Return Creates Undefined Arrays

JavaScript Event Loop Misconceptions — Why setTimeout(fn, 0) Is NOT Instant

Post Views: 3

Post navigation

HTML: Implement Microdata for Semantic Web
Ajax: Master Error Handling in Async Requests

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (624)
  • Add Constraint to SQL Table to ensure email contains @ (590)
  • Average of all values in a column that are not zero in SQL (553)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (526)
  • Find numbers with more than two decimal places in SQL (468)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps
  • Photoshop: Fix a Color Profile Mismatch That Makes Printed Output Look Nothing Like What You Saw On Screen
  • WordPress: Fix Search Results That Return Pages From a Theme You Deactivated Months Ago
  • Visual Studio: Fix a Test Project That Builds Fine Alone but Fails to Discover Any Tests After a NuGet Restore
  • ASP.NET Core: Fix a File Upload That Times Out on Slow Connections Only Because Kestrel’s Minimum Data Rate Feature Kicked In
  • JavaScript: Fix an Array Destructuring Default Value That Silently Never Applies Because null Was Passed Instead of Undefined

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (973)
  • How to make theater mode the default for Youtube (953)
  • How to add default value for Entity Framework migrations for DateTime and Bool (939)
  • Get the First and Last Word from a String or Sentence in SQL (847)
  • How to select distinct rows in a datatable in C# (837)

Recent Posts

  • CSS: Fix a prefers-color-scheme Media Query That Gets Silently Overridden by a Browser Extension’s Forced Dark Mode
  • Git: Fix a Merge Commit That Silently Drops a File Because Both Branches Deleted It Differently
  • HTML5: Fix a Native Lazy-Loading Image That Never Loads Because It Sits Inside a Hidden Tab Until the User Clicks It
  • The AI Prompt That Traces a Null Reference Exception Back to the Exact Line That First Produced the Null
  • The AI Prompt That Turns a Gym Membership Contract’s Fine Print Into a Plain-English List of Cancellation Steps

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com