Merge pull request #129 from ryanxcharles/feature/require-on-use

Require on use
This commit is contained in:
Ryan X. Charles 2014-03-10 17:52:07 -04:00
commit 73ceb2e04e
3 changed files with 41 additions and 41 deletions

View File

@ -1,49 +1,50 @@
/* /*
* Bitcore bindings for the browser One way to require files is this simple way:
*/
module.exports.bignum = require('bignum');
module.exports.base58 = require('base58-native');
module.exports.buffertools = require('buffertools');
module.exports.config = require('./config');
module.exports.const = require('./const');
module.exports.Deserialize = require('./Deserialize');
module.exports.log = require('./util/log');
module.exports.networks = require('./networks');
module.exports.util = require('./util/util');
module.exports.EncodedData = require('./util/EncodedData');
module.exports.VersionedData = require('./util/VersionedData');
module.exports.Address = require('./Address'); module.exports.Address = require('./Address');
module.exports.Opcode = require('./Opcode');
module.exports.Script = require('./Script'); However, that will load all classes in memory even if they are not used.
module.exports.Transaction = require('./Transaction'); Instead, we can set the 'get' property of each class to only require them when
module.exports.Connection = require('./Connection'); they are accessed, saving memory if they are not used in a given project.
module.exports.Peer = require('./Peer'); */
module.exports.Block = require('./Block'); var requireWhenAccessed = function(name, file) {
module.exports.ScriptInterpreter = require('./ScriptInterpreter'); Object.defineProperty(module.exports, name, {get: function() {return require(file)}});
module.exports.Bloom = require('./Bloom'); };
module.exports.KeyModule = require('./Key');
module.exports.SINKey = require('./SINKey'); requireWhenAccessed('bignum', 'bignum');
module.exports.SIN = require('./SIN'); requireWhenAccessed('base58', 'base58-native');
module.exports.PrivateKey = require('./PrivateKey'); requireWhenAccessed('buffertools', 'buffertools');
module.exports.RpcClient = require('./RpcClient'); requireWhenAccessed('config', './config');
module.exports.Wallet = require('./Wallet'); requireWhenAccessed('const', './const');
module.exports.WalletKey = require('./WalletKey'); requireWhenAccessed('Deserialize', './Deserialize');
requireWhenAccessed('log', './util/log');
requireWhenAccessed('networks', './networks');
requireWhenAccessed('util', './util/util');
requireWhenAccessed('EncodedData', './util/EncodedData');
requireWhenAccessed('VersionedData', './util/VersionedData');
requireWhenAccessed('Address', './Address');
requireWhenAccessed('Opcode', './Opcode');
requireWhenAccessed('Script', './Script');
requireWhenAccessed('Transaction', './Transaction');
requireWhenAccessed('Connection', './Connection');
requireWhenAccessed('Peer', './Peer');
requireWhenAccessed('Block', './Block');
requireWhenAccessed('ScriptInterpreter', './ScriptInterpreter');
requireWhenAccessed('Bloom', './Bloom');
requireWhenAccessed('KeyModule', './Key');
requireWhenAccessed('SINKey', './SINKey');
requireWhenAccessed('SIN', './SIN');
requireWhenAccessed('PrivateKey', './PrivateKey');
requireWhenAccessed('RpcClient', './RpcClient');
requireWhenAccessed('Wallet', './Wallet');
requireWhenAccessed('WalletKey', './WalletKey');
module.exports.Buffer = Buffer; module.exports.Buffer = Buffer;
if (typeof process.versions === 'undefined') { if (typeof process.versions === 'undefined') {
// Browser specific // Browser specific
module.exports.bignum.config({EXPONENTIAL_AT: 9999999, DECIMAL_PLACES: 0, ROUNDING_MODE: 1}); module.exports.bignum.config({EXPONENTIAL_AT: 9999999, DECIMAL_PLACES: 0, ROUNDING_MODE: 1});
// module.exports.PeerManager = function () {
// throw new Error('PeerManager not availabe in browser Bitcore, under .bitcore. Use it with: require(\'PeerManager\');');
// };
} }
else { else {
// Nodejs specific // Nodejs specific
module.exports.PeerManager = require('./PeerManager'); requireWhenAccessed('PeerManager', './PeerManager');
} }

View File

@ -35,6 +35,7 @@ var modules = [
'PeerManager', 'PeerManager',
'PrivateKey', 'PrivateKey',
'RpcClient', 'RpcClient',
'Key',
'SIN', 'SIN',
'SINKey', 'SINKey',
'Script', 'Script',
@ -58,9 +59,7 @@ var b = browserify(opts);
b.require('browserify-bignum/bignumber.js', {expose: 'bignum'} ); b.require('browserify-bignum/bignumber.js', {expose: 'bignum'} );
b.require('browserify-buffertools/buffertools.js', {expose:'buffertools'}); b.require('browserify-buffertools/buffertools.js', {expose:'buffertools'});
b.require('./bitcore', {expose: 'bitcore'}); b.require('./bitcore', {expose: 'bitcore'});
b.require('buffer', {expose: 'buffer'});
b.require('base58-native'); b.require('base58-native');
b.require('./Key.js', {expose: 'KeyModule'});
b.require('./util/log'); b.require('./util/log');
b.require('./util/util'); b.require('./util/util');
b.require('./util/EncodedData'); b.require('./util/EncodedData');

View File

@ -12,7 +12,7 @@
<script src="../browser/bundle.js"></script> <script src="../browser/bundle.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var Address = require('Address'); var Address = require('bitcore').Address;
print = function(s){ print = function(s){
var div = document.getElementById('content'); var div = document.getElementById('content');