The GoJS installation contains the GoJS library as an ES6 module, extensions as ES6 modules, and examples of using GoJS with ES6 modules.
The GoJS library file "go.js" does not use the export
keyword,
for compatibility with all JavaScript environments.
So we have had to provide different libraries that are ES6 modules.
In the release
folder, they are the go-module.js
and go-debug-module.js
files.
In addition, there is an ES6 module-specific TypeScript definition file: go-module.d.ts
.
In the extensionsJSM
directory, all of the samples use ES6 modules.
Each of the JavaScript or TypeScript files imports the GoJS library this way:
import * as go from '../release/go-module.js';
In order to load GoJS and other ES6 modules, the HTML page also must use the type="module"
script tag:
<script type="module">
import * as go from "../release/go-module.js";
. . .
</script>
Most browsers will not display resources with <script type="module">
if they are served from a local file system,
so you will need to open an HTML page using modules from a web server to see the results on localhost:.
Another example, this time using an extension:
<script type="module">
import * as go from "../release/go-module.js";
import { LinkLabelDraggingTool } from '../extensionsJSM/LinkLabelDraggingTool.js';
const $ = go.GraphObject.make;
const myDiagram =
new go.Diagram('myDiagramDiv', . . .);
// install the LinkLabelDraggingTool as a "mouse move" tool
myDiagram.toolManager.mouseMoveTools.insertAt(0, new LinkLabelDraggingTool());
. . .
</script>
Note that all those modules the depend on GoJS must import exactly the same library file, in this case "../release/go-module.js". Any inconsistencies will cause the GoJS library to be loaded multiple times, which can cause subtle errors and thus results in the library signaling error.
We recommend that you copy the extension file(s) that you want to use into your own project so that you can be sure that
all of the import
statements import the same GoJS library.
The extensions are all in TypeScript and were all compiled with this tsconfg.json
file:
{
"compilerOptions": {
"target": "es6",
"strict": true
}
}
RequireJS
Both the go.js
library and the go-debug.js
library can be loaded via RequireJS.
The extensionsTS
directory contains all of the extension classes from the
extensions
directory, but in TypeScript and pre-compiled as UMD modules.
This is reflected in that directory's tsconfig.json
:
{
"compilerOptions": {
"module": "umd",
"target": "es5",
"strict": true
}
}
The generated JavaScript can then be loaded as UMD modules via require
.
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js"></script>
<script id="code">
function init() {
require(["CheckBoxesScript"], function (app) {
app.init();
});
}
</script>
GoJS