简体   繁体   English

如何将JointJS与使用Angular CLI构建的应用程序一起使用?

[英]How can I use JointJS with an application built with Angular CLI?

I have installed jointjs via npm and also installed typings and code compiles/builds fine. 我已经通过npm安装了jointjs,并且还安装了typings和代码编译/构建。

Code

import { Component } from '@angular/core';
import  * as joint from '../../node_modules/jointjs/dist/joint.min';


export class AppComponent {
  title = 'app works!';
  constructor(
  ) {
    // console.log(joint)// private jint: joint,
  }

  ngOnInit() {
    var graph = new joint.dia.Graph;
  }
}

Error shows up on the browser: 浏览器上显示错误:

Failed to compile.

/home/vinay/angularapps/jjs/src/app/app.component.ts (17,31): Property 'Graph' does not exist on type '{}'.)

my cli.json file.. added the scripts and styles for jointjs 我的cli.json文件..为jointjs添加了脚本和样式

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "version": "1.0.0-beta.32.3",
    "name": "jjs"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.json",
      "prefix": "app",
      "styles": [
        "styles.css",
        "../node_modules/jointjs/css/layout.css"
      ],
      "scripts": ["../node_modules/jointjs/dist/joint.js"],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "files": "src/**/*.ts",
      "project": "src/tsconfig.json"
    },
    {
      "files": "e2e/**/*.ts",
      "project": "e2e/tsconfig.json"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    "styleExt": "css",
    "component": {}
  }
}

my tsconfig.json file where i added allowJs to true 我的tsconfig.json文件,其中我将allowJs添加到true

{
  "compilerOptions": {
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es2016",
      "dom"
    ],
    "mapRoot": "./",
    "module": "es2015",
    "moduleResolution": "node",
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "allowJs": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ]
  }
}

I am not able to figure out how to create a simple hello world application provided on this link http://resources.jointjs.com/tutorial/hello-world 我无法弄清楚如何在此链接上创建一个简单的hello world应用程序http://resources.jointjs.com/tutorial/hello-world

ok i finally got to get jointjs working with @angular cli and below are the steps 好吧,我终于得到了联合工作与@angular cli以及下面的步骤

in the command prompt within the angular project directory angular项目目录中的命令提示符下

  1. ng new your-app 新的你的应用程序
  2. cd into your-app 进入你的应用程序
  3. npm install jquery --save npm install @types/jquery --save-dev npm install jquery --save npm install @ types / jquery --save-dev
  4. npm install backbone --save npm install @types/backbone --save-dev npm install backbone --save npm install @ types / backbone --save-dev
  5. npm install jointjs --save npm install @types/jointjs --save-dev npm install jointjs --save npm install @ types / jointjs --save-dev
  6. npm install lodash@3.10.1 --save npm install @types/lodash@3.10.1 --save-dev npm install lodash@3.10.1 --save npm install @ types / lodash @ 3.10.1 --save-dev

Make sure in package.json the entries show up under dependencies and devDepencies for backbone, jquery, jointjs, lodash and make sure they are of the versions 确保在package.json中的条目显示在依赖关系和devDepencies for backbone,jquery,jointjs,lodash并确保它们是版本

jointjs 1.0.3, backbome = 1.3.3, jquery = 3.1.1, lodash = 3.10.1 jointjs 1.0.3,backbome = 1.3.3,jquery = 3.1.1,lodash = 3.10.1

in angular-cli.json file angular-cli.json文件中

in the styles property and scripts;[ ] property add the joint js details like below 在styles属性和脚本中; []属性添加联合js详细信息,如下所示

  "styles": [
    "styles.css",
    "../node_modules/jointjs/css/layout.css"
  ],
  "scripts": [
    "../node_modules/jquery/dist/jquery.min.js",
    "../node_modules/jointjs/dist/joint.js"
  ],

in your component.html 您的component.html中

 <div id="paper"></div>

