2016-09-18 35 views
1

我最近開始探索Browserify,用於捆綁Node模塊並在瀏覽器中使用它們。它很整潔,效果很好,但是我想要改善工作流程。在我的使用情況下,我有一個script.js文件,需要像Cylon如何在瀏覽器中動態創建JavaScript文件

爲了簡潔節點模塊,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(); 

我一直在尋找在bundle.js文件browserify產生,我可以找到上面提到的確切的代碼塊,我認爲一個節點進程是用這個代碼和一些綁定開始的。我希望script.js文件是動態的,以允許用戶在LED上使用不同的引腳或針對此問題進行任何其他小改動。由於我沒有更改此文件的任何依賴關係,因此我應該可以將bundle.js中的該塊替換爲script.js文件的新內容,因爲其他模塊已經加載並捆綁在bunndle.js右邊?

我想知道這是否可以在瀏覽器設置。 Chrome應用允許file Storage,因此我可以在初始創建後動態生成bundle.js,我只需插入script.js的內容並在HTML文件中加載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或應用程序中? –

+0

@VivekPradhan它會非常迂迴:執行編輯後的JS,您需要使用沙盒,因爲Chrome應用程序具有禁用內聯/ eval代碼的強制CSP。 – Xan

+0

@Xan,我的目標是使某種IDE成爲使用chrome應用程序的一個非常簡單化的過程。那麼我如何使用沙箱?想不到一個允許我將編輯的js注入瀏覽器的策略,因爲我使用的是節點模塊。我想用js做這個工作。 :/ –

相關問題