[node.js] Node.js와 함께 밑줄 모듈 사용

node.js와 모듈에 대해 배웠는데 Underscore 라이브러리가 제대로 작동하지 않는 것 같습니다 … Underscore에서 함수를 처음 사용할 때 _ 객체를 다음의 결과로 덮어 씁니다. 내 함수 호출. 아무도 무슨 일인지 알아? 예를 들어 다음은 node.js REPL의 세션입니다.

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

Javascript 파일을 직접 만들어 가져 오면 제대로 작동하는 것 같습니다. Underscore 라이브러리에 특별한 것이 있습니까?



답변

Node REPL은 밑줄 변수를 사용하여 마지막 조작의 결과를 보유하므로 밑줄 라이브러리의 동일한 변수 사용과 충돌합니다. 다음과 같이 해보십시오 :

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


답변

오늘 (2012 년 4 월 30 일) 현재 Node.js 코드에서 평소와 같이 Underscore를 사용할 수 있습니다. 이전 의견은 REPL 인터페이스 (노드의 명령 행 모드)가 “_”를 사용하여 마지막 결과를 보유하지만 코드 파일에서 자유롭게 사용할 수 있으며 표준을 수행하여 문제없이 작동한다는 것을 지적합니다.

var _ = require('underscore');

행복한 코딩!


답변

또는 :

    var _ = require('underscore')._;


답변

REPL이 이전 입력을 보유하기 위해 _사용하는 이름 node.js입니다. 다른 이름을 선택하십시오.


답변

참고 : 다음은 다음 코드 줄에서만 작동하며 우연의 일치로만 작동합니다.

Lodash와 함께

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

var _ = require('lodash')Lodash는 필요할 때이 값을 전 세계적으로 신비하게 설정 한 이후로 없습니다 .


답변