이번에는 Vue에서 Jointjs 속성을 사용하는 방법을 보여드리겠습니다. Vue에서 Jointjs 속성을 사용할 때 주의사항은 무엇인가요?
join.js를 vue에 도입할 때의 문제 예전에 인터넷에서 많이 검색해봤는데 아무도 명확한 답변을 해주지 않아서 이틀간의 고민 끝에 드디어 알아내고 기록을 남겼습니다.
우선 stackoverflow Click me click me
이 글을 읽은 후에는 대략적으로라도 살펴보도록 하겠습니다.
vue에서 먼저 실행해 보세요. project npm installjoinjs --save
그런 다음 항목 파일에 다음 두 줄을 추가하세요. 내 것은 main.js이거나 app.js일 수도 있고, 전역 변수로 Joint.js 및 jquery를 사용하세요
window.$ = require('jquery'); window.joint = require('jointjs');
여기서 주의할 점 네, Joint.js는 backbone, jquery, lodash에 의존하기 때문에 스크립트를 통해 소개할 때 이 파일들을 하나씩 import해야 하지만, vue의 npm을 사용할 때는 필요하지 않습니다. npm이 도입한 .js는 이미 기본적으로 이러한 파일을 캡슐화했습니다.
이런 방식으로 도입하는 것만으로는 충분하지 않습니다. 이미지를 정상적으로 로드할 수 있지만 드래그 앤 드롭할 수 없는 문제가 발생할 수 있습니다. 이러한 문제가 발생하는 경우 일반적으로 Joint.js와 환경 간의 충돌로 인해 발생합니다. 자신의 vue 프로젝트에서 읽거나 읽을 수 없게 됩니다.
원본 프로젝트에 element, axios, vuex, jquery를 설치했는데,join.js를 설치한 후, 이후에 프로젝트를 다시 빌드하고 element, axios, vuex만 설치했습니다. jquery를 피하기 위해 Joint.js에서 jquery와 충돌이 발생하여 나중에 jquery가 설치되지 않았습니다.
이거 괜찮아요? 위 링크의 예제를 실행할 수 있나요? 이렇게:
<template> <p> <h1>Home</h1> <p id="myholder"></p> </p> </template> <script> export default { created() { let graph = new joint.dia.Graph; let paper = new joint.dia.Paper({ el: $('#myholder'), 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(); rect2.translate(300); let link = new joint.dia.Link({ source: { id: rect.id }, target: { id: rect2.id } }); graph.addCells([rect, rect2, link]); } } </script>
NoNoNo, 렌더링이 생성된 lifecycle에 배치된다는 점에 유의하세요. vue의 라이프사이클에 따르면 조인트 마운팅 p의 el을 찾을 수 없습니다. $('#myholder'), In other 즉, 실행 시 오류가 보고됩니다. 내 해결 방법은 p를 클릭하고 생성된 조인트의 내용을 가져와서 표시하려면 클릭해야 한다는 것입니다. 아직은 기다려보겠습니다. 개선(~ ̄▽ ̄)~
즉, 코드는 다음과 같습니다.
<template> <p> <p id="myholder" @click="click_joint"></p> </p> </template> <script> export default { methods:{ click_joint() { let graph = new joint.dia.Graph; let paper = new joint.dia.Paper({ el: $('#myholder'), 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(); rect2.translate(300); let link = new joint.dia.Link({ source: { id: rect.id }, target: { id: rect2.id } }); graph.addCells([rect, rect2, link]); } } } </script>
참고로 npm을 통해 도입할 경우에는jointjs만 설치하면 됩니다. lodash, backbone, jquery를 설치하거나 페이지에join.css 파일을 가져올 필요가 없습니다. 저자는 이전에 스크립트를 통해 조인트.js를 여러 번 시도했는데 성공하지 못했습니다. 다른 친구들이 성공적으로 시도하면 자유롭게 공유해 주세요.
이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 도서:
위 내용은 vue에서 Jointjs 속성을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!