2015-12-19 9 views
5

बेबेल 6 का उपयोग करके, मैं अपने संकलित कोड में "use strict" रखने के लिए नहीं कर रहा हूं।"ट्रांसफॉर्म-es2015-modules-commonjs" क्यों बैबेल 6 में "सख्त उपयोग" जोड़ता है?

मैंने पाया है कि यह वह राशि है जो यह कहते हैं "transform-es2015-modules-commonjs" plugin ("es2015" preset में) है।

the source-code में यह inherit "babel-plugin-transform-strict-mode" करने लगता है, जो अगर मैं इसे निकालने के लिए, यह अभी भी ठीक काम करता है, यानी यह require(…) में import "…" संकलित "सख्त का उपयोग करें" जोड़े बिना।

तो क्यों "ट्रांसफॉर्म-es2015-modules-commonjs" बल सख्त मोड क्यों है?

उत्तर

7

ES6 विनिर्देश में, वहाँ दो तरीके जिसमें एक फ़ाइल संसाधित किया जा सकता हैं:

  1. एक "स्क्रिप्ट" जो आम तौर पर सब कुछ हो सकता है हम एक मानक जे एस वातावरण में के आदी हैं, के रूप में

    ES6 मॉड्यूल सिंटैक्स की अनुमति नहीं है, और पिछड़े-संगतता कारणों के लिए, सामग्री को केवल सख्त माना जाता है यदि उसके पास "use strict"; का उपसर्ग निर्देश है।

  2. एक "मॉड्यूल"

    ES6 मॉड्यूल वाक्य रचना के रूप में अनुमति दी है, और सभी कोड स्वचालित रूप से सभी मामलों में सख्त मोड है।

क्योंकि ES6 मॉड्यूल वाक्य रचना है कि क्या कुछ एक मॉड्यूल या एक स्क्रिप्ट है, और यह स्वचालित रूप से सख्त, कोलाहल transform-es2015-modules-commonjs की उपस्थिति का उपयोग करता है अगर कुछ एक "मॉड्यूल" है एक ही में दोनों परिवर्तनों को सक्षम करने के साथ करार किया गया है पहर।

भले ही आप केवल मॉड्यूल परिवर्तन को सक्षम कर सकें और सख्त मोड को बाहर कर सकें, फिर भी आपके द्वारा लिखे गए सभी कोड तकनीकी रूप से अमान्य होंगे और जैसे ही आपने एक वास्तविक ES6 मॉड्यूल वातावरण में अपने ES6 कोड का उपयोग करने का प्रयास किया था, यह सख्त होगा चाहे तुम्हें पसंद हो या नहीं।

यदि आप अपने कोड को सख्त होने की इच्छा नहीं रखते हैं, तो मैं transform-es2015-modules-commonjs को बदलने और सामान्यजेएस मॉड्यूल का उपयोग करने का सुझाव दूंगा, क्योंकि उनके पास ऐसी सख्त-मोड आवश्यकता नहीं है।

संबंधित मुद्दे