cari
Rumahhujung hadapan webView.jsVue3.0 ciri baharu dan ringkasan penggunaan (tersusun dan dikongsi)

Artikel ini akan berkongsi dengan anda ciri baharu dan ringkasan penggunaan vue3.0 Ia termasuk beberapa perubahan baharu dan sintaks yang sebelumnya tidak boleh digunakan lagi.

Vue3.0 ciri baharu dan ringkasan penggunaan (tersusun dan dikongsi)

1. Perubahan baharu yang dibawa oleh Vue3

  • Peningkatan prestasi (kos sifar: anda boleh menikmatinya dengan bertukar daripada vue2 kepada vue3 )

    Perenderan pertama lebih pantas, algoritma diff lebih pantas, penggunaan memori kurang, saiz pembungkusan lebih kecil,....

  • Sokongan TypeScript yang lebih baik (in vue It adalah lebih mudah untuk menulis TS di bawah)

  • Menyediakan cara baharu menulis kod: API Komposisi

2. Vue2 ini. 0 Sintaks

vue3.0 serasi dengan kebanyakan sintaks versi 2.0 (cara ia ditulis sebelum ini masih ditulis seperti biasa sekarang), tetapi terdapat juga beberapa kemas kini sintaks yang merosakkan, sila bayar perhatian khusus kepada perkara ini:

1 Mengalih keluar kaedah $on pada contoh vue (eventBusVue.prototype.$eventBus=new Vue(); this.$on('事件名', 回调)Mod pelaksanaan sedia ada tidak lagi disokong dan boleh digantikan dengan pemalam pihak ketiga). Berikut ialah penggunaan eventBus dalam vue2:

Vue.prototype.$eventBus = new Vue()
组件1
this.$on('事件名', 回调)
组件2
this.$emit('事件名')

2. Alih keluar pilihan penapis. Berikut ialah penggunaan penapis dalam vue2:

<div>{{ msg | format}}</div>
插值表达式里, 不能再使用过滤器filter, 可以使用methods替代
{{format(msg)}}

3. Alih keluar sintaks .sync (pengubah suai .sync tidak boleh digunakan dalam v-bind, kini ia digabungkan dengan sintaks model v) . Berikut ialah penggunaan .sync dalam vue2

<el-dialog></el-dialog>

3 Perbezaan antara vue2 dan 3 projek

terutamanya bergantung pada tiga lokasi:

  • <.>pakej .json

  • utama.js

  • app.vue

package.json

Mula-mula kita boleh melihat fail

, yang ditunjukkan dalam item konfigurasi dependensi Versi yang sedang kita gunakan ialah 3package.json

"dependencies": {
    "core-js": "^3.6.5",
    "vue": "^3.2.25"  // 版本号
}
main.js

dan kemudian buka

Fail kemasukan, didapati bahawa instantiasi Vue telah mengalami beberapa perubahan, daripada instantiasi kata kunci baharu sebelum ini kepada bentuk panggilan kaedah createApp.

main.jsMenulis dalam vue2.x:

Menulis dalam vue3.x:
import Vue from 'vue'
import App from './App.vue'
new Vue({render: h => h(App)}).$mount('#app')

app.vue
import { createApp } from 'vue'
import App from './App.vue' // 根组件
createApp(App).mount('#app')

Buka app.vue Discovery : Komponen fail tunggal vue3.0 tidak lagi memerlukan elemen akar unik

4 API Komposisi dan API Pilihan
<template>
  <img  src="/static/imghwm/default1.png" data-src="./assets/logo.png" class="lazy" alt="Vue3.0 ciri baharu dan ringkasan penggunaan (tersusun dan dikongsi)" >
  <helloworld></helloworld>
</template>

API Komposisi Ini merupakan perubahan yang sangat besar bagi kami pembangun dalam. vue3.

API pilihan Vue2

, API pilihan (gambar), API gabungan Vue3, API komposisi (gambar di sebelah kanan):

API pilihan Vue2

, API Pilihan: Kelebihan:

mudah difahami, mudah untuk bermula. Kerana setiap pilihan (item konfigurasi) mempunyai kedudukan penulisan tetap (contohnya, data ditulis dalam pilihan data, kaedah operasi ditulis dalam kaedah, dll.)

Kelemahan:

Aplikasi besar Selepas itu, saya percaya semua orang telah menghadapi dilema untuk berulang-alik untuk mencari kod-----melompat secara mendatar.

API gubahan Vue3

