दिलचस्प पोस्ट
बड़ी फ़ाइलों की समान संख्या वाली छोटी फाइलों को कैसे विभाजित करें? मापदंडों की सरणी के साथ परम बाँधें क्या मैं एक ही कंप्यूटर पर पायथन 3.x और 2.x को स्थापित कर सकता हूं? $ .निर्धारित: जब हर वादे को निष्पादित किया गया है तो कैसे पता लगाया जाए स्क्रिप्ट को पासवर्ड के बिना अन्य उपयोगकर्ता के रूप में कैसे चलाया जाता है स्टेटलेस रैंडम नंबर जनरेटर क्या मौजूद हैं? सी # का उपयोग कर पैरामीटर के रूप में पास विधि jQuery को खोजने और स्ट्रिंग की जगह ब्राउज़र में जावास्क्रिप्ट के माध्यम से एक छवि को कैसे संक्षिप्त करना है? समझना। LINQ से एसक्यूएल में एएनएनमेरेबल () किसी यूआरएल में प्रोटोकॉल को उत्तीर्ण करने के लिए एक अग्रणी डबल स्लैश का उपयोग करने के लिए कोई नकारात्मक पहलू है? यानी src = "// domain.com" कार्यक्रमों में अगर पेड़ों को बदलने के लिए या बदलने का सबसे अच्छा तरीका क्या है .. चर = नल यह कचरा संग्रहण के लिए सेट करता है SQL सर्वर में दशमलव से पीछे वाले शून्य निकालें JSF 2.0 में सत्र को कैसे अमान्य करना है?

यह जावास्क्रिप्ट "आवश्यकता" क्या है?

मैं जावास्क्रिप्ट को पढ़ने / लिखने के लिए एक PostgreSQL डाटाबेस के लिए कोशिश कर रहा हूँ। मुझे इस परियोजना को जिथूब पर मिला मैं नोड में चलाने के लिए निम्न नमूना कोड प्राप्त करने में सक्षम था।

var pg = require('pg'); //native libpq bindings = `var pg = require('pg').native` var conString = "tcp://postgres:1234@localhost/postgres"; var client = new pg.Client(conString); client.connect(); //queries are queued and executed one after another once the connection becomes available client.query("CREATE TEMP TABLE beatles(name varchar(10), height integer, birthday timestamptz)"); client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['Ringo', 67, new Date(1945, 11, 2)]); client.query("INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", ['John', 68, new Date(1944, 10, 13)]); //queries can be executed either via text/parameter values passed as individual arguments //or by passing an options object containing text, (optional) parameter values, and (optional) query name client.query({ name: 'insert beatle', text: "INSERT INTO beatles(name, height, birthday) values($1, $2, $3)", values: ['George', 70, new Date(1946, 02, 14)] }); //subsequent queries with the same name will be executed without re-parsing the query plan by postgres client.query({ name: 'insert beatle', values: ['Paul', 63, new Date(1945, 04, 03)] }); var query = client.query("SELECT * FROM beatles WHERE name = $1", ['John']); //can stream row results back 1 at a time query.on('row', function(row) { console.log(row); console.log("Beatle name: %s", row.name); //Beatle name: John console.log("Beatle birth year: %d", row.birthday.getYear()); //dates are returned as javascript dates console.log("Beatle height: %d' %d\"", Math.floor(row.height/12), row.height%12); //integers are returned as javascript ints }); //fired after last row is emitted query.on('end', function() { client.end(); }); 

इसके बाद मैंने इसे एक वेबपेज पर चलाने की कोशिश की, लेकिन ऐसा कुछ भी नहीं हुआ। मैंने जावास्क्रिप्ट कंसोल पर चेक किया और यह केवल "परिभाषित नहीं की आवश्यकता है।"

तो यह "क्या आवश्यकता है?" यह नोड में क्यों काम करता है लेकिन वेबपेज में नहीं है?

