рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!рдореИрдВ рдЖрдкрдХреЛ рдбрд┐рдХреНрд╕рди рдХреЗ рд▓реЗрдЦ "рдЕрдВрдбрд░рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ (рд╕рднреА) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЙрдкрдХрд░рдг" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ редрдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдХреЛрдб рдХреЛ рднрд╛рдЧреЛрдВ, рддрд╛рд░реНрдХрд┐рдХ рдпрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдмреНрд▓реЙрдХ (рдореЙрдбреНрдпреВрд▓) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╢реБрд░реВ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрджрдп рд╣реБрдЖ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕, рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдЯреВрд▓ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИредIIFE рдореЙрдбреНрдпреВрд▓: JS рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ
рдЬреЗрдПрд╕ рдореЗрдВ рдПрдХ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ, рд╣рдо рдЗрд╕реЗ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдкрд░ рд▓реЛрдб рдХреА рдЧрдИ рд╕рднреА рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдРрд╕рд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛:
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
increase()
reset()
рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдкреНрд░рджреВрд╖рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: (() => {
let count = 0
})
рд╡реЛрдЗрд▓рд╛, рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредIIFE: рддрддреНрдХрд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП f
, рдЗрд╕реЗ ()
рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП f()
ред рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (() => {})
рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ()
ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (() => {})()
: (() => {
let count = 0
})()
рдЗрд╕реЗ IIFE (рддреБрд░рдВрдд рдлрд╝рдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const iifeCounterModule = (() => {
let count = 0
return {
increase: () => ++count,
reset: () => {
count = 0
console.log(' .')
}
}
})()
iifeCounterModule.increase()
iifeCounterModule.reset()
рд╣рдо IIFE рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдпрд╛рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╣реИ - рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо (рдпрд╛ рдЗрд╕рдХреЗ рдирд╛рдо рд╕реНрдерд╛рди)ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рдЗрд╕реЗ (рдирд┐рд░реНрдпрд╛рдд) рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ JS рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредрдЖрдпрд╛рдд рдХреА рдЕрд╢реБрджреНрдзрддрд╛
рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореЙрдбреНрдпреВрд▓рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░ рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╣реИред рдЖрд╢реНрд░рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const iifeCounterModule = ((dependencyModule1, dependencyModule2) => {
let count = 0
return {
increase: () => ++count,
reset: () => {
count = 0
console.log(' .')
}
}
})(dependencyModule1, dependencyModule2)
JQuery рдЬреИрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдиреЗ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ (jQuery рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг UMD рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)редрдУрдкрди рдореЙрдбреНрдпреВрд▓: рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЦреЛрд▓реЗрдВ
рдЦреБрд▓рд╛ рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдИрд╕рд╛рдИ рд╣реЗрдЗрд▓реНрдорди рджреНрд╡рд╛рд░рд╛ рдЧрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЯреЗрдореНрдкреНрд▓реЗрдЯ IIFE рднреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдкрд░ рдЬреЛрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
const revealingCounterModule = (() => {
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
return {
increase,
reset
}
})()
revealingCounterModule.increase()
revealingCounterModule.reset()
рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреНрдпрд╛ (рдпрд╛ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИредCJS рдореЙрдбреНрдпреВрд▓: CommonJS рдореЙрдбреНрдпреВрд▓ рдпрд╛ Node.js рдореЙрдбреНрдпреВрд▓
рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░рдЬреЗрдПрд╕ рдирд╛рдордХ рдХреЙрдордирдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИред рдпрд╣ Node.js. рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ JS рдлрд╝рд╛рдЗрд▓ CJS рд╣реИред рдЪрд░ module
рднреА exports
рдореЙрдбреНрдпреВрд▓ (рдлрд╝рд╛рдЗрд▓) рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди require
рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб CommonJS рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
const dependencyModule1 = require('./dependencyModule1')
const dependencyModule2 = require('./dependencyModule2')
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
exports.increase = increase
exports.reset = reset
module.exports = {
increase,
reset
}
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
const {
increase,
reset
} = require('./commonJSCounterModule')
increase()
reset()
const commonJSCounterModule = require('./commonJSCounterModule')
commonJSCounterModule.increase()
commonJSCounterModule.reset()
Node.js рд░рдирдЯрд╛рдЗрдо (рдЗрдВрдЬрди) рдореЗрдВ, рдЗрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рдкреЗрдЯрдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪрд░ exports, module
рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ require
:
(function(exports, require, module, __filename, __dirname) {
const dependencyModule1 = require('./dependencyModule1')
const dependencyModule2 = require('./dependencyModule2')
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
module.exports = {
increase,
reset
}
return module.exports
}).call(thisValue, exports, require, module, filename, dirname)
(function(exports, require, module, __filename, __dirname) {
const commonJSCounterModule = require('./commonJSCounterModule')
commonJSCounterModule.increase()
commonJSCounterModule.reset()
}).call(thisValue, exports, require, module, filename, dirname)
рдПрдПрдордбреА рдореЙрдбреНрдпреВрд▓ рдпрд╛ рд░рд┐рдХреНрдЬреЗрд╕реНрдЯ рдореЙрдбреНрдпреВрд▓
AMD ( рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ ) рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдПрдордбреА рдореЗрдВ рдПрдХ define
рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдирд╛рдо рдФрд░ рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
define('amdCounterModule', ['dependencyModule1', 'dependencyModule2'], (dependencyModule1, dependencyModule2) => {
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
return {
increase,
reset
}
})
рдЗрд╕рдореЗрдВ require
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ :
require(['amdCounterModule'], amdCounterModule => {
amdCounterModule.increase()
amdCounterModule.reset()
})
require
AMD require
CommonJS рд╕реЗ рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИредрдЧрддрд┐рд╢реАрд▓ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ
рдлрд╝рдВрдХреНрд╢рди define
рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдп рднреА рд╣реИред рдпрд╣ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ рдФрд░ require
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдордирдЬрд╕-рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
define(require => {
const dynamicDependencyModule1 = require('dependencyModule1')
const dynamicDependencyModule2 = require('dependencyModule2')
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
return {
increase,
reset
}
})
рдХреЙрдорди рдЬреЗрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдПрдордбреА рдореЙрдбреНрдпреВрд▓
рдЙрдкрд░реЛрдХреНрдд рдлрд╝рдВрдХреНрд╢рди define
, рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд require
, рдЪрд░ exports
рдФрд░ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ module
ред рдЗрд╕рд▓рд┐рдП, define
CommonJS рдХреЗ рдХреЛрдб рдХреЛ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ :
define((require, exports, module) => {
const dependencyModule1 = require('dependencyModule1')
const dependencyModule2 = require('dependencyModule2')
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
exports.increase = increase
exports.reset = reset
})
define(require => {
const counterModule = require('amdCounterModule')
counterModule.increase()
counterModule.reset()
})
UMD рдореЙрдбреНрдпреВрд▓: рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдпрд╛ UmdJS рдореЙрдбреНрдпреВрд▓
рдпреВрдПрдордбреА ( рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ ) - рд╡рд┐рднрд┐рдиреНрди рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯредAMD (рдЖрд╡рд╢реНрдпрдХрддрд╛) рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП UMD
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рджреЛрдиреЛрдВ AMD (рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ) рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
((root, factory) => {
if (typeof define === 'function' && define.amd) {
define('umdCounterModule', ['dependencyModule1', 'dependencyModule2'], factory)
} else {
root.umdCounterModule = factory(root.dependencyModule1, root.dependencyModule2)
}
})(typeof self !== undefined ? self : this, (dependencyModule1, dependencyModule2) => {
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' ')
}
return {
increase,
reset
}
})
рдпрд╣ рдЬрдЯрд┐рд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл IIFE рд╣реИред рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ define
рдПрдПрдордбреА / рд░рд┐рдХреНрдЬреЗрдЬреЗрдПрд╕ рд╕реЗ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рд╣реИред- рдпрджрд┐
define
рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлреИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред - рдпрджрд┐
define
рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдлреИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реАрдзреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рддрд░реНрдХ root
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ (рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг) рд╕реЗ рдирд┐рд░реНрднрд░ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ factory
рдореЙрдбреНрдпреВрд▓ рд▓реМрдЯрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ (рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐) рднреА рдмрди рдЬрд╛рддрд╛ рд╣реИред
рдПрдПрдордбреА рдХреЗ рд▓рд┐рдП рдпреВрдПрдордбреА (рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ) рдФрд░ рдХреЙрдордирдЬрд╕ (рдиреЛрдб.рдЬреЗрдПрд╕)
рдирд┐рдореНрди рдХреЛрдб AMD (рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ) рдФрд░ рдХреЙрдордирдЬ (Node.js) рджреЛрдиреЛрдВ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред (define => define((require, exports, module) => {
const dependencyModule1 = require("dependencyModule1")
const dependencyModule2 = require("dependencyModule2")
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log("Count is reset.")
}
module.export = {
increase,
reset
}
}))(
typeof module === 'object' && module.exports && typeof define !== 'function'
?
factory => module.exports = factory(require, exports, module)
:
define)
рдбрд░рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕рд┐рд░реНрдл IIFE рд╣реИред рдЬрдм рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рддрд░реНрдХ "рдореВрд▓реНрдпрд╛рдВрдХрди" рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдирд╛ (рд╡реИрд░рд┐рдПрдмрд▓ module
рдФрд░ рдХреЙрдордирдЬреЗрд╕ / рдиреЛрдбреНрд╕.рдЬреЗрдПрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ exports
, рдФрд░ define
рдПрдПрдордбреА / рд░рд┐рдХреНрдЬреЗрдЬреЗрдПрд╕ рдХреЗ рдХрд╛рд░реНрдп)ред- рдпрджрд┐ рд░рдирдЯрд╛рдЗрдо CommonJS / Node.js рд╣реИ, рддреЛ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ
define
ред - рдпрджрд┐ рд░рдирдЯрд╛рдЗрдо AMD / рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддрд░реНрдХ
define
рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ define
ред рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ define
ред
ES рдореЙрдбреНрдпреВрд▓: ECMAScript2015 рдпрд╛ ES6 рдореЙрдбреНрдпреВрд▓
2015 рдореЗрдВ, рдЬреЗрдПрд╕ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 6 рдиреЗ рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд┐рдпрд╛ред рдЗрд╕реЗ ECMAScript 2015 (ES2015) рдпрд╛ ECMAScript 6 (ES6) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЖрдзрд╛рд░ рдХреАрд╡рд░реНрдб import
рдФрд░ рд╣реИ export
ред рдирд┐рдореНрди рдХреЛрдб рдирд╛рдо рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП ES рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
import dependencyModule1 from './dependencyModule1.mjs'
import dependencyModule2 from './dependencyModule2.mjs'
let count = 0
export const increase = () => ++count
export const reset = () => {
count = 0
console.log(' .')
}
export default {
increase,
reset
}
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреИрдЧ рдЬреЛрдбрд╝реЗрдВ <script>
рдФрд░ рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдиреЗрдВ <script type="module" src="esCounterModule.js"></script>
:ред Node.js рдореЗрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓реЗрдВ .mjs
:
import {
increase,
reset
} from './esCounterModule.mjs'
increase()
reset()
import esCounterModule from './esCounterModule.mjs'
esCounterModule.increase()
esCounterModule.reset()
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк <script>
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреИрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ nomodule
: <рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╛рдорд╛рдВрдХрд┐рдд>
рдЪреЗрддрд╛рд╡рдиреА ('рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ')
</ Script>
ES рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЙрдбреНрдпреВрд▓: ECMAScript2020 рдпрд╛ ES11 рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЙрдбреНрдпреВрд▓
рдЬреЗрдПрд╕ 2020 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдирд╡реАрдирддрдо 11 рд╕рдВрд╕реНрдХрд░рдг import
рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ then
:
import('./esCounterModule.js').then(({
increase,
reset
}) => {
increase()
reset()
})
import('./esCounterModule.js').then(dynamicESCounterModule => {
dynamicESCounterModule.increase()
dynamicESCounterModule.reset()
})
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдлрд╝рдВрдХреНрд╢рди import
рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ await
:
(async () => {
const {
increase,
reset
} = await import('./esCounterModule.js')
increase()
reset()
const dynamicESCounterModule = await import('./esCounterModule.js')
dynamicESCounterModule.increase()
dynamicESCounterModule.reset()
})
рд╕рд┐рд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓: SystemJS рдореЙрдбреНрдпреВрд▓
SystemJS рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ ES рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЙрдбреНрдпреВрд▓ ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
import dependencyModule1 from "./dependencyModule1.js"
import dependencyModule2 from "./dependencyModule2.js"
dependencyModule1.api1()
dependencyModule2.api2()
let count = 0
export const increase = function() {
return ++count
}
export const reset = function() {
count = 0
console.log("Count is reset.")
}
export default {
increase,
reset
}
рдпрд╣ рдХреЛрдб рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди System.register
SystemJS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реИ:
System.register(['./dependencyModule1', './dependencyModule2'], function(exports_1, context_1) {
'use strict'
var dependencyModule1_js_1, dependencyModule2_js_1, count, increase, reset
var __moduleName = context_1 && context_1.id
return {
setters: [
function(dependencyModule1_js_1_1) {
dependencyModule1_js_1 = dependencyModule1_js_1_1
},
function(dependencyModule2_js_1_1) {
dependencyModule2_js_1 = dependencyModule2_js_1_1
}
],
execute: function() {
dependencyModule1_js_1.default.api1()
dependencyModule2_js_1.default.api2()
count = 0
exports_1('increase', increase = function() {
return ++count
})
exports_1('reset', reset = function() {
count = 0
console.log(' .')
})
exports_1('default', {
increase,
reset
})
}
}
})
рдирдпрд╛ рдореЙрдбреНрдпреВрд▓рд░ ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХреЛрдб рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓реАрдХреЗрд╢рди рд╡реЗрдмрдкреИрдХ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЧрддрд┐рд╢реАрд▓ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ
SystemJS рдореЗрдВ import
рдбрд╛рдпрдиреЗрдорд┐рдХ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИ :
System.import('./esCounterModule.js').then(dynamicESCounterModule => {
dynamicESCounterModule.increase()
dynamicESCounterModule.reset()
})
рд╡реЗрдмрдкреИрдХ рдореЙрдбреНрдпреВрд▓: рд╕реАрдЬреЗрдПрд╕, рдПрдПрдордбреА рдФрд░ рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдХрд▓рди рдФрд░ рд╕рдВрдпреЛрдЬрди
рд╡реЗрдмрдкреИрдХ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрд┐рд▓реНрдбрд░ рд╣реИред рдЗрд╕рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкреЙрдЗрд▓рд░ CommonJS, AMD рдФрд░ ES рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд╣реА рд╕рдВрддреБрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдХреЛрдб рдХреЛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдлрд╛рдЗрд▓ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 3 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, 3 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
define('amdDependencyModule1', () => {
const api1 = () => {}
return {
api1
}
})
const dependencyModule2 = require('./commonJSDependencyModule2')
const api2 = () => dependencyModule1.api1()
exports.api2 = api2
import dependencyModule1 from './amdDependencyModule1'
import dependencyModule2 from './commonJSDependencyModule2'
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
export default {
increase,
reset
}
рдирд┐рдореНрди рдХреЛрдб рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
import counterModule from './esCounterModule'
counterModule.increase()
counterModule.reset()
рд╡реЗрдмрдкреИрдХ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ, рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ main.js
: рдЬрдбрд╝
рдЬрд┐рд▓реЗ
main.js (src рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЕрд╕реЗрдВрдмрд▓реА)
src
amdDependencyModule1.js
commonJSDependencyModule2.js
esCounterModule.js
index.js
webpack.config.js
рдЪреВрдВрдХрд┐ Webpack Node.js рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ CommonJS рдХреЗ рдореЙрдбреНрдпреВрд▓рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрди webpack.config.js
: const path = require('path')
module.exports = {
entry: './src/index.js',
mode: 'none',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist'),
},
}
рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рд╣реЛрдВрдЧреЗ: npm рд╡реЗрдмрдкреИрдХ webpack-cli -save-dev рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
npx рд╡реЗрдмрдкреИрдХ --config webpack.config.js
рдирддреАрдЬрддрди, рд╡реЗрдмрдкреИрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдЧрд╛ main.js
ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб main.js
рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: (function(modules) {
var installedModules = {}
function require(moduleId) {
if (installedModules[moduleId]) {
return installedModules[moduleId].exports
}
var module = installedModules[moduleId] = {
i: moduleId,
l: false,
exports: {}
}
modules[moduleId].call(module.exports, module, module.exports, require)
module.l = true
return module.exports
}
require.m = modules
require.c = installedModules
require.d = function(exports, name, getter) {
if (!require.o(exports, name)) {
Object.defineProperty(exports, name, {
enumerable: true,
get: getter
})
}
}
require.r = function(exports) {
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
Object.defineProperty(exports, Symbol.toStringTag, {
value: 'Module'
})
}
Object.defineProperty(exports, '__esModule', {
value: true
})
}
require.t = function(value, mode) {
if (mode & 1) value = require(value)
if (mode & 8) return value
if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value
var ns = Object.create(null)
require.r(ns)
Object.defineProperty(ns, 'default', {
enumerable: true,
value: value
})
if (mode & 2 && typeof value !== 'string')
for (var key in value) require.d(ns, key, function(key) {
return value[key]
}.bind(null, key))
return ns
}
require.n = function(module) {
var getter = module && module.__esModule ?
function getDefault() {
return module['default']
} :
function getModuleExports() {
return module
}
require.d(getter, 'a', getter)
return getter
}
require.o = function(object, property) {
return Object.prototype.hasOwnProperty.call(object, property)
}
require.p = ''
return require(require.s = 0)
})([
function(module, exports, require) {
'use strict'
require.r(exports)
var esCounterModule = require(1)
esCounterModule['default'].increase()
esCounterModule['default'].reset()
},
function(module, exports, require) {
'use strict'
require.r(exports)
var amdDependencyModule1 = require.n(require(2))
var commonJSDependencyModule2 = require.n(require(3))
amdDependencyModule1.a.api1()
commonJSDependencyModule2.a.api2()
let count = 0
const increase = () => ++count
const reset = () => {
count = 0
console.log(' .')
}
exports['default'] = {
increase,
reset
}
},
function(module, exports, require) {
var result!(result = (() => {
const api1 = () => {}
return {
api1
}
}).call(exports, require, exports, module),
result !== undefined && (module.exports = result))
},
function(module, exports, require) {
const dependencyModule1 = require(2)
const api2 = () => dependencyModule1.api1()
exports.api2 = api2
}
])
рдФрд░ рдлрд┐рд░, рдпрд╣ рд╕рд┐рд░реНрдл IIFE рд╣реИред 4 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдХреЛрдб рдХреЛ 4 рдлрд╝рдВрдХреНрд╢рди рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рд╕рд░рдгреА рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИредрдмреИрдмрд▓ рдореЙрдбреНрдпреВрд▓: ES рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓реАрдХреЗрд╢рди
рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ ES6 + рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдмреЗрд▓ рдПрдХ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯрд░ рд╣реИред рдЙрдкрд░реЛрдХреНрдд ES6 + рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдмрд╛рдмреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Object.defineProperty(exports, '__esModule', {
value: true
})
exports['default'] = void 0
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
'default': obj
}
}
var dependencyModule1 = _interopRequireDefault(require('./amdDependencyModule1'))
var dependencyModule2 = _interopRequireDefault(require('./commonJSDependencyModule2'))
dependencyModule1['default'].api1()
dependencyModule2['default'].api2()
var count = 0
var increase = function() {
return ++count
}
var reset = function() {
count = 0
console.log(' .')
}
exports['default'] = {
increase: increase,
reset: reset
}
рдФрд░ рдпрд╣рд╛рдБ index.js
рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╣реИ :
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
'default': obj
}
}
var esCounterModule = _interopRequireDefault(require('./esCounterModule.js'))
esCounterModule['default'].increase()
esCounterModule['default'].reset()
рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдмреИрдмреЗрд▓ рдХреЛ рдпрд╣ рднреА рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИредрдмреИрдмреЗрд▓ рдФрд░ рд╕рд┐рд╕реНрдЯрдордЬреЗрдПрд╕
SystemJS рдХреЛ рдмреИрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: npm install --save-dev @ babel / plugin-transform-рдореЙрдбреНрдпреВрд▓-systemjs
рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП babel.config.json
: {
'рдкреНрд▓рдЧрдЗрдиреНрд╕': ['@ babel / рдкреНрд▓рдЧрдЗрди-рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо-рдореЙрдбреНрдпреВрд▓реНрд╕-рд╕рд┐рд╕реНрдЯрдордЬ'],
'рдкреНрд░реАрд╕реЗрдЯ': [
[
'@ babel / env',
{
'рд▓рдХреНрд╖реНрдп': {
'рдЕрд░реНрдерд╛рдд': '11'
}
}
]
]
}
рдЕрдм Babel SystemJS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ CommonJS / Node.js, AMD / рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдФрд░ ES рдореЙрдбреНрдпреВрд▓ npx рдмреЗрдмрд▓ src --out-dir lib
рдкрд░рд┐рдгрд╛рдо: рдЬрдбрд╝
lib
amdD dependencyModule1.js (SystemJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкреЗрдб)
commonJSD dependencyModule2.js (SystemJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рдб)
esCounterModule.js (SystemJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкреЛрдВрдб)
index.js (SystemJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рдб)
src
amdDependencyModule1.js
commonJSDependencyModule2.js
esCounterModule.js
index.js
babel.config.json
AMD, CommonJS рдФрд░ ES рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреВрд░реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ SystemJS рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
System.register([], function(_export, _context) {
'use strict'
return {
setters: [],
execute: function() {
define('amdDependencyModule1', () => {
const api1 = () => {}
return {
api1
}
})
}
}
})
System.register([], function(_export, _context) {
'use strict'
var dependencyModule1, api2
return {
setters: [],
execute: function() {
dependencyModule1 = require('./amdDependencyModule1')
api2 = () => dependencyModule1.api1()
exports.api2 = api2
}
}
})
System.register(['./amdDependencyModule1', './commonJSDependencyModule2'], function(_export, _context) {
var dependencyModule1, dependencyModule2, count, increase, reset
return {
setters: [function(_amdDependencyModule) {
dependencyModule1 = _amdDependencyModule.default
}, function(_commonJSDependencyModule) {
dependencyModule2 = _commonJSDependencyModule.default
}],
execute: function() {
dependencyModule1.api1()
dependencyModule1.api2()
count = 0
increase = () => ++count
reset = () => {
count = 0
console.log(' .')
}
_export('default', {
increase,
reset
})
}
}
})
System.register(['./esCounterModule'], function(_export, _context) {
var esCounterModule
return {
setters: [function(_esCounterModule) {
esCounterModule = _esCounterModule.default
}],
execute: function() {
esCounterModule.increase()
esCounterModule.reset()
}
}
})
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓: CJS, AMD, ES рдФрд░ SystemJS рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓реАрдХреЗрд╢рди
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдИрдПрд╕ 6 рд╕рд╣рд┐рдд рдЬреЗрдПрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рднреА рд╕реНрд╡рд╛рджреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд┐рдХреЗрдЯреЗрд╢рди рдХреЗ рджреМрд░рд╛рди, ES6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рджреВрд╕рд░реЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдЬреЗрд▓реЗрд╢рди рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ CommonJS / Node.js, AMD / NeedJS, UMD / UmdJS рдпрд╛ SystemJS рд╢рд╛рдорд┐рд▓ рд╣реИрдВ tsconfig.json
: {
'рд╕рдВрдХрд▓рдХ': {
'рдореЙрдбреНрдпреВрд▓': 'ES2020' // рдХреЛрдИ рдирд╣реАрдВ, рдХреЙрдордирдЬрд╕, рдПрдПрдордбреА, рд╕рд┐рд╕реНрдЯрдо,
UMD, ES6, ES2015, ESNext
}
}
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
import dependencyModule from './dependencyModule'
dependencyModule.api()
let count = 0
export const increase = function() {
return ++count
}
var __importDefault = (this && this.__importDefault) || function(mod) {
return (mod && mod.__esModule) ? mod : {
'default': mod
}
}
exports.__esModule = true
var dependencyModule_1 = __importDefault(require('./dependencyModule'))
dependencyModule_1['default'].api()
var count = 0
exports.increase = function() {
return ++count
}
var __importDefault = (this && this.__importDefault) || function(mod) {
return (mod && mod.__esModule) ? mod : {
'default': mod
}
}
define(['require', 'exports', './dependencyModule'], function(require, exports, dependencyModule_1) {
'use strict'
exports.__esModule = true
dependencyModule_1 = __importDefault(dependencyModule_1)
dependencyModule_1['default'].api()
var count = 0
exports.increase = function() {
return ++count
}
})
var __importDefault = (this & this.__importDefault) || function(mod) {
return (mod && mod.__esModule) ? mod : {
'default': mod
}
}
(function(factory) {
if (typeof module === 'object' && typeof module.exports === 'object') {
var v = factory(require, exports)
if (v !== undefined) module.exports = v
} else if (typeof define === 'function' && define.amd) {
define(['require', 'exports', './dependencyModule'], factory)
}
})(function(require, exports) {
'use strict'
exports.__esModule = true
var dependencyModule_1 = __importDefault(require('./dependencyModule'))
dependencyModule_1['default'].api()
var count = 0
exports.increase = function() {
return ++count
}
})
System.register(['./dependencyModule'], function(exports_1, context_1) {
'use strict'
var dependencyModule_1, count, increase
car __moduleName = context_1 && context_1.id
return {
setters: [
function(dependencyModule_1_1) {
dependencyModule_1 = dependencyModule_1_1
}
],
execute: function() {
dependencyModule_1['default'].api()
count = 0
exports_1('increase', increase = function() {
return ++count
})
}
}
})
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдореЙрдбреНрдпреВрд▓рд░ ES рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредрдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдирд╛рдо рд╕реНрдерд╛рди
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреАрд╡рд░реНрдб module
рдФрд░ рднреА рд╣реЛрддреЗ рд╣реИрдВ namespace
ред рдЙрдиреНрд╣реЗрдВ рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: module Counter {
let count = 0
export const increase = () => ++count
export const reset = () => {
count = 0
console.log(' .')
}
}
namespace Counter {
let count = 0
export const increase = () => ++count
export const reset = () => {
count = 0
console.log(' .')
}
}
рджреЛрдиреЛрдВ рдХреЛ рдЬреЗрдПрд╕ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: var Counter;
(function(Counter) {
var count = 0
Counter.increase = function() {
return ++count
}
Counter.reset = function() => {
count = 0
console.log(' .')
}
})(Counter || (Counter = {}))
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреЗ рдХрдИ рд╕реНрддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ .
: module Counter.Sub {
let count = 0
export const increase = () => ++count
}
namespace Counter.Sub {
let count = 0
export const increase = () => ++count
}
рдЙрдк рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдк рдирд╛рдо рд╕реНрдерд╛рди рд╡рд╕реНрддреБ рдЧреБрдгреЛрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВ: var Counter;
(function(Counter) {
var Sub;
(function(Sub) {
var count = 0
Sub.increase = function() {
return ++count
}
})(Sub = Counter.Sub || (Counter.Sub = {}))
})(Counter || (Counter = {}))
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ export
: module Counter {
let count = 0
export module Sub {
export const increase = () => ++count
}
}
module Counter {
let count = 0
export namespace Sub {
export const increase = () => ++count
}
}
рдЙрдкрд░реНрдпреБрдХреНрдд рдХреЛрдб рдЙрдк рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдк рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рднреА рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ: var Counter;
(function(Counter) {
var count = 0
var Sub;
(function(Sub) {
Sub.increase = function() {
return ++count
}
})(Sub = Counter.Sub || (Counter.Sub = {}))
})(Counter || (Counter = {}))
рдирд┐рд╖реНрдХрд░реНрд╖
JS рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 10+ рд╕рд┐рд╕реНрдЯрдо / рдореЙрдбреБрд▓рди рдкреНрд░рд╛рд░реВрдк / рдирд╛рдорд╕реНрдерд╛рди рд╣реИрдВ:- IIFE рдореЙрдбреНрдпреВрд▓: JS рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ
- рдУрдкрди рдореЙрдбреНрдпреВрд▓: рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЦреЛрд▓реЗрдВ
- CJS рдореЙрдбреНрдпреВрд▓: CommonJS рдореЙрдбреНрдпреВрд▓ рдпрд╛ Node.js рдореЙрдбреНрдпреВрд▓
- рдПрдПрдордбреА рдореЙрдбреНрдпреВрд▓: рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЙрдбреНрдпреВрд▓
- UMD рдореЙрдбреНрдпреВрд▓: рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдпрд╛ UmdJS рдореЙрдбреНрдпреВрд▓
- ES рдореЙрдбреНрдпреВрд▓: ECMAScript2015 рдпрд╛ ES6 рдореЙрдбреНрдпреВрд▓
- ES рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЙрдбреНрдпреВрд▓: ECMAScript2020 рдпрд╛ ES11 рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЙрдбреНрдпреВрд▓
- рд╕рд┐рд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓: SystemJS рдореЙрдбреНрдпреВрд▓
- рд╡реЗрдмрдкреИрдХ рдореЙрдбреНрдпреВрд▓: рд╕реАрдЬреЗрдПрд╕, рдПрдПрдордбреА рдФрд░ рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдХрд▓рди рдФрд░ рд╕рдВрдпреЛрдЬрди
- рдмреИрдмрд▓ рдореЙрдбреНрдпреВрд▓: ES рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЯреНрд░рд╛рдВрд╕рдкреНрд▓реАрдХреЗрд╢рди
- рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдирд╛рдо рд╕реНрдерд╛рди
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЬреЗрдПрд╕ рдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Node.js рдФрд░ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдг рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирдП рдореЙрдбреНрдпреВрд▓рд░ ES рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ Webpack / Babel / SystemJS / TypeScript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЧрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред