2012-08-16 2 views
2

우리 프로젝트에서는 Node.js에서 호스팅되는 클라이언트 측 JavaScript가 있습니다.Node.js 환경 변수를 클라이언트 측 JavaScript에 삽입하는 방법은 무엇입니까?

이 스크립트는 서버의 정적 콘텐츠 (예 : http://host:port/static/content)를 사용합니다. 이 JavaScript는 다른 사이트에 삽입 될 수 있기 때문에 우리는 로컬 경로를 사용할 수 없습니다.

우리의 개발, 테스트 및 프로덕션 환경에는 서로 다른 호스트 및 포트 설정이 있습니다. 그래서 우리는 서로 다른 환경에 대해 이러한 특성을 하드 코딩해야합니다.

이 문제를 해결하는 가장 쉬운 방법은 정적 파일에 대한 응답을 준비하는 동안 JavaScript를 수동으로 서버 측 문자열로 구문 분석하는 것입니다.

나는 이것이 좋은 생각이 아니라고 생각합니다.

이 경우 Node.js에 기본 제공 메커니즘이 있습니까?

P. 미안해, 내 영어로.

+0

PHP를 사용하여 클라이언트 페이지가 올바른 설정으로로드되지 않는 이유는 무엇입니까? –

+0

우리는 Node.js에서 일부 백엔드 기능을 가지고 있습니다. 하나의 프로젝트에서 두 개의 다른 서버를 사용하고 싶지는 않습니다. –

답변

0

여기서 동적으로 생성 된 일부 HTML에서 클라이언트 측 코드가 호출된다고 가정합니다.

"구성"데이터의 양이 매우 적은 경우 생성 된 HTML에 data-* 개의 속성을 통해 전달할 수 있습니다 (예 : <body data-static="http://host:port/static/content"> 또는 더 큰 경우 인라인 <script id="config" type="application/json"> 요소에 있습니다.

열쇠는 여기가 궁금 것을 쓴 프로그래밍 스타일의 요소를 그 유일한 목적 데이터 (40 세 전에 커니 핸과 Plauger을 표현하는 것입니다 코드를 생성 동적 피하기 위해 얼마나 많은 많은 일반적인 컴퓨터 센터의 일상적인 활동은 단순히 컴파일러를 통해 매개 변수를 입력하는 것과 같았습니다. 인터프리터 언어를 사용하면 코드/데이터 구별이 흐려지기 쉽지만 마음 속에 별도의 코드를 유지하는 것이 좋습니다.

P. 내가 본 대부분의 질문에 영어가 능숙합니다.

+0

답변 해 주셔서 감사합니다. 그러나이 스크립트는 다른 제 3 자 사이트에 주입 될 수 있으며 해당 스크립트는 HTML 코드를 관리/변경할 수 없습니다. 대부분의 경우 클라이언트쪽에 한 줄의 코드 만 있습니다 :

+0

하나의 스크립트에'data- *'속성을 사용할 수 있습니까? 속성이 없으면 프로덕션 서버에 대한 클라이언트 코드가 기본적으로 설정되어 있습니까? – ebohlman

+0

귀하의 아이디어를 얻었으므로 귀하의 변종을 약간 수정할 수 있다고 생각합니다. 고맙습니다. –

관련 문제