इसके अलावा, इससे पहले कि मैं इसे नोड में काम करने के लिए मिला, मुझे npm install pg करना पड़ा। यह किस बारे में है? मैंने निर्देशिका में देखा और मुझे कोई फ़ाइल पीजी नहीं मिली। यह कहां रखा गया, और जावास्क्रिप्ट इसे कैसे खोजता है?

Solutions Collecting From Web of "यह जावास्क्रिप्ट "आवश्यकता" क्या है?"

require() आपके मानक जावास्क्रिप्ट का हिस्सा नहीं है अपने प्रश्न और टैग के संदर्भ में, require() को मॉड्यूल लोड करने के लिए Node.js में बनाया गया है। यह अवधारणा सी / जावा / पायथन / [यहां अधिक भाषाओं को सम्मिलित करें] आयात के समान है या इसमें शामिल हैं

मॉड्यूल की अवधारणा सिर्फ <script> टैग्स के माध्यम से जावास्क्रिप्ट कोड के छोटे बिट्स को जोड़ने के समान है। एक <script> टैग को जोड़ने के विपरीत, यह फ़ाइल को वैश्विक दायरे में लीक नहीं करता है। फ़ाइल का अपना गुंजाइश है, जो कि आप उस फाइल में परिभाषित हर चीज को फँसते हैं, जब तक कि आप कार्यक्षमता को उजागर करने का निर्णय नहीं लेते हैं मॉड्यूल को exports या मॉड्यूल का उपयोग कर उजागर करने के आधार पर एक मान देता है। exports एक अन्य पोस्ट बताता है कि exports के साथ संयोजन के रूप में कैसे काम करता है

आपके कोड में, यह pg मॉड्यूल लोड करता है, जो मुझे लगता है कि नोडजेएस के लिए एक PostgreSQL ड्राइवर है। जिस भाग पर आप npm install pg करते हैं वह pg मॉड्यूल को एनपीएम (नोडजेएस मॉड्यूल के लिए एक पैकेज रिपॉजिटरी) से डाउनलोड करता है और इसे आपके प्रोजेक्ट को require('pg');


बस जब आप सोच रहे थे कि आपने क्यों "आपके प्रश्न के संदर्भ में" उल्लेख किया है, तो तीसरी पार्टी की लाइब्रेरीयां हैं जिन्हें नामित फ़ंक्शन का उपयोग करने के लिए कुछ करना require है यह पहचानने के लिए आसान है कि कौन सा कौन है

  • RequireJS प्रदान की गई कोड को चलाने से पहले निर्भरता लोड define लिए define करने के साथ-साथ require फ़ंक्शन को उजागर करता है। वाक्यविन्यास AMD प्रारूप में है।

  • जोशीस जेएस फाइलें संयोजित करती है , जो भी require फ़ंक्शन को प्रदर्शित करता require । यह एक PHP के import बहुत करीब है।

  • Browserify का उपयोग ब्राउज़र पर require होता है, जिससे ब्राउज़र पर लिपियों को नोडजेएस शैली (कॉमनजेएस मॉड्यूल सिंटैक्स) लिखा जा सकता है।

ठीक है, तो पहले एक वेब ब्राउज़र में जावास्क्रिप्ट के बीच भेद, और एक सर्वर पर जावास्क्रिप्ट (कॉमनजेएस और नोड) को शुरू करें।

जावास्क्रिप्ट एक परंपरागत रूप से एक भाषा है जिसे एक सीमित वैश्विक संदर्भ के साथ एक वेब ब्राउज़र तक सीमित रखा गया है जो ज्यादातर दस्तावेज़ ऑब्जेक्ट मॉडल (DOM) स्तर 0 (नेटस्केप नेविगेटर जावास्क्रिप्ट एपीआई) के रूप में जाना जाता है।

सर्वर-साइड जावास्क्रिप्ट उस प्रतिबंध को समाप्त करता है और जावास्क्रिप्ट को देशी कोड के विभिन्न टुकड़ों (जैसे पोस्टग्रेज़ लाइब्रेरी) और ओपन सॉकेट्स में कॉल करने की अनुमति देता है।

