Hướng dẫn cài và sử dụng TinyMCE Vue component cho editor nuxt js
Các đặc điểm chính của TinyMCE Vue component:
-
Tích hợp dễ dàng: Giúp bạn dễ dàng thêm trình soạn thảo vào ứng dụng Vue mà không cần viết quá nhiều mã.
-
Tùy chỉnh: Cho phép cấu hình các tính năng của TinyMCE như thanh công cụ, kiểu văn bản, và nhiều tùy chọn khác.
-
Sự kiện: Cung cấp các sự kiện để theo dõi hành động của người dùng, như khi nội dung thay đổi.
-
Hỗ trợ đa ngôn ngữ: TinyMCE có thể hỗ trợ nhiều ngôn ngữ và định dạng văn bản khác nhau.
Bước 1: Tạo Dự Án Nuxt.js Mới
Nếu bạn chưa có dự án Nuxt.js, bạn có thể tạo một dự án mới :
Chú ý: Có 2 cách để tạo dự án
Nuxtjs
đó là:
- npm
- yarn
Đối với yarn chạy lệnh sau :
yarn create nuxt-app <project-name>
Còn đối với npm thì tạo dự án bằng cách sử dụng npx
:
npx create-nuxt-app servbay-nuxt-app
Bước 2: Cài Đặt Thư Viện TinyMCE Vue component
Mở terminal và chạy lệnh sau để cài đặt TinyMCE vue component
:
Đối với yarn chạy lệnh sau:
yarn add @tinymce/tinymce-vue
Còn với npm thì chạy lệnh :
npm i @tinymce/tinymce-vue
Bước 3: Tạo component cho TinyMCE Vue
Chúng ta sẽ tạo component cho TinyMCE Vue trong file Tinymce.vue
:
<template>
<editor
ref="editor"
v-model="content"
api-key="eyuz91tplckkd5h1nt0pl0se6v27jed5r325526sq41v6mov"
:init="{
height: 500,
menubar: false,
plugins: [
'advlist autolink lists link image charmap print preview anchor',
'searchreplace visualblocks code fullscreen',
'insertdatetime media table paste code help wordcount',
'codesample',
'blockquote',
'image',
'link',
],
codesample_languages: [
{ text: 'JavaScript', value: 'javascript' },
{ text: 'HTML/XML', value: 'markup' },
{ text: 'CSS', value: 'css' },
{ text: 'PHP', value: 'php' },
{ text: 'Python', value: 'python' },
{ text: 'Java', value: 'java' },
{ text: 'C', value: 'c' },
{ text: 'C++', value: 'cpp' },
],
toolbar:
'undo redo | formatselect | bold italic backcolor | \
alignleft aligncenter alignright alignjustify | \
bullist numlist outdent indent | removeformat | link | image | code | codesample | blockquote | help',
image_title: true,
automatic_uploads: true,
file_picker_types: 'image',
setup: (editor) => {
editor.on('Change', () => {
this.$emit('input', editor.getContent())
})
},
file_picker_callback: filePickerCallback,
}"
/>
</template>
<script>
import Editor from '@tinymce/tinymce-vue';
export default {
components: {
editor: Editor
},
props: {
value: {
type: String,
default: ''
}
},
data () {
return {
content: this.value
};
},
watch: {
value (newVal) {
if (newVal !== this.content) {
this.content = newVal;
}
},
content (newVal) {
if (newVal !== this.value) {
this.$emit('input', newVal);
}
}
},
mounted () {
this.$nextTick(() => {
if (!this.$refs.editor || !this.$refs.editor.editorUpload) {
console.error('Editor is not initialized yet.');
}
});
},
methods: {
filePickerCallback (cb, value, meta) {
const input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.addEventListener('change', (e) => {
const file = e.target.files[0];
const reader = new FileReader();
reader.addEventListener('load', () => {
const id = 'blobid' + new Date().getTime();
const blobCache = this.$refs.editor.editor.editorUpload.blobCache;
const base64 = reader.result.split(',')[1];
const blobInfo = blobCache.create(id, file, base64);
blobCache.add(blobInfo);
cb(blobInfo.blobUri(), { title: file.name });
});
reader.readAsDataURL(file);
});
input.click();
}
}
};
</script>
Bước 4: Gọi ra và sử dụng
Giả sử bạn có một component cha gọi là App.vue
. Bạn có thể gọi component TinyMceEditor
như sau:
<template>
<div id="app">
<h1>Trình Soạn Thảo TinyMCE</h1>
<TinyMceEditor />
</div>
</template>
<script>
import TinyMceEditor from './components/TinyMceEditor.vue'
export default {
components: {
TinyMceEditor
}
}
</script>
<style>
/* Thêm các kiểu tùy chỉnh cho ứng dụng ở đây nếu cần */
</style>
Bước 5: Chạy project của bạn
Cuối cùng, bạn có thể chạy project Nuxt.js của mình bằng lệnh:
npm run dev
hoặc
yarn dev
Lợi ích:
- Trải nghiệm người dùng tốt: Cung cấp giao diện dễ sử dụng cho người dùng cuối.
- Tính năng phong phú: Nhiều tính năng hỗ trợ soạn thảo văn bản nâng cao.
- Tương thích: Hoạt động tốt với các framework và nền tảng khác nhau.
Hy vọng thông tin này giúp bạn hiểu rõ hơn về TinyMCE Vue component!
Hatonet kết nối doanh nghiệp ITO toàn cầu.
Giúp các doanh nghiệp IT Việt Nam tiết kiệm chi phí,tìm kiếm
đối tác,mở rộng mạng lưới.
- Mở rộng kênh tìm kiếm khách hàng gia tăng doanh thu.
- Tiết kiệm chi phí quan hệ tìm đối tác.
- Ứng tuyển trực tuyến bất cứ lúc nào khi có yêu cầu.
- Trực tiếp liên kết với công ty quốc tế
Liên hệ :
Email: hello@hatonet.vn
Zalo: https://zalo.me/hatonet