提交 53e534f2 编写于 作者: S SheetJS

systemjs node/browser examples [ci skip]

上级 e996df7b
# Browserify
The library is compatible with browserify and should just work out of the box.
This demo uses the `require` form to expose the whole library, enabling client
code to just `require('xlsx')`. The included demo and Makefile do just that.
systemjs/
xlsx.full.min.js
.PHONY: test
test:
cp ../../dist/xlsx.full.min.js .
node systemjsnode.js
# SystemJS Demos
SystemJS supports both browser and nodejs deployments. It does not recognize
browser environments and automatically suppress node core modules, but with some
configuration magic SystemJS can load the library.
## Browser
SystemJS fails by default because the library does not export anything in the
web browser. This is easily addressed in the config:
```js
SystemJS.config({
meta: {
'xlsx': {
exports: 'XLSX' // <-- tell SystemJS to expose the XLSX variable
}
},
map: {
'xlsx': 'xlsx.full.min.js', // <-- make sure xlsx.full.min.js is in same dir
'fs': '', // <--|
'crypto': '', // <--| suppress native node modules
'stream': '' // <--|
}
});
SystemJS.import('main.js')
```
In your main JS script, just use require:
```js
var XLSX = require('xlsx');
var w = XLSX.read('abc,def\nghi,jkl', {type:'binary'});
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
console.log(j);
```
The file functions `readFile` and `writeFile` are not available in the browser.
## Node
The node core modules should be mapped to their `@node` equivalents:
```js
var SystemJS = require('systemjs');
SystemJS.config({
map: {
'xlsx': 'node_modules/xlsx/xlsx.js',
'fs': '@node/fs',
'crypto': '@node/crypto',
'stream': '@node/stream'
}
});
```
And use is pretty straightforward:
```js
SystemJS.import('xlsx').then(function(XLSX) {
/* XLSX is available here */
var w = XLSX.readFile('test.xlsx');
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
console.log(j);
});
```
var XLSX = require('xlsx');
console.log(XLSX);
var w = XLSX.read('abc,def\nghi,jkl', {type:'binary'});
var j = XLSX.utils.sheet_to_json(w.Sheets[w.SheetNames[0]], {header:1});
console.log(j);
# Webpack
This library is built with some dynamic logic to determine if it is invoked in a
script tag or in nodejs. Webpack does not understand those feature tests, so by
default it will do some strange things.
## Suppressing the Node shims
The library properly guards against accidental leakage of node features in the
browser but webpack disregards those. The config should explicitly suppress:
```js
node: {
fs: false,
process: false,
Buffer: false
}
```
## Exporting the XLSX variable
This library will not assign to module.exports if it is run in the browser. To
convince webpack, set `output` in the webpack config:
```js
output: {
libraryTarget: 'var',
library: 'XLSX'
}
```
......@@ -3,9 +3,6 @@ module.exports = {
libraryTarget: 'var',
library: 'XLSX'
},
module: {
noParse: [/jszip.js$/]
},
node: {
fs: false,
process: false,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册