我是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函数?
默认情况下,browserify不允许您从浏览器化的代码之外访问模块- 如果要在浏览器化的模块中调用代码,则应将代码与模块一起进行浏览器化。有关示例,请参见http://browserify.org/。
当然,您还可以像这样从外部显式地使您的方法可访问:
window.LogData =function(){ console.log(unique(data)); };
然后,您可以LogData()从页面上的其他任何地方打电话。
LogData()