2016-09-18 72 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做这个工作。 :/ –

相关问题