2017-05-12 20 views
3

JavascriptCore (iOS) 안에 자바 스크립트 모듈을로드하고 싶습니다.JavaScriptCore 안에 AMD 모듈로드하기

iOS 측의 일반적인 HTTP 요청을 통해 파일의 텍스트를 가져옵니다. 그래서 전체 문자열을 JScontext로 파싱 할 수 있습니다.

하지만 이제는 필수적이지는 않지만이 모듈을로드하고 이상적으로 다른 종속성을 해결하고 싶습니다.

노드에 대해 requireJS를 사용해 보았지만 많은 종속성 오류가있는 것 같습니다. 그리고 아마도 약간 오래된 것 같습니다.

도둑질을 시도했지만 올바른 경로인지는 확실하지 않습니다. 나는 또한 이것을 시도했다. https://github.com/millermedeiros/nodefy

기본적으로 js는 브라우저에서 수행해야하지만 순수한 자바 스크립트 환경에서는 브라우저가없고 노드도 필요하지 않습니다.

는 또한 browserify 사용하여 모든 것을 내려 묶음으로 처리 할,이 같은 사물을 보았다 - RequireJS load string

내가 프로세스가 발견되지 않은 의존성 실패 (requirejs을 필요로) 코드를 browserify 갈 때 문제가된다 ?

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

답변

4

언급하신 기술은 서로 완벽하게 호환되지 않습니다. require('meow')과 같은 줄을 생각해보십시오. browserify/webpack/etc를 사용하면로드 될 파일은 node_modules/meow/main.js입니다 (package.json이 말하는 주 파일에 따라 다름). requirejs에서이 동일한 파일은 브라우저 또는 프로젝트의 baseUrl 루트를 통해 /meow 경로를로드합니다. 이것을 무시하는 방법은 requirejs에 config 옵션을 추가하는 것입니다. 이는 node_modules에있는 모든 패키지에 대한 항목을 효과적으로 생성하기 때문에 실제로 고통 스럽습니다. 즉, 많은 작업을하지 않고도 requirej와 browserify를 실제로 결합 할 수는 없습니다.

browserify 또는 webpack을 사용하여 코드 분할을 설정하려면 번들에 대한 새 진입 점을 정의해야합니다. 그런 다음 응용 프로그램에서로드 할 때 fetch('https://myserver.com/bundle2.js').then()... 같은 것을 수행하여 해당 js 번들을로드해야합니다. webpack 또는 browserify를 사용하여이 작업을 수행하는 데 도움이되는 몇 가지 도구가 있습니다. Browserify와

  1. 일부 전략 - http://esa-matti.suuronen.org/blog/2013/04/15/asynchronous-module-loading-with-browserify/
  2. 웹팩 - https://webpack.github.io/docs/code-splitting.html

웹의 이야기 (2017 년 기준) 지금이 바로 주변에 아주 좋지 않다. 대부분의 시스템은 일부 사용자 정의 방식으로이 작업을 수행합니다.

+0

의견 주셔서 감사합니다! 내가 맞다면 대답은 javascriptcore의 관점에서 보면 내 자신의 비동기 로더를 작성해야 할 것인가? 저는 주로 JScore 또는 안드로이드에 상응하는 것에 만 관심이 있습니다. requirejs가 현재 브라우저에서 완벽하게 작동합니다. 현재 각 모듈에 대한 사용자 지정 경로를 동적으로로드하고 있으므로 (환경에 따라 모듈이 다른 서버에 살 수 있도록 리디렉션 할 수 있음) 잘 작동합니다. 당신 자신의 모듈 로더를 만드는 방법에 대해 아는 것이 있습니까? 그리고 eval을 사용하는 것과는 조금 다른 점이 있습니까? –

+0

아 물론. 이것 좀 봐 : https://github.com/parris/twitch_stream_search/blob/master/src/utils/simpleRequire.js#L24 나는 기본적으로 내 자신의 완전히 비동기 모듈 로더를 만들었습니다. 도서관의 나머지 부분을 자유롭게 읽고 전체 그림을 얻으십시오.이것은 기본적으로 몇 줄에 걸쳐 요구되는 환경입니다. 지금, 또 다른 문제는 file : // 프로토콜을 사용하여 로컬로 파일을로드 할 수 없다는 것입니다. 서버에서로드하는 경우에는 괜찮을 것입니다. 이 SO 답변보기 : https://stackoverflow.com/questions/20829481/ajax-code-without-web-server – Parris