जावास्क्रिप्ट | HTML प्रीप्रोसेसर

नमस्कार प्यारे दोस्तों!


एक अद्भुत दिन, एक अद्भुत घंटा, जेएस के लिए एक तत्काल आवश्यकता थी। HTML प्रीप्रोसेसर और हमेशा की तरह, एक तैयार किए गए समाधान की खोज असफल थी, हर जगह कुछ गायब था (कोई वैश्विक चर नहीं थे, लाइनों का सम्मिलन, लाइनों के प्रतिस्थापन, आयात, आदि।) )। खैर, चूंकि मैं एक सख्त याकूत लड़का हूं, इसलिए केवल एक ही रास्ता था - खुद सब कुछ करने का। खैर? खैर, मैंने अपने काम का नतीजा समुदाय की राय पर रखने का फैसला किया।

परिचय



प्रीप्रोसेसर js (json) और html (xhtml) फ़ाइलों के लिए अभिप्रेत है, इन फ़ाइलों को उचित एक्सटेंशन के साथ होना चाहिए। प्रीप्रोसेसर निम्न कार्यों का समर्थन करता है:



नियंत्रण संरचनाओं को सम्मिलित करने के लिए टिप्पणियों का उपयोग किया जाता है, इसलिए, वे प्रीप्रोसेसर द्वारा संसाधित होने से पहले कोड के साथ हस्तक्षेप नहीं करते हैं।

लॉन्च विधि



प्रीप्रोसेसर एक नियमित ग्रूवी स्क्रिप्ट है जिसे एक आवश्यक तर्क की आवश्यकता होती है:

project.sourceDir - प्रारंभिक निर्देशिका के लिए पथ जिसमें प्रतिस्थापन होगा।

और आप दो वैकल्पिक भी निर्दिष्ट कर सकते हैं

project.confFile - वैश्विक कॉन्फिग के साथ फ़ाइल का पथ।
project.excludeDir - फ़ोल्डरों के अल्पविराम से अलग किए गए नाम जिनमें आपको उन्हें बदलने की आवश्यकता नहीं है (यहाँ, मैं तुरंत कहता हूँ कि यह सबसे निचले स्तर के फ़ोल्डर का नाम है, इस फ़ोल्डर का पथ खाते में नहीं लिया गया है, हाँ माइनस, लेकिन मैं इसे संशोधित करने का प्रयास नहीं करूँगा)

आप पिछले मानक उपकरणों को चलाने के लिए मावेन का भी उपयोग कर सकते हैं।

संचालन



संचालन में ध्यान देने योग्य विशेषताओं को सख्त क्रम में पालन करना होगा (आदेश नीचे दिए गए आदेश के विपरीत वर्णित किया जाएगा), लेकिन वैकल्पिक विशेषताओं (पैटर्न, यदि, प्रकार) का उपयोग नहीं किया जा सकता है, तो क्या मैं उन्हें नीचे चिह्नित करूंगा? किसी भी ऑपरेशन में, परिभाषित करने के अलावा, अंतिम विशेषता हो सकती है अगर = ^ स्थिति ^, जहां स्थिति एक शर्त है, अगर यह प्रारूप कुंजी = मान में लिखा गया है, तो ऑपरेशन को निष्पादित किया जाएगा यदि नाम कुंजी के साथ एक वैश्विक या स्थानीय चर का मूल्य मिलान करता है, अन्यथा यदि कोई वैश्विक या स्थानीय चर नाम की स्थिति मौजूद है, तो ऑपरेशन निष्पादित किया जाएगा।

इसके अलावा मैं उदाहरणों में संचालन और उनके उपयोग का एक पूरा सेट दूंगा, मैं उदाहरण नहीं दूंगा कि क्या मैंने ऊपर वर्णित है कि इसका उपयोग कैसे किया जाए।

उद्घाटन और समापन नियंत्रण संरचनाएं अलग-अलग लाइनों पर होनी चाहिए, सम्मिलित / प्रतिस्थापित पाठ उनके बीच होना चाहिए!

डालें (डालें? यदि)

उपयोग के उदाहरण:


एचटीएमएल


<!--insert <script type="text/javascript" src="vendors/release/dojo/dojo-mini.js" ></script> <script type="text/javascript" src="vendors/release/dijit/dijit-mini.js" ></script> <script type="text/javascript" src="vendors/release/dojox/dojox-mini.js" ></script> /insert--> 


js


 /*insert var mode = 'dev' /insert*/ 


प्रतिस्थापन (प्रतिस्थापित करें; पैटर्न? यदि)

से - स्ट्रिंग को प्लेसहोल्डर के साथ प्रतिस्थापित किया जाएगा (समर्थन करता है)
प्रतिमान - प्रतिस्थापन प्रतिस्थापन प्रतिमान

उदाहरण


