Elm:
डायरेक्टरी मौजूद है या नहीं जाँचना
कैसे करें:
एल्म एक फ्रंट-एंड वेब प्रोग्रामिंग भाषा है, इसलिए इसका फाइल सिस्टम तक सीधा पहुँच नहीं है। हालाँकि, आप आमतौर पर एक बैकएंड सेवा को जावास्क्रिप्ट में एक कमांड भेजेंगे। यहाँ है कि आप एल्म के साथ ऐसी बातचीत को कैसे ढांचा दे सकते हैं:
port module Main exposing (..)
-- जावास्क्रिप्ट से बात करने के लिए एक पोर्ट परिभाषित करें
port checkDir : String -> Cmd msg
-- उदाहरण उपयोग
checkDirectory : String -> Cmd Msg
checkDirectory dir =
checkDir dir
फिर, आपके जावास्क्रिप्ट में:
app.ports.checkDir.subscribe(function(dir) {
var exists = fs.existsSync(dir); // यह नोड के 'fs' मॉड्यूल का उपयोग करके डायरेक्टरी की जांच करता है
app.ports.dirExists.send(exists);
});
वापस एल्म में, प्रतिक्रिया को संभालें:
port dirExists : (Bool -> msg) -> Sub msg
type Msg = DirExists Bool
subscriptions : Model -> Sub Msg
subscriptions model =
dirExists DirExists
नोट: इसके लिए जावास्क्रिप्ट में पोर्ट्स और उचित बैकएंड हैंडलिंग सेटअप करने की आवश्यकता है।
गहराई में जानकारी
एल्म का ब्राउज़र-रेस्ट्रिक्टेड वातावरण का मतलब है कि यह सीधे फाइल सिस्टम तक पहुँच नहीं सकता, जैसा कि Node.js कर सकता है। ऐतिहासिक रूप से, सर्वर-साइड भाषाएँ और Node.js ने फाइल सिस्टम तक पहुँच की सुविधा प्रदान की है, जबकि ब्राउज़र भाषाएँ सर्वर एपीआई के माध्यम से फाइलों को प्रबंधित करने के लिए निर्भर करती हैं। एल्म की सख्त प्रकार प्रणाली साइड इफेक्ट्स जैसे आई/ओ ऑपरेशंस को मूल रूप से नहीं संभालती है; इसके बजाय, यह जावास्क्रिप्ट इंटरऑप के लिए पोर्ट्स का उपयोग करती है। जबकि एल्म स्वयं यह नहीं जांच सकता कि कोई डायरेक्टरी मौजूद है या नहीं, पोर्ट्स के माध्यम से एक बैकएंड सेवा के साथ एल्म का उपयोग वेब एप्लिकेशन में इस कार्यक्षमता को सक्षम बनाता है।
Node.js वातावरण में विकल्पों में fs.existsSync
या fs.access
विधियाँ शामिल हैं। एल्म के लिए, elm-serverless
जैसे बैकएंड के साथ सर्वर-साइड एल्म पर विचार करें जो क्लाइंट-साइड एल्म की तुलना में फाइल ऑपरेशंस को अधिक सीधे हैंडल कर सकता है।
कार्यान्वयन के दृष्टिकोण से, एक बार जब आप अपने पोर्ट्स सेटअप कर लेते हैं, तो आपका एल्म ऐप जावास्क्रिप्ट को संदेश भेजता है जो फाइल सिस्टम की जाँच करता है। जावास्क्रिप्ट फिर एल्म को परिणाम वापस भेजता है। यह एल्म के फ्रंटएंड कोड को साइड इफेक्ट्स से मुक्त और शुद्ध रखता है, इसके वास्तुकला सिद्धांतों को बनाए रखता है।
और देखें
- पोर्ट्स पर एल्म आधिकारिक गाइड: https://guide.elm-lang.org/interop/ports.html
- Node.js
fs
मॉड्यूल दस्तावेज़ीकरण: https://nodejs.org/api/fs.html - सर्वर-साइड एल्म इंटरैक्शंस के लिए एल्म-सर्वरलेस: https://package.elm-lang.org/packages/ktonon/elm-serverless/latest/