zoukankan      html  css  js  c++  java
  • jointjs +vue +vite 引起的本地流程图可正常画出,放到测试环境就报错的问题

    问题:之前项目未使用vite,使用的时webpack模式,所以joint画的模块在本地和线上是可以正常使用,项目更新未使用vite之后,就出现了问题

    原因:由于项目中的流程节点需要自定义,所以在joint.shapes上自定义一个类型,如 joint.shapes.flow = {},接着在flow中增加我们的节点类型,本地是可以将flow属性增加到shapes上的,但是vite打包之后是无法添加上去,这个就是根本原因

    原始代码

    import * as joint from 'jointjs';
    
    joint.shapes.flow = {};
    
    export const fGeneral = (type, data) => {
      return joint.shapes.basic.Generic.extend({
        markup:
          '<g class="rotatable">
      <g class="inPorts"/><g class="outPorts"/>
      <g class="scalable"></g>
      <rect class="background"/>
      <rect class="color-band"/>
      <g class="icon"><image/></g>
      <text class="title"/>
     <text class="message"/>
       <g class="error"><image/></g>
      <g class="btn btn-code"><image/></g>
    </g>
    ',
        defaults: joint.util.defaultsDeep(
          {
            id: type,
            type: 'flow.Start',
            size: {  80, height: 54 },
            attrs: {自已的定义},
            ports: {自己的定义},
            position: { x: data.posX, y: data.posY }
          },
          joint.shapes.basic.Rect.prototype.defaults
        ),
        initialize: function() {
          joint.shapes.basic.Rect.prototype.initialize.apply(this, arguments);
        }
      });
    };
    joint.shapes.flow.Start= fGeneral();
    export const createStart=(data)=>{
       return new joint.shapes.flow.Start({});
    };
     
    在需要的位置,调用createStart方法

    解决问题 - 根本是不挂载在shapes上

    import * as joint from 'jointjs';
    
    joint.shapes.flow = {};
    
    export const fGeneral = (type, data) => {
      const result = joint.shapes.basic.Generic.extend({
        markup:
          '<g class="rotatable">
      <g class="inPorts"/><g class="outPorts"/>
      <g class="scalable"></g>
      <rect class="background"/>
      <rect class="color-band"/>
      <g class="icon"><image/></g>
      <text class="title"/>
     <text class="message"/>
       <g class="error"><image/></g>
      <g class="btn btn-code"><image/></g>
    </g>
    ',
        defaults: joint.util.defaultsDeep(
          {
            id: type,
            type: 'flow.Start',
            size: {  80, height: 54 },
            attrs: {自已的定义},
            ports: {自己的定义},
            position: { x: data.posX, y: data.posY }
          },
          joint.shapes.basic.Rect.prototype.defaults
        ),
        initialize: function() {
          joint.shapes.basic.Rect.prototype.initialize.apply(this, arguments);
        }
      });
      return new result();
    };
    
    export const createStart=(data)=>{
       return fGeneral("Start",data,"");
    };
    
    在需要的位置,调用createStart方法
  • 相关阅读:
    dubbo入门(一)
    java中文件操作《一》
    Unity 游戏框架搭建 2019 (七) 自定义快捷键
    凉鞋:我所理解的框架 【Unity 游戏框架搭建】
    Unity 游戏框架搭建 2019 (六) MenuItem 复用
    Unity 游戏框架搭建 2019 (五) 打开所在文件夹
    Unity 游戏框架搭建 2019 (四) 导出 UnityPackage
    Unity 游戏框架搭建 2019 (三) 生成文件名到剪切板
    Unity 游戏框架搭建 2019 (二) 文本复制到剪切板
    Unity 游戏框架搭建 2019 (一) 简介与第一个示例文件名的生成
  • 原文地址:https://www.cnblogs.com/fyjz/p/15219510.html
Copyright © 2011-2022 走看看