] मज़ाक कर रहा हूँ। लेकिन क्या आपने सोचा है कि हुड के नीचे कैसे काम करता है? आज के ब्लॉग में, यह समझने की कोशिश करें कि गोलंग का उपयोग करके हाथों पर कार्यान्वयन के साथ कैसे काम किया जाता है। गोलंग क्यों? खैर, मैं इन दिनों गोलंग की खोज कर रहा हूं, और एक परियोजना बनाने से बेहतर क्या है? इतना पर्याप्त संदर्भ (गोलंग में एक नहीं) चलो शुरू हो जाता है।
लाइव सर्वर कैसे काम करता है?
कोर में यह आपके (नोड जेएस) सर्वर और ब्राउज़र के बीच एक WebSocket कनेक्शन का उपयोग करता है। जब सर्वर एक फ़ाइल में परिवर्तन का पता लगाता है तो यह Websocket के माध्यम से ब्राउज़र को एक पुनः लोड अधिसूचना भेजता है। ब्राउज़र, बदले में, नए परिवर्तनों को प्रतिबिंबित करने के लिए पृष्ठ को फिर से लोड करता है। इसके अतिरिक्त यह जावास्क्रिप्ट मॉड्यूल के लिए CSS इंजेक्शन (केवल एक पूर्ण पुनः लोड के बिना केवल शैलियों को अपडेट करना), HMR (हॉट मॉड्यूल प्रतिस्थापन) का उपयोग करता है। यह सुनिश्चित करता है कि डेवलपर को कोड में प्रत्येक परिवर्तन के बाद मैन्युअल रूप से ब्राउज़र को फिर से लोड करने की आवश्यकता के बिना एक वास्तविक समय की प्रतिक्रिया मिलती है।
इसलिए इस परियोजना के साथ, मेरा विचार समान था। मेरा लक्ष्य फ़ाइल परिवर्तनों (जैसे HTML, CSS, और JavaScript) के लिए देखना था और जब भी कोई संशोधन का पता लगाया गया तो ब्राउज़र को पुनः लोड किया गया। इसके लिए, मैंने GO के अंतर्निहित HTTP सर्वर और FSNotify पैकेज का उपयोग किया, जो कुशलता से फ़ाइल सिस्टम इवेंट की निगरानी करता है।
1। स्थिर फ़ाइलों की सेवा
] स्थैतिक फाइलें, जैसे HTML, CSS और JavaScript, को ./static फ़ोल्डर से लोड किया जाएगा। यह http.fileserver का उपयोग करके संभाला जाता है:2। एंडपॉइंट को पुनः लोड करें
] ]
3। फ़ाइल देखना बदल जाता हैhttp.Handle("/", http.FileServer(http.Dir("./static")))
4। ट्रैक की गई फ़ाइलों को फ़िल्टर करना
] यह फ़ाइल प्रकारों की जांच करने के लिए filepath.ext फ़ंक्शन का उपयोग करके किया गया था:
http.HandleFunc("/reload", func(w http.ResponseWriter, r *http.Request) {5। सर्वर चलाना
]log.println ("सर्वर शुरू करना: 8000") log.fatal (http.listenandserve (": 8000", nil))
] ] ]
अंतिम विचारfunc scanFileChanges() { watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } defer watcher.Close() for { select { case event :=
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3