प्रौद्योगिकी साझेदारी

JS [विस्तृत व्याख्या] ES6 मॉड्यूल विनिर्देश बनाम CommonJS मॉड्यूल विनिर्देश

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

प्रत्येकं js सञ्चिका एकः मॉड्यूल् अस्ति, तथा च CommonJS मॉड्यूल् विनिर्देशः पूर्वनिर्धारितरूपेण स्वीकृतः अस्ति ।

उभरते ES6 मॉड्यूल pk पारम्परिक CommonJS मॉड्यूल

लक्षणम्सामान्यJSES6 मॉड्यूलरता
निर्यातexports वस्तुexport कीवर्ड
आयातrequire()नियोगimport कीवर्ड
लोडिंग् मोड्समन्वयनम्अतुल्यकालिकः
निष्पादनविधिःएकलटनएकलटन
आश्रयाःस्थिरःगतिशीलः
वृक्षाकारः कम्पितःन समर्थनम्समर्थनम्‌

लोडिंग् मोड्

  • CommonJS समकालिकं भवति, यावत् मॉड्यूल् लोड् न भवति तावत् कोड् निष्पादनं स्थगयति ।
  • ES6 मॉड्यूल् अतुल्यकालिकाः सन्ति, कोडः निष्पादनं निरन्तरं कर्तुं शक्नोति यदा मॉड्यूलः पश्चात् लोड् भविष्यति ।

निष्पादनविधिः

CommonJS तथा ES6 मॉड्यूलयोः निष्पादनं एकलम् अस्ति: मॉड्यूल् केवलं एकवारं लोड् भविष्यति, मॉड्यूलस्य सर्वे सन्दर्भाः च समानं उदाहरणं सूचयिष्यन्ति ।

आश्रयाः

  • CommonJS स्थिरं भवति तथा च संकलनसमये मॉड्यूलनिर्भरता निर्धारिता भवति ।
  • ES6 मॉड्यूल् गतिशीलाः भवन्ति तथा च मॉड्यूल् निर्भरताः रनटाइम् इत्यत्र निर्धारिताः भवन्ति

वृक्षाकारः कम्पितः

जावास्क्रिप्ट् बण्डल् तः अप्रयुक्तं कोडं निष्कासयितुं अनुकूलनप्रविधिः ।

  • CommonJS वृक्षकम्पनस्य समर्थनं न करोति, मॉड्यूलेषु अप्रयुक्तः कोडः अपि लोड् भविष्यति ।
  • ES6 मॉड्यूलरता वृक्षकम्पनस्य समर्थनं करोति, यत् स्वयमेव संकुलस्य आकारं न्यूनीकर्तुं अप्रयुक्तं कोडं निष्कासयति ।

ES6 मॉड्यूल् सक्षमीकरणस्य त्रयः उपायाः

  1. package.json सञ्चिकायां सेट् कुर्वन्तु "type": "module", अतः Node.js सर्वाणि .js सञ्चिकाः ES6 मॉड्यूल् इव व्यवहरति ।
  2. सञ्चिकाविस्तारं परिवर्तयन्तु .mjs, येन Node.js स्वयमेव ES6 मॉड्यूल् इत्यस्य रूपेण व्यवहारं करिष्यति ।
  3. स्क्रिप्ट् टैग् इत्यत्र योजयन्तु type="module" गुणाः

ES6 मॉड्यूल वाक्य रचना

पूर्वनिर्धारित निर्यात आयात निर्यात पूर्वनिर्धारित

प्रत्येकं मॉड्यूल् केवलं एकं पूर्वनिर्धारितं निर्यातं कर्तुं शक्नोति

let a = 1
// 默认导出 a
export default a
  • 1
  • 2
  • 3
// 导入默认时,可以命其他名称
import b from './demo.js'

console.log(b)
  • 1
  • 2
  • 3
  • 4

फंक्शन् एक्सप्रेशन्स्/अनामिकान् फंक्शन्स् प्रत्यक्षतया पूर्वनिर्धारितनिर्यातरूपेण उपयोक्तुं शक्यन्ते

export default function myFunc() {}
  • 1
export default function() {}
  • 1

निर्यातं आयातं च बहु निर्यातं { } .

let a = 1
let b = 2

export { a, b }
  • 1
  • 2
  • 3
  • 4
// 导入多项时,必须与导出名对应
import { a, b } from './demo.js'

console.log(a, b)
  • 1
  • 2
  • 3
  • 4

निर्यातकाले यथा भवति तथा पुनर्नामकरणं कुर्वन्तु

let a = 1
let b = 2

export { a as c, b as d }
  • 1
  • 2
  • 3
  • 4
// 导入时,只能导入新的名称
import { c, d } from './demo.js'

console.log(c, d)
  • 1
  • 2
  • 3
  • 4

अन्यमॉड्यूलविनिर्देशान् निर्यातयन्तु

export { name1, name2, ... } from 'module-name'
  • 1

मॉड्यूल् आयातेन निर्यातितं सर्वं आयातयन्तु * .

export let a = 1;
export let b = 2;
  • 1
  • 2
// 通过 as 重命名为一个变量(值为对象)
import * as myModule from "./demo.mjs";

console.log(myModule.a);
console.log(myModule.b);
  • 1
  • 2
  • 3
  • 4
  • 5

आयातकाले यथा भवति तथा पुनर्नामकरणं कुर्वन्तु

import {trunc as StringLib} from "../lib/string.js"
import {trunc as MathLib} from "../lib/math.js"
  • 1
  • 2

json प्रारूपेण सञ्चिकाः आयातयन्तु

import pkg from "./package.json" assert { type: "json" };
  • 1
const { default: jsonObject } = await import('./file.json', {
  assert: {
    type: 'json'
  }
});
  • 1
  • 2
  • 3
  • 4
  • 5

CommonJS मॉड्यूल आयात करें

import * as 自定义名称  from '模块名称'
  • 1

CommonJS मॉड्यूल वाक्य रचना

  • प्रत्येकस्मिन् मॉड्यूले एकः मॉड्यूल् ऑब्जेक्ट् अस्ति, यस्य एट्रिब्यूट् निर्याताः सन्ति (एट्रिब्यूट् मूल्यम् अपि ऑब्जेक्ट् अस्ति) ।
  • require() इत्यस्य माध्यमेन आयातं कुर्वन् निर्यातितमॉड्यूले मॉड्यूल् ऑब्जेक्ट् इत्यस्य exports एट्रिब्यूट् प्राप्तं भविष्यति ।
  • एकस्मिन् एव मॉड्यूले भिन्नसामग्री निर्यातयितुं निर्यातं module.exports च न मिश्रयन्तु, यतः एतेन भ्रमः अप्रत्याशितव्यवहारः च भवितुम् अर्हति ।

एकलवस्तु module.exports निर्यातं आयातं च

निर्यात

module.exports = "朝阳";
  • 1

आयात

const demoModule = require("./demo.js");

console.log(demoModule); // 朝阳
  • 1
  • 2
  • 3

बहुनिर्यातानां निर्यातं आयातं च कुर्वन्तु

निर्यात

exports.a = 1;
exports.b = 2;
  • 1
  • 2

आयात

const demoModule = require("./demo.js");

console.log(demoModule); // { a: 1, b: 2 }
  • 1
  • 2
  • 3