in your component.ts 你的component.ts中

import * as jQuery from 'jquery';
import * as _ from 'lodash';
import * as $ from 'backbone';
const joint = require('../../../../node_modules/jointjs/dist/joint.js');

ngOnInit() {
    let graph = new joint.dia.Graph;

    let paper = new joint.dia.Paper({
      el: jQuery("#paper"),
      width: 600,
      height: 200,
      model: graph,
      gridSize: 1
    });

    let rect = new joint.shapes.basic.Rect({
      position: { x: 100, y: 30 },
      size: { width: 100, height: 30 },
      attrs: { rect: { fill: 'blue' }, text: { text: 'my box', fill: 'white' } }
    });

    let rect2 = rect.clone() as joint.shapes.basic.Rect;
    rect2.translate(300);

    var link = new joint.dia.Link({
      source: { id: rect.id },
      target: { id: rect2.id }
    });

    graph.addCells([rect, rect2, link]);
}

I'm using @angular/cli : 1.0.4 version and im going to sum everything you need to run JointJS without a problem. 我正在使用@ angular / cli:1.0.4版本,我将总结你运行JointJS所需的一切没有问题。

Use these commands to install npm packages correctly and make sure the right versions are present. 使用这些命令正确安装npm软件包并确保存在正确的版本。 Types on devdependencies and the libraries on normal dependencies thats important. devdependencies上的类型和正常依赖项上的库很重要。

npm install --save lodash@3.10.1 jquery@3.1.1 backbone jointjs
npm install --save-dev @types/lodash@3.10.1 @types/jquery @types/backbone @types/jointjs

This is my scripts in the angular-cli.json file: 这是我在angular-cli.json文件中的脚本:

"scripts": [
    "../node_modules/jquery/dist/jquery.js",
    "../node_modules/lodash/index.js",
    "../node_modules/backbone/backbone.js",
    "../node_modules/jointjs/dist/joint.js"
  ]

This is my styles in the angular-cli.json file to work properly: 这是我在angular-cli.json文件中的样式才能正常工作:

"styles": [
    "styles.scss",
    "../node_modules/jointjs/css/layout.css",
    "../node_modules/jointjs/css/themes/material.css",
    "../node_modules/jointjs/css/themes/default.css"
  ],

And the examples are same as above. 并且示例与上面相同。 Hope i could help. 希望我能提供帮助。 Happy Coding! 快乐的编码!

Just to mention there are a few things wrong or missing in the accepted answer: 只是提到接受的答案中有一些错误或遗漏:

  1. includes in component.ts should be: 包含在component.ts中应该是:

     declare var $:JQueryStatic; import * as _ from 'lodash'; import * as backbone from 'backbone'; import * as joint from 'jointjs'; 
  2. you should add the version on the npm install commands for jquery and backbone to ensure to use the suggestioned version as mentioned. 你应该在jquery和backbone的npm install命令中添加版本,以确保使用上面提到的建议版本。

  3. you also (additionaly) must add following 2 css files into angular-cli.json: 你还(另外)必须将以下2个css文件添加到angular-cli.json中:

     "../node_modules/jointjs/css/themes/material.css", "../node_modules/jointjs/css/themes/default.css" 
  4. use $ in the code rather than jQuery: 在代码中使用$而不是jQuery:

     let paper = new joint.dia.Paper({ el: $('#paper'), ... }); 

hth some one, 有一个,

PS: i tested it with angular 4.1 and angular-cli 1.0.3 PS:我用角4.1和角度cli 1.0.3测试它

  1. npm install jointjs --save
  2. at angular.cli.json insert at scripts : ./node_modules/jointjs/dist/jointjs.js 在angular.cli.json插入脚本: ./node_modules/jointjs/dist/jointjs.js
  3. at angular.cli.json insert at styles : ./node_modules/jointjs/css/layout.css 在angular.cli.json插入样式: ./node_modules/jointjs/css/layout.css

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM