如何手动绑定两个javascript文件?

如何手动绑定两个javascript文件?,javascript,module,bundle,Javascript,Module,Bundle,我正在用Javascript为Espraino(嵌入式平台)编写代码,但有一个限制:只允许将一个文件保存到设备中 要使以下代码正常工作: var x = new require("Something"); x.hello() Something模块应该可以从main.js文件访问。Something模块是一个单独的文件,如下所示: function Something() { .... } Something.prototype.hello = function() { co

我正在用Javascript为Espraino(嵌入式平台)编写代码,但有一个限制:只允许将一个文件保存到设备中

要使以下代码正常工作:

var x = new require("Something");
x.hello()
Something
模块应该可以从
main.js
文件访问。
Something
模块是一个单独的文件,如下所示:

function Something() {
    ....
}

Something.prototype.hello = function() {
    console.log("Hello there!");
}

exports = Something;

问题是;如何将这两个文件连接起来,同时仍使用
Something
模块作为
require(“Something”)格式?

为什么不使用webpack将模块文件捆绑到一个文件中呢。 我假设您当前的目录是您的项目目录

  • 首先在以下位置安装nodejs:
或者sudo apt获得安装nodejs

  • 其次,使用此命令安装webpack
npm i-g网页包

  • 捆绑您的模块
要生成捆绑包,请运行以下命令:

webpack./main.js bundle.js

  • 注意:bundle.js将包含main.js中所需的所有模块文件

答案可在Espruno论坛找到:

# create bundle
BUNDLE="init.min.js"
echo "" > ${BUNDLE}

# Register modules via `Modules.addCached()` method
# see: http://forum.espruino.com/comments/12899741/
MODULE_NAME="FlashEEPROM"
MODULE_STR=$(uglifyjs -c -m -- ${MODULE_NAME}.js | sed 's/\"/\\\"/g' | sed "s/\n//g")
echo "Modules.addCached(\"${MODULE_NAME}\", \"${MODULE_STR}\");" >> ${BUNDLE}
uglifyjs -c -m --  init.js >> ${BUNDLE}

https://www.npmjs.com/package/espruino
该工具具有准备代码(连接+最小化)以上载到主板的功能。
我在构建过程中使用它,将typescript代码编译成javascript,然后准备板上传。教程在这里

是的,就像上面提到的一样,您需要修改代码。您不能在此处使用webpack或grunt。他们将传输将破坏您的
require
库的代码

以下是我如何在我的案例中实现这一点:

我把我所有的文件放在一个文件夹中(比如/src)。不要从另一个文件导入一个文件。然后将文件夹中的所有文件缩小为一个文件(例如index.js)

uglifyjs src/*--compress--mangle-o./index.js

然后将这个index.js上传到Espraino。您需要首先全局安装此库

npm安装-g埃斯普瑞诺

espraino-p/dev/cu.wchusbserial1420-b 115200——电路板ESP8266_4MB.json-e'save()'index.js

我在这里举了一个简单的例子:


我不能使用webpack,因为这不是web应用程序。我还尝试了browserify,但没有成功。