एचटीएमएल


 <!--replace to=^<script type="text/javascript" src="vendors/release/dojox/dojox-mini.js" ></script>^--> <script type="text/javascript" src="vendors/release/dojox/dojox-mini.js" ></script> <!--/replace--> 


विशेषता के मूल्य के साथ नियंत्रण टिप्पणियों के बीच सब कुछ बदल देता है।

 <!--replace to=^/release/^ pattern=^/dev/^--> <link rel="stylesheet" type="text/css" href="vendors/dev/dijit/themes/tundra/tundra.css"> <link rel="stylesheet" type="text/css" href="vendors/dev/dojox/grid/resources/Grid.css"> <link rel="stylesheet" type="text/css" href="vendors/dev/dojox/image/resources/Lightbox.css"> <!--/replace--> 


टिप्पणियों के बीच प्रत्येक पंक्ति में विशेषता के मूल्य के साथ पैटर्न विशेषता के मूल्य से मेल खाते सभी सब्सट्रिंग को प्रतिस्थापित करता है।

js


 window.appVersion = /*replace to=^${project.version}^*/0.6/*\replace*/; 


विशेषता के मूल्य के साथ नियंत्रण टिप्पणियों के बीच की रेखा को प्रतिस्थापित करता है।

 /*replace to=^dojo^ pattern=^dijit^*/ dojo.require("dijit.layout.LayoutContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("dijit.form.TextBox"); /*/replace*/ 


टिप्पणियों के बीच प्रत्येक पंक्ति में विशेषता के मूल्य के साथ पैटर्न विशेषता के मूल्य से मेल खाते सभी सब्सट्रिंग को प्रतिस्थापित करता है।

आयात फ़ाइलें (आयात फ़ाइल? प्रकार? यदि)

फ़ाइल - फ़ाइल पथ, निरपेक्ष लिखना सबसे अच्छा है (प्लेसहोल्डर्स का समर्थन करता है)
प्रकार - फ़ाइल प्रकार, फ़ाइल का अतिरिक्त प्रसंस्करण इस पर निर्भर करता है (वर्तमान में सीएसएस प्रकार समर्थित है, जबकि फ़ाइल की सामग्री एक पंक्ति में पैक की जाती है और शैली टैग द्वारा बनाई गई है

उदाहरण

एचटीएमएल


 <!--import file=^path^ type=^css^--> 


js


 //import file=^path^ type=^css^ 


स्थानीय चर (परिभाषित कुंजी = मान | कुंजी)

एक स्थानीय चर (इसकी वर्तमान फ़ाइल का दायरा) का प्रारंभ। यदि केवल कुंजी निर्दिष्ट है, तो एक खाली चर बनाया जाएगा।
कुंजी - चर नाम
मूल्य - मान

उदाहरण

एचटीएमएल


 <!--define debug=true--> <!--define env=qa--> 


js


 //define debug=true //define env=qa 


मैं ध्यान देता हूं कि स्थानीय चर एक ही फ़ाइल पार्सिंग रन में ऊपर से नीचे तक क्रमिक रूप से आरंभ किए जाते हैं, अर्थात, यदि चर को फ़ाइल के बीच में परिभाषित किया गया है, तो इसका उपयोग ऊपर दिए गए नियंत्रण संरचनाओं में नहीं किया जा सकता है।

वैश्विक चर


प्रीप्रोसेसर को वैश्विक चर वाले फ़ाइल के साथ निर्दिष्ट किया जा सकता है जिसका उपयोग संचालन में किया जा सकता है।

मावेन का उपयोग करके चर के साथ एक फ़ाइल निर्दिष्ट करने का एक उदाहरण (आप कमांड लाइन तर्क का उपयोग कर सकते हैं)

 <project.confPath>${pom.basedir}/configuration/qa.json</project.confPath> 


फ़ाइल प्रारूप


की ०: मान ०
की 1: मान 1

प्लेसहोल्डर्स का उपयोग


window.appVersion = /*replace to=^${version}^*/0.6/*/replace*/;

अभिव्यक्ति $ {संस्करण} को संबंधित वैश्विक या स्थानीय चर चर के मूल्य के साथ बदल दिया जाएगा।

इसके अलावा, चर पर संचालन के लिए समर्थन है, फिलहाल केवल एक ही लागू है - चर के अंत और शुरुआत से उद्धरण हटाना:
$ { rootPath : removeQuotes }

निष्कर्ष


ठीक है, सिद्धांत रूप में, यह सब, अगर मैं किसी के लिए उपयोगी होगा, तो मैं बग और सुझावों के लिए आभारी रहूंगा।

GitHub


स्रोत और परीक्षण पृष्ठ: github.com/iseeyou911/JSPP
टेस्ट / qa.json कॉन्फ़िगरेशन फ़ाइल। Index.html में काम करने के लिए आपको इसे ठीक करना होगा
लाइन में
 <!--define path=../tests/--> 

इस फ़ोल्डर के लिए पूर्ण पथ।

Source: https://habr.com/ru/post/In137870/


All Articles