Browserify - 如何在浏览器中调用通过Browserify生成的文件中打包的函数

112

我是nodejs和browserify的新手。我从这个链接开始学习。

我有一个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函数?

你想在哪里调用它?为什么要调用它? - artur grzesiak
2
@arturgrzesiak:我想在我的另一个项目中利用这个函数,该项目将在浏览器中运行。 - SharpCoder
12个回答

-1
window.LogData =function(data){
   return unique(data);
};

只需简单地调用函数LogData(data)

这只是对thejh的答案进行微小的修改,但却十分重要


这个修改与提问者的关注点无关,并且鉴于已有的答案,也没有添加任何新信息。 - Galen Long

-2
为了调试目的,我在我的code.js中添加了这行代码:
window.e = function(data) {eval(data);};

那么我甚至可以运行包外的任何东西。

e("anything();");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接