2016-09-20 4 views
0

나는 node.js, express.jspug/jade을 사용합니다.node.js의 변수 값으로 자바 스크립트 파일 채우기

내 서버에서 변수 pageId으로보기를 채 웁니다.

나는 문제는 내가이 스크립트 코드는 별도의 파일이 아닌 내보기에 위치 할 것입니다

script. 
    document.addEventListener('DOMContentLoaded', function() { 
    var pageId = '#{pageId}'; 

    (...) 

pug보기에이 변수를 사용합니다.

그래서 나는

script(src='js/my_script.js') 

에 스크립트를 포함 할하지만 나는 스크립트의 변수의 값을 얻을 수 없습니다입니다.

어떻게 정상적으로 수행됩니까? 클라이언트 측의 뷰에서 스크립트 코드로 서버의 변수를 보내는 것은 잘못되었습니다.

평범한 html에서도 동일한 문제가 발생해야하므로 pug.js을 사용하는 것이 적절하지 않다고 생각합니다.

+0

''또는 ajax입니다. 서버 측 코드에서 모든 .js 파일을 구문 분석 할 수는 있지만 ... 아니요. URL에 pageId가 없습니까? –

+0

요는 webpack 또는 npm 모듈 "config"와 같은 것들을 조사해야합니다. 이 질문도 참조하십시오. http://stackoverflow.com/questions/30030031/passing-environment-dependent-variables-in-webpack – NicolasMoise

+0

실제로는 단지 'pageId'이상입니다. 또한'd3.js' 그래프를 그릴 때 사용하는 json 형식의 많은 데이터입니다. 따라서 한 페이지에서 json 형식의 데이터를 얻고 다른 페이지에서는 json 형식의 다른 데이터를 얻습니다. 그래서'.js' 파일에 직접 데이터를 하드 코딩하는 것은 불가능합니다. – Jamgreen

답변

1

클라이언트 측 JS 파일에서 데이터를 수신 한 다음 서버에서 렌더링 한 페이지의 인라인 스크립트에서이 함수를 호출하는 전역 함수를 정의 할 수 있습니다. script.js 예를 들어

:

function logPageId(id) { 
    console.log(id); 
} 

는 그런 다음 서버 렌더링 된 페이지에서 :

<html> 
    <body> 
    <script src="script.js"></script> 
    <script> 
     logPageId('somePageId') 
    </script> 
    </body> 
</html> 

당신은 입력으로 JSON 문자열로 동일한 작업을 수행 할 수있을 것입니다.

관련 문제