নোড.জেএস সহ অ্যান্ডস্কোর মডিউলটি ব্যবহার করা হচ্ছে


147

আমি নোড.জেএস এবং মডিউলগুলি সম্পর্কে শিখছি, এবং ইন্ডসকোর লাইব্রেরিটি সঠিকভাবে কাজ করার জন্য মনে হচ্ছে না ... মনে হচ্ছে প্রথমবারের মতো আমি যখন ইনডস্কোর থেকে কোনও ফাংশন ব্যবহার করি, এটি ফলাফলের সাথে _ অবজেক্টটিকে ওভাররাইট করে আমার ফাংশন কল। কেউ কি জানেন কী হচ্ছে? উদাহরণস্বরূপ, এখানে নোড.জেএসএইপিএল এর একটি অধিবেশন রয়েছে:

Admin-MacBook-Pro:test admin$ node
> require("./underscore-min")
{ [Function]
  _: [Circular],
  VERSION: '1.1.4',
  forEach: [Function],
  each: [Function],
  map: [Function],
  inject: [Function],
  (...more functions...)
  templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
  template: [Function] }
> _.max([1,2,3])
3
> _.max([4,5,6])
TypeError: Object 3 has no method 'max'
    at [object Context]:1:3
    at Interface.<anonymous> (repl.js:171:22)
    at Interface.emit (events.js:64:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)
    at ReadStream.emit (events.js:81:20)
    at ReadStream._emitKey (tty_posix.js:307:10)
    at ReadStream.onData (tty_posix.js:70:12)
> _
3

আমি যখন জাভাস্ক্রিপ্ট ফাইলগুলি নিজে তৈরি করি এবং সেগুলি আমদানি করি, তখন তারা সঠিকভাবে কাজ করছে বলে মনে হয়। অ্যান্ডস্কোর লাইব্রেরির সাথে বিশেষ কিছু আছে?

উত্তর:


169

নোড আরইপিএল শেষ অপারেশনের ফলাফল ধরে রাখতে আন্ডারস্কোর ভেরিয়েবলটি ব্যবহার করে, তাই এটি একই ভেরিয়েবলের অ্যান্ডস্কোর লাইব্রেরির ব্যবহারের সাথে সাংঘর্ষিক। এরকম কিছু চেষ্টা করুন:

Admin-MacBook-Pro:test admin$ node
> _und = require("./underscore-min")
{ [Function]
  _: [Circular],
  VERSION: '1.1.4',
  forEach: [Function],
  each: [Function],
  map: [Function],
  inject: [Function],
  (...more functions...)
  templateSettings: { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g },
  template: [Function] }
> _und.max([1,2,3])
3
> _und.max([4,5,6])
6

2
ধন্যবাদ. এটা সোজা ছিল।
জেফ 21

6
আমি এখন ৩০ মিনিট ধরে আমার কীবোর্ডের বিপরীতে মাথা ঘুরিয়ে দিয়েছি, এর জন্য ধন্যবাদ!
রসপিডিয়া

3
এজন্য এসও দুর্দান্ত। "হেড বেঙা" এর ঘন্টাগুলি সংরক্ষণ করুন এর মতো দুর্দান্ত উত্তর। থানকিউ @ মাইক
ব্রায়ান ট্রেসি

নোড ভি 6 আরএপিএল-এ নির্ধারিত সমর্থন করে_
জন-ডেভিড ডালটন

194

আজ অবধি (30 এপ্রিল, 2012) আপনি আপনার নোড.জেএস কোডে যথারীতি অ্যান্ডস্কোর ব্যবহার করতে পারেন। পূর্ববর্তী মন্তব্যগুলি সঠিকভাবে ইঙ্গিত করছে যে REPL ইন্টারফেস (নোডের কমান্ড লাইন মোড) "_" ব্যবহার করে সর্বশেষ ফলাফলটি ধরে রাখার জন্য তবে আপনি এটি আপনার কোড ফাইলগুলিতে ব্যবহার করতে পারেন এবং এটি স্ট্যান্ডার্ড না করে কোনও সমস্যা ছাড়াই কাজ করবে:

var _ = require('underscore');

শুভ কোডিং!


7
দ্রষ্টব্য, আপনি আন্ডারস্কোরকে বিশ্বায়িত করার চেষ্টা করলে এটি কাজ করবে না: gist.github.com/3220108
ল্যান্স পোলার্ড

9
কেউ একবার আমাকে বলেছিল যে গ্লোবালগুলি সমস্ত বিকাশের ভাষায় খারাপ। যে মডিউলগুলির এটি প্রয়োজন তার মধ্যে var _ = প্রয়োজনীয় ('আন্ডারস্কোর') নির্দিষ্ট করতে আমি কোনও সমস্যা দেখছি না। nodejs.org/api/modules.html#modules_caching
এরিক রুইজ ডি চাভেজ

30-এপ্রি -২২২২ নোডের কোন সংস্করণটির সাথে মিল রয়েছে?
পোজেড

এপ্রিল 2012 0.6 এর সাথে সম্পর্কিত।
এরিক রুইজ ডি শ্যাভেজ

এরিক, আপনি যদি সার্ভার সাইডে ক্লায়েন্ট-সাইড কোডটি আবার ব্যবহার করার চেষ্টা করছেন তবে এটি একটি সমস্যা।
ব্র্যান্ডন


13

পূর্ববর্তী ইনপুট ধরে রাখার জন্য REPL _দ্বারা ব্যবহৃত নাম node.js। অন্য নাম চয়ন করুন।


10
__ ডাবল আন্ডারস্কোর? :)
এমসি_রট্টি

3
ডবল আন্ডারস্কোর _und চেয়ে ভাল আমি মনে হয় :)
কৌশিক Thirthappa

-3

দ্রষ্টব্য: নিম্নলিখিতটি কেবলমাত্র পরবর্তী পংক্তির কোডের জন্য কাজ করে এবং কেবলমাত্র কাকতালীয় কারণে।

লোদাশ সহ,

require('lodash');
_.isArray([]); // true

কোনও প্রয়োজন নেই var _ = require('lodash')যখন লোডাশ রহস্যজনকভাবে বিশ্বব্যাপী এই মান সেট করে।


না, এটি লোডাস বা অন্য কোনও কিছুর সাথে কাজ করবে না। এটি আপনার উদাহরণে কাজ করে কারণ উপরে বর্ণিত হিসাবে নোড সর্বশেষ বিবৃতিটির ফলাফলকে সেট করে _। আপনার শেষ বিবৃতিটির ফলাফলটি ছিল লোডাশ লিব। সুতরাং _.isArray([])কাজ করবে পরের লাইনে , কিন্তু কখনও আবার।
মার্ক কাহন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.