node.js
  • coffeescript
  • express
  • connect
  • ejs
  • 2012-12-05 2 views 1 likes 
    1

    내 app.js 파일의 일부 변수를 connect-assets에 의해 컴파일 된 파일에 추가하려고합니다.연결 자산에 변수 추가

    내가 app.js에서 file.ejs

    <%- js('code.js') %> 
    <input type="text" value="Doe"> 
    

    라는 파일이에게 내가 가진 : code.js에서

    app.locals.url = 'http://123.123.123.123' 
    

    내가 시스템 (<%- url %>)에 따라 일부 생산/개발 변수를 추가하고 싶습니다. 이 작업을 시도하면 연결 애셋이 태그로 컴파일되기 때문에 추가 된 변수는 거부됩니다. 변수를 code.js에 전달하는 적절한 방법은 무엇입니까?

    답변

    1

    code.js은 정적 파일로 취급되므로 EJS 템플릿에서 변수를 전달할 수 없습니다. 일반적으로 환경을 기반으로 데이터를 전달하는 이와 같은 경우에는 code.js 안에 읽을 수있는 일종의 전역 구성 변수를 설정합니다.

    app.locals을 이와 같이 값으로 설정하는 대신 다른 환경에 맞게 설정할 수 있습니다. 말 어딘가에 코드에서이 있습니다. 당신은 쉽게 액세스 할 수 있습니다 메인 페이지 템플릿, 또는 어딘가를 렌더링 할 때

    var environments = { 
        production: { 
        url: 'http://1.1.1.1' 
        }, 
        development: { 
        url: 'http://2.2.2.2' 
        } 
    }; 
    

    , 당신은 당신이있는 어떤 환경에 적절한 설정에 전달할 수있는 템플릿을 렌더링 할 때, 당신은 설정을 전달합니다. html = new EJS(...).render({settings: settings['production']}); 당신의 code.js 파일 내부에 다음

    <html> 
        <head> 
        <script type="text/javascript"> 
         var AppSettings = <%= JSON.stringify(settings); %>; 
        </script> 
    
        ... 
    

    , 당신은 직접 AppSettings.url를 읽을 수 있습니다.

    관련 문제