如何将npm模块编译成浏览器脚本?

时间:2015-11-25 11:36:29

标签: javascript node.js npm gulp browserify

我想自定义Parse SDK。它们通过npm module提供源,使其可用于节点环境。

如何将此节点模块编译为独立的parse.js脚本,该脚本将在浏览器上运行?

我尝试使用browserify作为

browserify ./parse -o parse.js

但它吐出的parse.js非常大,仍然包含节点剩余:processrequire命令。虽然它在浏览器上执行时没有任何错误,但浏览器无法找到Parse定义。

2 个答案:

答案 0 :(得分:0)

AFAIK,Parse-module并没有将自己暴露为浏览器全局。您应该有一个文件,例如包含您的定义的app.js,并使用它来要求Parse模块。

例如:

//app.js
var Parse = require("parse");
console.log(Parse)

捆绑它(捆绑包将包含您的app.js和parse模块的内容:

browserify ./app.js -o app.bundle.js

并将捆绑的文件包含在HTML文件

<script src="app.bundle.js"

打开HTML文件后,您应该会在控制台中看到Parse对象。

答案 1 :(得分:0)

找到将解析npm模块编译成浏览器脚本的正确方法是使用:

browserify path_to_module --standalone global_name_to_expose > output.js

对于任何其他脚本,它应该是:

internal static readonly DependencyPropertyKey TotalChildCountPropertyKey =
        DependencyProperty.RegisterAttachedReadOnly("TotalChildCount", typeof(int), typeof(MyAttachClass), new FrameworkPropertyMetadata(0));

    public static readonly DependencyProperty TotalChildCountProperty = TotalChildCountPropertyKey.DependencyProperty;


    public static int GetTotalChildCount(DependencyObject obj)
    {
        return (int)obj.GetValue(TotalChildCountProperty);
    }

    public static void SetTotalChildCount(DependencyObject obj, int value)
    {
        obj.SetValue(TotalChildCountPropertyKey, value);
    }

此外,由于解析节点模块有很多节点代码,我建议人们使用envify后跟uglify来优化代码。