, API gubahan: Ciri:

    Semua yang berkaitan dengan fungsi tertentu disatukan Penyelenggaraan, seperti kerana data responsif yang berkaitan dengan fungsi A, kaedah operasi data, dsb. disatukan, supaya tidak kira betapa besar aplikasi itu, semua kod berkaitan fungsi tertentu boleh didapati dengan cepat, dan penyelenggaraan mudah disediakan
  • Jika fungsi kompleks dan jumlah kod adalah besar, kami juga boleh melakukan pemprosesan pecahan logik.
      

Ringkasan:

Asal usul gabungan API. Memandangkan vue3 menyediakan cara baru menulis kod (cara lama juga boleh digunakan), untuk membezakan vue2, mereka diberi nama yang berbeza:

API pilihan Vue2 (api pilihan) Kelebihan: Mudah, setiap pilihan melaksanakan fungsinya sendiri; Kelemahan: Menyusahkan untuk penggunaan semula fungsi; 🎜>

4. Persediaan

Fungsi persediaan ialah pilihan komponen baharu, yang berfungsi sebagai titik permulaan (masuk) gabungan API dalam komponen

  • Ini tidak boleh digunakan dalam persediaan, ini menunjukkan kepada undefined

  • Fungsi persediaan hanya akan dilaksanakan sekali apabila komponen dimulakan

  • Fungsi persediaan dilaksanakan sebelum cangkuk kitaran hayat beforeCreate dilaksanakan

  • parameter persediaan:
setup() {
	console.log('setup....', this)
},
beforeCreate() {
	console.log('beforeCreate') // 它比setup迟
}
Apabila menggunakan persediaan, ia menerima dua Parameter:

