2016-09-18 3 views
1

최근 노드 모듈을 번들로 제공하고 브라우저에서 사용하기 위해 Browserify을 탐색하기 시작했습니다. 그것은 깔끔하고 훌륭한 작품이지만, 나는 작업 흐름의 개선을 원한다. 내 사용의 경우, 내가 script.js은 같은 형태, 간결함을 위해 Cylon브라우저에서 동적으로 자바 스크립트 파일을 만드는 방법

같은 노드 모듈을 필요로하는 script.js 파일이 :

"use strict"; 

var Cylon = require('cylon'); 
Cylon.robot({ 
    name: "BrowserBot", 

    connections: { 
     arduino: { adaptor: 'firmata', port: '/dev/tty.usbmodem1411' } 
    }, 

    devices: { 
     led: { driver: 'led', pin: 8 } 
    }, 

    work: function(my) { 
     Cylon.Logger.info("Hi, my name is " + my.name) 

     every((2).seconds(), function() { 
     Cylon.Logger.info("Toggling the LED"); 
     my.led.toggle(); 
     }); 
    } 
    }); 

Cylon.start(); 

내가 browserify bundle.js 파일을보고 있었다 생성하고 내가 할 수 위에서 언급 한 정확한 코드 블록을 찾으면 노드 프로세스가이 코드와 일부 바인딩으로 시작한다고 생각합니다. 나는 script.js 파일을 동적으로 설정하여 사용자가 LED에서 다른 핀을 사용하거나 다른 작은 변화를 사용하게하고 싶습니다. 이 파일의 종속성을 변경하지 않으므로 의 해당 블록을 script.js 파일의 새 내용으로 대체 할 수 있어야합니다. 다른 모듈은 이미로드되어 번들로 제공됩니다 (bunndle.js).

이 설정이 브라우저 설정에서 가능한지 알고 싶습니다. Chrome 앱은 file Storage을 허용하므로 script.js의 콘텐츠를 플러그인하고 초기에 HTML 파일에 bundle.js을로드하면 초기 생성 후 동적으로 bundle.js을 생성 할 수 있습니까? 어떻게해야합니까?

질문이 Cylon에만 국한된 것은 아니지만 나는 아직도 나의 특정 유스 케이스에 대한 태그로 추가하고 있습니다.

+0

문제점이 확실하지 않습니다. 이'bundle.js'가 앱에서 어떻게 사용 되었습니까? 매개 변수를 받아들이는 인터페이스를 만들지 못하게하는 것은 무엇입니까? – Xan

+0

안녕하세요. @Xan! 'bundle.js' 파일은'browserify'를 통해 생성됩니다. 따라서 많은 노드 모듈이 컴파일되어 거기에 살고 있습니다. 따라서 'Cylon'모듈과 다른 모든 firmata 어댑터와 같은 것들은 모두 bundle.js에 있습니다. 하지만'script.js '는 arduino를 사용하는 코드 일 수 있습니다. 어떻게'bundle.js'를 매개 변수로 만드는지 모르겠습니다. –

답변

0

모든 .js 파일은 Apps manifest.json에 지정해야합니다. 파일 저장소를 통해 액세스 할 때도 응용 프로그램의 폴더에서 항목을 편집 할 수 있다고 생각하지 않습니다.

+0

내 문제를 이해할 수 있기를 바랍니다. chrome.fileStorage API를 사용하여 js 파일을 저장 한 다음 편집하여 DOM 또는 App에 삽입 할 수 있습니까? –

+0

@VivekPradhan 매우 둥근 것입니다. 편집 된 JS를 실행하려면 Chrome 앱에 인라인/평가 코드를 허용하지 않는 강제 CSP가 있으므로 샌드 박스를 사용해야합니다. – Xan

+0

@Xan, 제 목표는 IDE의 일종을 Chrome 앱을 사용하는 매우 단순한 프로그램으로 만드는 것입니다. 어떻게하면 샌드 박스에 넣을 수 있습니까? 내가 모든 것을 위해 노드 모듈을 사용하기 때문에 편집 된 js를 브라우저에 삽입 할 수있는 전략을 생각할 수 없다. js로이 작업을하고 싶었습니다. :/ –