अब require() एक विशेष फ़ंक्शन कॉल जिसे सामान्य जे एस स्पेक के भाग के रूप में परिभाषित किया गया है नोड में, यह नोड खोज पथ में लाइब्रेरी और मॉड्यूल को हल करता है, जो आमतौर पर उसी निर्देशिका (या लागू की जावास्क्रिप्ट फाइल की निर्देशिका) या सिस्टम-विस्तृत खोज पथ में node_modules रूप में परिभाषित होती है।

अपने बाकी प्रश्न का उत्तर देने के लिए, हमें ब्राउज़र और डेटाबेस सर्वर में चल रहे कोड के बीच एक प्रॉक्सी का उपयोग करने की आवश्यकता है।

चूंकि हम नोड पर चर्चा कर रहे हैं और आप पहले से ही एक क्वेरी को वहां से कैसे चलाना चाहते हैं, इससे पता चल जाएगा कि प्रॉक्सी के रूप में नोड का उपयोग करना होगा।

एक सरल उदाहरण के रूप में, हम एक यूआरएल बनाने जा रहे हैं जो एक बीटल के बारे में कुछ तथ्यों को लौटता है, एक नाम दिया जाता है, जैसा कि जेएसओएन।

 /* your connection code */ var express = require('express'); var app = express.createServer(); app.get('/beatles/:name', function(req, res) { var name = req.params.name || ''; name = name.replace(/[^a-zA_Z]/, ''); if (!name.length) { res.send({}); } else { var query = client.query('SELECT * FROM BEATLES WHERE name =\''+name+'\' LIMIT 1'); var data = {}; query.on('row', function(row) { data = row; res.send(data); }); }; }); app.listen(80, '127.0.0.1'); 

यह मॉड्यूल लोड करने के लिए उपयोग किया जाता है चलो एक सरल उदाहरण का उपयोग करें।

फ़ाइल circle_object.js :

 var Circle = function (radius) { this.radius = radius } Circle.PI = 3.14 Circle.prototype = { area: function () { return Circle.PI * this.radius * this.radius; } } 

हम इसकी require उपयोग कर सकते हैं, जैसे:

 node> require('circle_object') {} node> Circle { [Function] PI: 3.14 } node> var c = new Circle(3) { radius: 3 } node> c.area() 

जावास्क्रिप्ट मॉड्यूल को लोड और कैश करने के लिए require() विधि का उपयोग किया जाता है। इसलिए, यदि आप एक स्थानीय, सापेक्ष JavaScript मॉड्यूल को एक Node.js अनुप्रयोग में लोड करना चाहते हैं, तो आप बस require() विधि का उपयोग कर सकते हैं

उदाहरण:

 var yourModule = require( "your_module_name" ); //.js file extension is optional 

मैंने देखा कि अन्य उत्तरों में बताया गया है कि क्या आवश्यकता है और यह नोड में मॉड्यूल को लोड करने के लिए उपयोग किया जाता है, उन्होंने ब्राउज़र में काम करते समय नोड मॉड्यूल लोड करने के बारे में पूरा जवाब नहीं दिया।

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

अब इसे अपने ऐप में लोड करने का सबसे आसान तरीका यह है कि इसे एक स्क्रिप्ट टैग के साथ अपने html से संदर्भित करें जो इस निर्देशिका को इंगित करता है। अर्थात यदि आपकी नोड_मॉड्यूल निर्देशिका प्रोजेक्ट की जड़ में समान स्तर पर है, तो आप index.html में यह लिखेंगे:

 <script src="node_modules/ng"></script> 

यह पूरी स्क्रिप्ट अब पृष्ठ में लोड हो जाएगी – ताकि आप अपनी चर और विधियों को सीधे एक्सेस कर सकें।

अन्य तरीकों से अधिक बड़े प्रोजेक्ट्स में व्यापक रूप से उपयोग किया जाता है, जैसे कि मॉड्यूल लोडर जैसे की आवश्यकता होती है । जेएस । दोनों में से, मैंने खुद की आवश्यकता नहीं की है, लेकिन मुझे लगता है कि इसे कई लोगों द्वारा जाने का तरीका माना जाता है।