I just came across the same combination: Fabric.js and Vue.js and was wondering, but I'm working with VueJs few days and I don't know how to set up fabric in vue.
Can you share some experience for me?
5 Answers
Install Fabric
yarn add fabric # or npm install -s fabric
Basic component (based on @laverick's answer):
<template>
<canvas ref="can" width="200" height="200"></canvas>
</template>
<script>
import { fabric } from 'fabric';
export default {
mounted() {
const ref = this.$refs.can;
const canvas = new fabric.Canvas(ref);
const rect = new fabric.Rect({
fill: 'red',
width: 20,
height: 20
});
canvas.add(rect);
}
};
</script>
Assuming you're using ES6 and a bundler such as Webpack you can start using Fabric.js as follows:
At the command line
npm install fabric
or
yarn add fabric
Then import it in your .js file.
import { fabric } from 'fabric'
Then set up your Canvas in Vue's mounted: method.
Note: For me the default fabric npm module resulted in quite a large package. I ended up using the fabric-browseronly module instead. Fabric.js has a lot of features you might not need, in which case you could build your own version here or via the command line.
4 Comments
created happens before the DOM gets painted so the component hadn't rendered a DOM to bind to yet...SyntaxError: The requested module '/@modules/fabric/dist/fabric.js' does not provide an export named 'fabric'<script setup> import { fabric } from 'fabric'Composition API version of the code provided by @ben-winding.
<template>
<canvas ref="can" width="200" height="200"></canvas>
</template>
<script setup>
import { useTemplateRef, onMounted } from "vue";
import { fabric } from "fabric";
const can = useTemplateRef("can")
onMounted(() => {
const canvas = new fabric.Canvas(can.value)
const rect = new fabric.Rect({
fill: 'red',
width: 20,
height: 20
});
canvas.add(rect);
})
</script>