props: props ialah objek, yang mengandungi semua data prop yang diluluskan oleh komponen induk

  • context: context对象包含了attrs,slots, emit属性

  • 返回值

    这个函数的返回值是一个对象,在模版中需要使用的数据和函数,需要在这个对象中声明(如果在data()中也定义了同名的数据,则以setup()中为准)。

    <template>
      <div>
        姓名:{{name}},月薪:{{salary}} <button>打个招呼</button>
      </div>
    </template>
    <script>
    export default {
      setup () {
        console.log(&#39;setup执行了,这里没有this. this的值是:&#39;, this)
     
        // 定义数据和函数
        const name = &#39;小吴&#39;
        const salary = 18000
        const say = () => {
          console.log(&#39;我是&#39;, name)
        }
     
        // 返回对象,给视图使用
        return { msg , say}
      },
      beforeCreate() {
        console.log(&#39;beforeCreate执行了, 这里有this,this的值是:&#39;,  this)
      }
    }
    </script>

    setup 中接受的props是响应式的, 当传入新的 props 时,会及时被更新。由于是响应式的, 所以不可以使用 ES6 解构,解构会消除它的响应式。 错误代码示例, 这段代码会让 props 不再支持响应式:

    export default com ({
        setup(props, context) {
            const { uname } = props
            console.log(uname)
        },
    })

    开发中我们想要使用解构,还能保持props的响应式,有没有办法解决呢?setup接受的第二个参数context,我们前面说了setup中不能访问 Vue2 中最常用的this对象,所以context中就提供了this中最常用的三个属性:attrs、slot 和emit,分别对应 Vue2.x 中的 $attrs属性、slot 插槽 和$emit发射事件。并且这几个属性都是自动同步最新的值,所以我们每次使用拿到的都是最新值。

    5、reactive、ref 与 toRefs

    在 vue2.x 中, 定义数据都是在data中, 但是 Vue3.x 可以使用 reactive 和 ref 来进行数据定义。

    如何取舍ref和reactive?

    定义响应式数据有两种方式:

    • ref函数(可以处理简单数据,也可以处理复杂数据),常用于将简单数据类型定义为响应式数据

      • 在代码中修改(或者获取)值时,需要补上.value

      • 在模板中使用时,可以省略.value

    • reactive函数,常用于将复杂数据类型为响应式数据

    推荐用法:

    • 优先使用ref

    • 如果明确知道对象中有什么属性,就使用reactive。例如,表单数据

    接下来使用代码展示一下 ref、reactive的使用:

    <template>
      <div>
        <p>{{ num }}</p>
        <p>姓名: {{ user.uname }}</p>
        <p>年龄: {{ user.age }}</p>
      </div>
    </template>
     
    <script>
    import { reactive, ref, toRefs } from "vue";
    export default com({
      setup() {
        const num = ref(0);
        const user = reactive({ uname: "vivian", age: 18});
        setInterval(() => {
          num.value++;
          user.age++;
        }, 1000);
        return {
          year,
          user
        };
      },
    });
    </script>

    上面的代码中,我们绑定到页面是通过user.uname,user.age这样写感觉很繁琐,我们能不能直接将user中的属性解构出来使用呢? 答案是不能直接对user进行结构,这样会消除它的响应式,这里就和上面我们说props不能使用 ES6 直接解构就呼应上了。那我们就想使用解构后的数据怎么办,解决办法就是使用toRefs,定义转换响应式中所有属性为响应式数据,通常用于解构|展开reactive定义对象, 简化我们在模板中的使用。

    格式:

    // 响应式数据:{ 属性1, 属性2 }
    let { 属性1, 属性2 } = toRefs(响应式数据)

    具体使用方式如下:

    <template>
      <div>
        <p>{{ num }}</p>
        <p>姓名: {{ uname }}</p>
        <p>年龄: {{ age }}</p>
      </div>
    </template>
     
    <script>
    import { defineComponent, reactive, ref, toRefs } from "vue";
    export default com({
      setup() {
        const num = ref(0);
        const user = reactive({ uname: "vivian", age: 18});
        setInterval(() => {
          num.value++;
          user.age++;
        }, 1000);
        return {
          year,
          // 使用reRefs
          ...toRefs(user),
        };
      },
    });
    </script>

    增强版的结构赋值:在解构对象的同时,保留响应式的特点。  

    6、vue3.0生命周期钩子函数

    •  setup创建实例前

    • onBeforeMount挂载DOM前

    • onMount挂载DOM后

    • BeforeUpdate 更新组件前

    • updated 更新组件后

    • onBeforeUnmount卸载销毁前

    • onUnmount 卸载销毁后

    setup () {
        onBeforeMount(()=>{
          console.log('DOM渲染前',document.querySelector('.container'))
        })
        onMounted(()=>{
          console.log('DOM渲染后1',document.querySelector('.container'))
        })
      }

     Vue3.x 还新增用于调试的钩子函数onRenderTriggered和onRenderTricked,  另外,Vue3.x 中的钩子是需要从 vue 中导入的:

    import { defineComponent, onBeforeMount, onMounted, onBeforeUpdate,onUpdated,
    onBeforeUnmount, onUnmounted, onErrorCaptured, onRenderTracked,onRenderTriggered } from "vue"; 
    export default defineComponent({ 
    //beforeCreate和created是vue2的 
    beforeCreate() {
    console.log("--beforeCreate--")
     }, 
    created() {
    console.log("--created--")
     }, 
    setup() { 
    console.log("--setup--")
    // vue3.x生命周期写在setup中 
    onBeforeMount(() => {
    console.log("--onBeforeMount--")
    })
    onMounted(() => {
    console.log("--onMounted--"); })
     // 调试哪些数据发生了变化
    onRenderTriggered((event) =>{ 
    console.log("--onRenderTriggered--",event)
    }) 
    }, 
    });

    7、computed函数定义计算属性

    格式: 

    import { computed } from 'vue'
     
    const 计算属性名 = computed(() => {
      return 相关计算结果
    })

    代码示例:

    <template>
      <p>姓名:{{name}}, 公司:{{company}}, 月薪:{{salary}}, 年薪{{total}}</p>
      <button>月薪double</button>
    </template>
    <script>
    import { ref, computed } from &#39;vue&#39;
    export default {
      name: &#39;App&#39;,
      setup () {
        // 定义响应式对象
        const company = ref(&#39;DiDi&#39;)
        const name = ref(&#39;小王&#39;)
        const salary = ref(18000)
        const double = () => {
          salary.value *= 2 // ref数据要加.value
        }
        // 定义计算属性
        const total = computed(() => 12 * salary.value)
        
        return {  
          name, 
          company,
          total,
          salary,
          double
        }
      }
    }
    </script>

    总结:

    vue3中的computed函数与vue2中的computed选项功能类似。

    computed的入参是一个函数

    作用:根据已有数据,产生新的响应式数据。

    步骤:导入,定义,导出

    computed的高级用法:

    格式:

    const 计算属性 =  computed({
      get () {
        // 当获取值自动调用
      },
      set (val) {
        // 当设置值自动调用,val会自动传入
      }
    })

     示例代码:

    <template>
      <div>
        <p>小花, 月薪:{{salary}}, 年薪:{{total}}</p>
        <p>年薪:<input></p>
        <button>月薪double</button>
      </div>
    </template>
    <script>
    // reactive: 是除了ref之外的第二种申明响应式数据的方式
     
    import { ref, computed } from &#39;vue&#39;
    export default {
      setup () {
      
        const salary = ref(18000)
         
        const double = () => {
          salary.value *= 2
          console.log(salary)
        }
        // 定义计算属性: 普通的写法:只使用了get
        // const total = computed(() => {
        //   return stu.salary * 12
        // })
     
        // 定义计算属性: 高阶的写法:使用了get + set
        const total = computed({
          get() { return salary.value * 12 },
          set(val) { 
            // 设置计算属性的值,会自动调用,并传入val
            console.log(&#39;要设置的值...&#39;, val)
            salary.value = val/12
          }
        })
        
        return { double, salary, total}
      }
    }
    </script>

    总结:

    计算属性两种用法

    • 给computed传入函数,返回值就是计算属性的值

    • 给computed传入对象,get获取计算属性的值,set监听计算属性改变

    • 在v-model绑定计算属性: <input v-model="total">

    8、watch函数

    基于响应式数据的变化执行回调逻辑,和vue2中的watch的应用场景完全一致。

    步骤: 

    • 导入 import { watch } from 'vue'

    • 开启监听。在setup函数中执行watch函数开启对响应式数据的监听

    • watch函数接收三个常规参数  watch(source, callback, [options])

      • 第一个参数有三种取值:

        对象,要监听的响应式数据

        数组,每个元素是响应式数据

        函数,返回你要监听变化的响应式数据

      • 第二个参数是:响应式数据变化之后要执行的回调函数

      • 第三个参数是: 一个对象,在里面配置是否开启立刻执行或者深度监听

    <template>
        <div>
            {{stu}}, {{salary}}
            <button> do</button>
        </div>
    </template>
    <script>
    import { reactive, watch, ref } from &#39;vue&#39;
    export default {
        setup() {
            const salary = ref(10000)
            const stu  = reactive({
                address: {city: &#39;wuhan&#39;}
            })
     
            // 1. 侦听-单个数据
            watch(salary, (newVal, oldVal) => {
                console.log(&#39;监听单个数据&#39;, newVal, oldVal)
            })
    			// 侦听-单个数据
            watch(stu, (newVal, oldVal) => {
                console.log(&#39;监听单个数据&#39;, newVal, oldVal)
            })
     
          	// 侦听-多个数据
            watch([stu, salary], (newVal, oldVal) => {
                console.log(&#39;监听多个数据&#39;, newVal, oldVal)
            })
    				// 侦听对象的某个属性
            watch(()=>stu.address , (newVal, oldVal) => {
                console.log(&#39;第一个参数是函数&#39;, newVal, oldVal)
            }, {deep: true,  immediate: true} )
     
            // 测试按钮,修改数据
            const doSome = () => {
                salary.value +=1
                stu.address.city = &#39;&#39;
            }
     
            return {stu, salary, doSome}
        }
    }
    </script>

    总结:

    作用:watch用来侦听数据的变化。

    格式:watch(数据|数组|get函数,(新值,旧值)=>{回调处理逻辑}, {immediate:true|false, deep: true|false})

    以上,我们了解了vue2和vue3使用方法的不同,关于组件通讯和插槽等可以看下一篇。

    【相关推荐:《vue.js教程》】

    Atas ialah kandungan terperinci Vue3.0 ciri baharu dan ringkasan penggunaan (tersusun dan dikongsi). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan
    Artikel ini dikembalikan pada:CSDN. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
    Frontend Netflix: Contoh dan Aplikasi React (atau Vue)Frontend Netflix: Contoh dan Aplikasi React (atau Vue)Apr 16, 2025 am 12:08 AM

    Netflix menggunakan React sebagai kerangka depannya. 1) Model pembangunan komponen React dan ekosistem yang kuat adalah sebab utama mengapa Netflix memilihnya. 2) Melalui komponen, Netflix memisahkan antara muka kompleks ke dalam ketulan yang boleh diurus seperti pemain video, senarai cadangan dan komen pengguna. 3) Kitaran Hayat DOM dan Komponen Maya React mengoptimumkan kecekapan rendering dan pengurusan interaksi pengguna.

    Landskap Frontend: Bagaimana Netflix menghampiri pilihannyaLandskap Frontend: Bagaimana Netflix menghampiri pilihannyaApr 15, 2025 am 12:13 AM

    Pilihan Netflix dalam teknologi front-end terutamanya memberi tumpuan kepada tiga aspek: pengoptimuman prestasi, skalabilitas dan pengalaman pengguna. 1. Pengoptimuman Prestasi: Netflix memilih React sebagai kerangka utama dan alat yang dibangunkan seperti SpeedCurve dan Boomerang untuk memantau dan mengoptimumkan pengalaman pengguna. 2. Skalabiliti: Mereka mengamalkan seni bina front-end mikro, memisahkan aplikasi ke dalam modul bebas, meningkatkan kecekapan pembangunan dan skalabilitas sistem. 3. Pengalaman Pengguna: Netflix menggunakan perpustakaan komponen bahan-UI untuk terus mengoptimumkan antara muka melalui ujian A/B dan maklum balas pengguna untuk memastikan konsistensi dan estetika.

    React vs Vue: Rangka kerja mana yang digunakan oleh Netflix?React vs Vue: Rangka kerja mana yang digunakan oleh Netflix?Apr 14, 2025 am 12:19 AM

    NetflixusesAcustomFrameworkcalled "gibbon" Builtonreact, notreactorsvuedirectly.1) TeamExperience: chectionBasedOnfamiliarity.2) ProjectOplePlexity: VueforsImplerProjects, ReactForComplexones.3)

    Pilihan Rangka Kerja: Apa yang mendorong keputusan Netflix?Pilihan Rangka Kerja: Apa yang mendorong keputusan Netflix?Apr 13, 2025 am 12:05 AM

    Netflix terutamanya menganggap prestasi, skalabiliti, kecekapan pembangunan, ekosistem, hutang teknikal dan kos penyelenggaraan dalam pemilihan rangka kerja. 1. Prestasi dan Skalabiliti: Java dan Springboot dipilih untuk memproses data besar -besaran dan permintaan serentak yang tinggi. 2. Kecekapan Pembangunan dan Ekosistem: Gunakan React untuk meningkatkan kecekapan pembangunan front-end dan menggunakan ekosistemnya yang kaya. 3. Hutang Teknikal dan Penyelenggaraan Kos: Pilih Node.js untuk membina mikroservis untuk mengurangkan kos penyelenggaraan dan hutang teknikal.

    React, Vue, dan Masa Depan Frontend NetflixReact, Vue, dan Masa Depan Frontend NetflixApr 12, 2025 am 12:12 AM

    Netflix terutamanya menggunakan React sebagai rangka kerja front-end, ditambah dengan VUE untuk fungsi tertentu. 1) Komponen React dan DOM maya meningkatkan prestasi dan kecekapan pembangunan aplikasi Netflix. 2) VUE digunakan dalam alat dalaman dan projek kecil Netflix, dan fleksibiliti dan kemudahan penggunaannya adalah kunci.

    Vue.js di frontend: aplikasi dan contoh dunia nyataVue.js di frontend: aplikasi dan contoh dunia nyataApr 11, 2025 am 12:12 AM

    Vue.js adalah rangka kerja JavaScript yang progresif yang sesuai untuk membina antara muka pengguna yang kompleks. 1) Konsep terasnya termasuk data responsif, komponen dan DOM maya. 2) Dalam aplikasi praktikal, ia boleh ditunjukkan dengan membina aplikasi todo dan mengintegrasikan vuerouter. 3) Apabila debugging, disyorkan untuk menggunakan Vuedevtools dan Console.log. 4) Pengoptimuman prestasi boleh dicapai melalui V-IF/V-Show, senarai pengoptimuman rendering, pemuatan asynchronous komponen, dll.

    Vue.js dan bertindak balas: Memahami perbezaan utamaVue.js dan bertindak balas: Memahami perbezaan utamaApr 10, 2025 am 09:26 AM

    Vue.js sesuai untuk projek kecil dan sederhana, sementara React lebih sesuai untuk aplikasi besar dan kompleks. 1. Sistem responsif vue.js secara automatik mengemas kini DOM melalui pengesanan ketergantungan, menjadikannya mudah untuk menguruskan perubahan data. 2. Leact mengamalkan aliran data sehala, dan data mengalir dari komponen induk ke komponen kanak-kanak, menyediakan aliran data yang jelas dan struktur yang mudah dibuang.

    Vue.js vs React: Pertimbangan khusus projekVue.js vs React: Pertimbangan khusus projekApr 09, 2025 am 12:01 AM

    Vue.js sesuai untuk projek kecil dan sederhana dan lelaran yang cepat, sementara React sesuai untuk aplikasi besar dan kompleks. 1) Vue.js mudah digunakan dan sesuai untuk situasi di mana pasukan tidak mencukupi atau skala projek kecil. 2) React mempunyai ekosistem yang lebih kaya dan sesuai untuk projek dengan prestasi tinggi dan keperluan fungsional yang kompleks.

    See all articles

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Tetapan grafik terbaik
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Arahan sembang dan cara menggunakannya
    4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    MantisBT

    MantisBT

    Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

    SublimeText3 versi Inggeris

    SublimeText3 versi Inggeris

    Disyorkan: Versi Win, menyokong gesaan kod!

    mPDF

    mPDF

    mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),