어떻게 node. js 와 브라우저 간에 코드를 공유할 수 있습니까?
말씀이있었노라 내가 작은 JavaScript 로 프로그램을 사용하여 웹 소켓 서버, 클라이언트 (브라우저에서 실행하십시오) 와 node. js 통신.
클라이언트와 서버 간에 코드를 공유하고 싶습니다. 나는 단지 지금 막 시작한 node. js 저의 지식이 JavaScript 는 가장 작은 녹슨, 말할 수 있다. 그래서 난 아직 머리는요 가져오는 콩몽이스 주변에 필요한 () 함수. # 39, & # 39 export& 사용하여 만들 경우, 나는 내 패키지 그럼 내가 어떻게 JavaScript 객체, 동일한 브라우저에서 볼 수 없는 파일을 사용할 수 있습니다.
I want to 세트를 만드는 방법 및 클래스뿐만 양쪽 모두에 사용되는 메시지 및 기타 대칭복사된 인코딩 및 디코딩 할 수 있습니다. 그러나 Node.js/CommonJS 패키징에서는 대비하기 위해 JavaScript 에서 사용할 수 있는 파일 시스템을 만드는 양쪽에 날 것 같다.
난 또 이스윈클레스 사용하여 더 얻을 수 있기 때문에 포기한 적이 있지만, 난 내가 couldn& OO 모델 t # 39, 제공된 JavaScript 파일을 볼 수 있는 방법을 사용할 수 있는 장비가 필요한 (). 뭐, 제가 내가 누각되었습니다 여기서요?
236
15
둘 다 사용할 수 있는 클라이언트 및 서버 모듈을 쓸 스케쳐내 때는기대어 때는기대어, I have a 파선-짧은 블로그 포스트에 빠르고 간편한 방법: 먹어서나 및 브라우저에 대한 node. js , 기본적으로 다음과 같은 (여기서 '이' 는 '윈도' 동일합니까):
또는 node. js API 를 구현할 수 있는 몇 가지 프로젝트를 클라이언트상의 있다 (예: marak& # 39 의 제미니.
다노데 관심을 갖게 될 수도 있습니다 수 있는 기업을 자바스크립트 함수를 호출할 수 있도록 간단한 json 기반 사용하여 다른 컴퓨터 네트워크 프로토콜.
에펠리 더 없이 좋은 솔루션이 바로 여기에 있다 (http://epeli.github.com/piler/) 는 그냥 이거 파일로 샤레트제스 불렀으매 라이브러리와는
서버 측에서 됩니다.
그냥 읽어들입니다 js 파일을 클릭한 다음 사용 및 클라이언트 측에서
Jquery 체크아웃합니다 이 일을 할 수 있는 소스 코드를 node. js 모듈에서는 패턴, AMD 모듈에서는 패턴, 글로벌 브라우저에서:
꼭 이래야겠어요 추천합니까 보았으매 꽂으십시오 [레키레이스 어댑터용 node. js] (http://requirejs.org/docs/node.html). 문제는 콩몽이스 모듈에서는 node. js 는 기본적으로 패턴화합니다 isn& # 39, t, 비동기적입니다 수 있는 웹 브라우저에서 로드중. 레키레이스 soundmixer. AMD 서버 및 클라이언트, 패턴, 이는 모두 모두 비동기적입니다 및 호환됩니까 deltamove) 을 사용하면 '레지널드제스' 어댑터입니다.
39 don& JavaScript 소스 코드를 문자열 t forget 함수은 seabreeze 표현한 것으로, 해당 함수에 대해. 간단히 만들 수 있는 기능 및 구성자를 운행에서어떠한 캡슐화됩니다 & # 39 보낼 수 있도록 toString (), d, 클라이언트입니다.
또 다른 방법으로 코드를 사용하는 것이 일반적인 파일, 그리고 별도의 시스템 구축, 동일팔레트에 포함시킬 서버와 클라이언트 스크립트입니다. # 39 m, 이를 이용하여 i& 외곽진입 단순 있는 웹 소켓 통한 게임 클라이언트 / 서버 및 클라이언트 서버 및 클라이언트 서버 동기화 본질적으로 같은 게임 루프 실행하십시오 모두 사용할 수 있도록 모든 틱 nobody& # 39 의 최대 관심사가 됐다.
이 게임은 내 시스템을 구축하는 것은 단순한 [Bash] [1] 를 통해 실행되는 스크립트를 C 언어 전처리기 거쳐 일부 정크 cpp 파일을 sed, 그래서 난 뒤에 클린업합니다 찻입 # include # define # 이프데프 등의 일반 전처리기 물건을 모두 이용할 수 있다,, etc.
[1]: http://en.wikipedia.org/wiki/Bash_% 28Unix_shell% 29
아닐 수도 있지만, 문제는 완전히 발맞춰 생각해봤죠 I& 공유하지는; d # 39 이.
내가 원하는 기능을 할 수 있는 몇 가지 간단한 문자열 유틸리티에는 스트린고드프로토티페, 모두 사용할 수 있으며 브라우저가 노드입니다 선언했다. 내가 그냥 파일에 이러한 기능을 유지할 수 있고 쉽게 참조입니다 티리티s.j스 불렀으매 (받을시간은 하위 폴더) 에서 다 내 있지만브라우저에 코드를 사용하여 스크립트입니다 태그번호 필요한 (스이스 생략할 확장명으로) 내 node. js 스크립트입니다.
my_node_script.js
my_browser_code.html
이것은 나에게 유용한 정보가 아닌 다른 사람이 됐으면 좋겠다 "고 말했다.
예를 들어, 다음과 같은 코드를 수마리아스 있습니다.
일반 node. js 모듈에서는: 수마리아스
List. 모듈에서의 node. js
It 에 재사용합니다 프론트엔드
단순히 JavaScript 소스 파일을 보낼 수 있는 클라이언트 서버 (브라우저) 그러나 재주, 미니 " exports" 클라이언트뿐 입력해야 합니다. 먼저 '환경' 실행 코드를 저장하고 이를 모듈에서는.
이러한 환경은 간편하게 사용할 수 있도록 마감. 예를 들어 http 를 통해 'like' (http://example.com/js/foo.js) 는 소스 파일을 서버에. 브라우저 및 읽어들입니다 스믈하트프리퀘스트 같은 코드를 통해 필요한 파일을 로드할 수 있습니다.
중요한 것은 즉시 실행할 수 있는 해외 랩 클라이언트입니다 익명의 코드 분할 함수 (폐쇄) 를 만들 수 있는 " exports"; 그렇게 되돌려줍니다 you& 객체와 같은 위치를 지정할 수 있습니다; d # 39 오염시키는 것이 아니라 글로벌 이름공간이. 이 예에서는 이 할당되었는지 포모두리 '속성' 창 '를 통해 익스포트되지 코드를 포함할 파일을 포오이스'.
어느 누구도 이 시스템을 이전 솔루션에서 콩몽이스 모듈에서는 있지만브라우저에.
또 다른 대답을 언급한 바와 같이 가지 asset manager / 패키저 등의 솔루션을 브라우세리피 또는 파일러 그런데 이 RPC 와 같은 솔루션을 다노데 또는 노이스.
하지만 난 couldn& # 39, t 찾습니다찾기 콩몽이스 구현한 브라우저에 대한 비롯한 '필요한 ()' 기능을 '/' 와 '익스포트를 모두레드릭스포르츠' 객체에는 등). 그래서 내가 내 스스로 그 다른 사람이 쓴 적이 있는 경우에만 작성했습니까 발견하십시오 나보다 더 잘 했다. https://github.com/weepy/brequire. # 39 의 불렀으매 it& 브레키어 (파선-짧은 브라우저 합니다).
대부분의 개발자들이 요구를 맞추기, 에셋을 관리자에만 의해 보고 있다. 그러나 콩몽이스 있지만브라우저에 구현 하는 경우, 브레키어 아마도 충족합니다 했다.
그러나 i& # 39 m 커뮤니티 콩몽이스 대한 개인적인 용도로 사용하는, 즉 표준화했습니다 먹어서나 모듈에서는 충족하거나 같이 [앰퍼샌드] (http://ampersandjs.com/) 커뮤니티) 그런 다음 그들을 i& # 39, ll 그냥 쓰기 콩몽이스 포맷하여 사용할 브라우세리피.
노자이스 역시 가치가 이걸봐. 클라이언트 서버 및 클라이언트 서버 측 에서 에서 함수를 호출할 수 있습니다
테스트 코드를 작성하는 것처럼 레키레이스 모듈을 사용하여 조종됩니다 이를 재스민 테스트.
이런 식으로 코드를 실행할 수 있는 모든 브라우저에서 재스민 html 로드되었는지 레키레이스 및 테스트를 할 수 있는 [재스민 노드입니다] 와 3 의 코드 또는 수정하십시오 node. js 필요 없이 테스트를 진행중이다.
이것은 작업 예 엔드입니다.
[두아리피] 에서 브라우저를 쓸 스케쳐내 Node.js-like 스타일을 시도해 볼 수 있습니다 (https://github.com/farin/dualifyjs).
응용 프로그램을 작성할 수 있도록 제한 없이 코드 컴파일 있지만브라우저에 없다.
览侩 荤례: share your app 구성 사이에 node. js 및 브라우저 (이건 그냥 그림을, 없는듯 최고의 외곽진입 따라 앱).
문제: 사용할 수 없습니다 '창' (node. js 없습니다) 와 '글로벌' (존재하지 않는 브라우저에서).
해결책:
var 구성 = { foo. # 39, & # 39 bar&. }; if (= # 39, & # 39 메리 페로프 모듈에서는 object&;) 모두레드릭스포르츠 = 구성용.
,, src = " config.js" > < /script> 스크립트입니다 <. ,, src = " myApp.js" > < /script> 스크립트입니다 <.
이제 열어보려면 개발 도구 및 액세스하려면 전역 변수 '구성'
필요한 (# 39, & # 39, ./config&), const 구성 = 콘솔드로그 (콘피g. 포); # 39, & # 39 bar& // 보여준다.
39, & # 39 에서 구성용 임포트합니다 ./config&;;
콘솔드로그 (콘피g. 포); # 39, & # 39 bar& // 보여준다.
내가 작성했습니까 [간단한 모듈에서는] (https://gist.github.com/Gustavo6046/ba3e3a0a9fd493ebe382d0d887ed50a1), 가져올 수 있는 (사용하거나, 또는 스크립트에만 에 필요한 노드입니다 태그로 브라우저) 에서 모두 사용할 수 있는 로드하기에 모듈에서는 클라이언트와 서버의.
사용 예시
1. 정의중 모듈에서는
',' 파일 폴더 내의 파일을 에서 다음 배치하십시오 log2.js 정적 웹.
그렇게 단순!
2. 모듈을 사용하여
A 모듈에서는 불러올 수 있기 때문에 우리는 양자 로더입니다 양측에서 (클라이언트 및 서버). 따라서 다음과 같이 할 수 있습니다, 하지만 당신은 don& # 39, t need to do 둘을 동시에 (let alone 특정 순서로):
39 에서 노드, it&; s 단순하다.
'2' 반품해야 합니다.
39, s, t # 39 의 Node& isn& 파일의 경우 현재 디렉터리인 smartupdate 로드리스트로트 '란' 파일 폴더 경로를 통해 데이터베이스에구성원을 정적 웹 (또는 요건에 따라 어느 모듈은).
첫째, 정의하십시오 웹 페이지:
T , # 39 smartupdate don& 브라우저에서 직접 파일을 열 수 있습니다. 내가 사용하기 때문에 afc 아약스, 파이썬 3& # 39 ',' s take a look at 너회가 제안하세요 하트피세르베르 모듈에서는 (또는, 웹 서버 구축 솔루션은 초고속 있는모든 너회의 명령줄이, 폴더) 를 사용할 수 있습니다.
이 경우, 모든 것이 잘 어울린다 나타납니다.
! [입력하십시오. 이미지 여기에 설명을] [1]
나는 이 모든 변수를 설정할 경우, 작성했습니까 간단하게 사용할 수 있는 글로벌 범위: