gpt4 book ai didi

node.js - Browserify - 如何在浏览器中调用通过 browserify 生成的文件中捆绑的函数

转载 作者:行者123 更新时间:2023-11-28 06:52:09 28 4
gpt4 key购买 nike

我是 Nodejs 和 browserify 的新手。我从这个开始link .

我有文件 main.js,其中包含此代码

var unique = require('uniq');

var data = [1, 2, 2, 3, 4, 5, 5, 5, 6];

this.LogData =function(){
console.log(unique(data));
};

现在我使用 npm 安装 uniq 模块:

 npm install uniq

然后,我使用 browserify 命令将从 main.js 开始的所有必需模块捆绑到一个名为 bundle.js 的文件中:

browserify main.js -o bundle.js

生成的文件如下所示:

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var unique = require('uniq');

var data = [1, 2, 2, 3, 4, 5, 5, 5, 6];

this.LogData =function(){
console.log(unique(data));
};

},{"uniq":2}],2:[function(require,module,exports){
"use strict"

function unique_pred(list, compare) {
var ptr = 1
, len = list.length
, a=list[0], b=list[0]
for(var i=1; i<len; ++i) {
b = a
a = list[i]
if(compare(a, b)) {
if(i === ptr) {
ptr++
continue
}
list[ptr++] = a
}
}
list.length = ptr
return list
}

function unique_eq(list) {
var ptr = 1
, len = list.length
, a=list[0], b = list[0]
for(var i=1; i<len; ++i, b=a) {
b = a
a = list[i]
if(a !== b) {
if(i === ptr) {
ptr++
continue
}
list[ptr++] = a
}
}
list.length = ptr
return list
}

function unique(list, compare, sorted) {
if(list.length === 0) {
return []
}
if(compare) {
if(!sorted) {
list.sort(compare)
}
return unique_pred(list, compare)
}
if(!sorted) {
list.sort()
}
return unique_eq(list)
}

module.exports = unique
},{}]},{},[1])

将bundle.js文件包含到我的index.htm页面后,如何调用logData函数?

最佳答案

使用 Browserify 捆绑独立模块的关键部分是 --s选项。它使用 Node 的 module.exports 公开您从模块导出的任何内容。作为全局变量。然后该文件可以包含在 <script> 中标签。

仅当由于某种原因您需要公开该全局变量时,您才需要执行此操作。就我而言,客户需要一个可以包含在网页中的独立模块,而无需担心 Browserify 业务。

下面是我们使用 --s 的示例参数为 module 的选项:

browserify index.js --s module > dist/module.js

这会将我们的模块公开为名为 module 的全局变量。 .
Source

更新:感谢@fotinakis。确保您通过 --standalone your-module-name 。如果你忘记了--standalone接受一个参数,Browserify 可能会默默地生成一个空模块,因为它找不到它。

希望这能为您节省一些时间。

关于node.js - Browserify - 如何在浏览器中调用通过 browserify 生成的文件中捆绑的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32866958/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com