Bandingkan dengan rangka kerja lain


Halaman ini sudah pasti paling sukar untuk ditulis, tetapi kami fikir ia juga sangat penting. Mungkin anda telah menghadapi beberapa masalah dan menyelesaikannya menggunakan rangka kerja lain. Tujuan anda di sini adalah untuk melihat sama ada Vue mempunyai penyelesaian yang lebih baik. Inilah yang ingin kami jawab di sini.

Secara objektif, sebagai ahli pasukan teras, kami jelas lebih suka Vue dan berpendapat bahawa Vue adalah lebih baik untuk menyelesaikan beberapa masalah. Jika kita tidak mempunyai kepercayaan ini, kita tidak akan sibuk mengerjakannya sepanjang hari. Tetapi di sini kami ingin menerangkan segala-galanya seadil dan setepat mungkin. Rangka kerja lain juga mempunyai kelebihan yang ketara, seperti ekosistem React yang luas, atau sokongan penyemak imbas Knockout yang meliputi IE6. Kami akan cuba senaraikan kesemuanya.

Kami juga berharap dapat bantuan anda untuk memastikan dokumentasi dikemas kini, kerana dunia JavaScript berkembang dengan begitu pantas. Jika anda mendapati ketidaktepatan atau sesuatu yang kelihatan tidak betul, sila serahkan isu dan beritahu kami.


Daftar Kandungan

  • React

  • Volume
    • Fleksibiliti
    • Lengkung Pembelajaran
    • nockout

    • Polymer

    • Rusuhan

  • .

    Kekalkan tumpuan pada perpustakaan teras dan biarkan fungsi lain seperti penghalaan dan pengurusan negeri global kepada perpustakaan berkaitan.


    Disebabkan banyak persamaan, kami akan meluangkan lebih banyak masa untuk membandingkan kawasan ini. Di sini kami bukan sahaja memastikan ketepatan kandungan teknikal, tetapi juga mengambil kira pertimbangan yang seimbang. Kita perlu mengakui perkara yang menjadikan React lebih baik daripada Vue, seperti ekosistem yang lebih kaya.

      Sesetengah daripada bab berikut mungkin sedikit ketinggalan zaman kerana keluaran terbaru React 16+ Kami merancang untuk menulis semula bahagian kandungan ini bersama-sama dengan komuniti React dalam masa terdekat.
    • Runtime Performance
    • Kedua-dua React dan Vue sangat pantas, jadi kelajuan bukanlah faktor penentu dalam memilih antara keduanya. Untuk prestasi data tertentu, anda boleh beralih ke
    • penanda aras pihak ketiga
    ini, yang memfokuskan pada prestasi sebenar pemaparan/kemas kini pepohon komponen yang sangat mudah.

    Pengoptimuman


    Dalam aplikasi React, apabila keadaan komponen berubah, ia akan memaparkan semula keseluruhan subpokok komponen dengan komponen sebagai punca.

    Untuk mengelakkan pemaparan semula komponen kanak-kanak yang tidak perlu, anda perlu menggunakan PureComponent di mana mungkin, atau melaksanakan kaedah shouldComponentUpdate secara manual. Pada masa yang sama, anda mungkin perlu menggunakan struktur data tidak berubah untuk menjadikan komponen anda lebih mudah untuk dioptimumkan. Walau bagaimanapun, apabila menggunakan PureComponent dan shouldComponentUpdate, anda perlu memastikan bahawa output pemaparan keseluruhan subpokok komponen ditentukan oleh prop komponen. Jika ini tidak berlaku, pengoptimuman sedemikian boleh menyebabkan ketidakkonsistenan pemaparan yang tidak dapat dilihat. Ini menjadikan pengoptimuman komponen dalam React datang dengan beban mental yang besar. Dalam aplikasi Vue, kebergantungan komponen dijejaki secara automatik semasa proses pemaparan, jadi sistem boleh mengetahui dengan tepat komponen mana yang benar-benar perlu dipaparkan semula. Anda boleh memahami bahawa setiap komponen telah memperoleh shouldComponentUpdate secara automatik dan tiada sekatan pada masalah subpokok yang dinyatakan di atas.

    Ciri Vue ini menjadikan pembangun tidak perlu lagi mempertimbangkan pengoptimuman sedemikian dan boleh memberi tumpuan yang lebih baik pada aplikasi itu sendiri.

    HTML & CSS

    PureComponent,或是手动实现 shouldComponentUpdate 方法。同时你可能会需要使用不可变的数据结构来使得你的组件更容易被优化。

    然而,使用 PureComponentshouldComponentUpdate 时,需要保证该组件的整个子树的渲染输出都是由该组件的 props 所决定的。如果不符合这个情况,那么此类优化就会导致难以察觉的渲染结果不一致。这使得 React 中的组件优化伴随着相当的心智负担。

    在 Vue 应用中,组件的依赖是在渲染过程中自动追踪的,所以系统能精确知晓哪个组件确实需要被重渲染。你可以理解为每一个组件都已经自动获得了 shouldComponentUpdateDalam React, semuanya adalah JavaScript. Bukan sahaja HTML boleh dinyatakan menggunakan JSX, tetapi trend semasa semakin menggabungkan CSS ke dalam JavaScript untuk diproses. Pendekatan jenis ini mempunyai kelebihannya, tetapi terdapat juga pertukaran yang tidak setiap pembangun selesa.

    Seluruh idea Vue adalah untuk menerima teknologi web klasik dan mengembangkannya. Kami akan menganalisisnya secara terperinci di bawah.

    JSX vs Templat

    Dalam React, semua komponen bergantung pada JSX untuk fungsi pemaparannya. JSX ialah gula sintaksis untuk menulis JavaScript menggunakan sintaks XML.

    Menggunakan fungsi pemaparan JSX mempunyai kelebihan berikut:

    • Anda boleh menggunakan keupayaan JavaScript bahasa pengaturcaraan penuh untuk membina halaman paparan anda. Sebagai contoh, anda boleh menggunakan pembolehubah sementara, kawalan aliran yang disertakan dengan JS dan secara langsung merujuk nilai dalam skop JS semasa, dsb.

    • Sokongan alat pembangunan untuk JSX agak maju berbanding templat Vue lain yang tersedia pada masa ini (contohnya, linting, semakan jenis, pelengkapan automatik editor).

    Malah, Vue juga menyediakan fungsi rendering malah menyokong JSX. Walau bagaimanapun, pengesyoran lalai kami ialah templat. Mana-mana HTML yang mematuhi spesifikasi ialah templat Vue yang sah, yang juga membawa beberapa kelebihan unik:

    • Bagi kebanyakan pembangun yang terbiasa dengan HTML, templat adalah lebih semula jadi untuk membaca dan menulis daripada JSX. Sudah tentu terdapat unsur keutamaan subjektif di sini, tetapi jika perbezaan ini akan membawa kepada peningkatan kecekapan pembangunan, maka ia mempunyai nilai objektif.

    • Templat berasaskan HTML memudahkan untuk memindahkan aplikasi sedia ada secara beransur-ansur ke Vue.

    • Ini juga memudahkan pereka bentuk dan pembangun baharu memahami dan mengambil bahagian dalam projek.

    • Anda juga boleh menggunakan prapemproses templat lain, seperti Pug, untuk menulis templat Vue.

    Sesetengah pembangun berpendapat templat bermakna anda perlu mempelajari DSL (Bahasa Khusus Domain) tambahan untuk membangunkan - kami berpendapat perbezaan ini adalah dangkal. Pertama sekali, JSX tidak bebas untuk belajar - ia adalah set sintaks tambahan di atas JS. Pada masa yang sama, seperti mudah untuk orang yang biasa dengan JS mempelajari JSX, begitu juga mudah untuk orang yang biasa dengan HTML mempelajari sintaks templat Vue. Akhir sekali, kewujudan DSL membolehkan kami membenarkan pembangun melakukan lebih banyak perkara dengan kurang kod, seperti pelbagai pengubah suai v-on Melaksanakan fungsi yang sepadan dalam JSX akan memerlukan lebih banyak kod.

    Melihat lebih abstrak, kita boleh membahagikan komponen kepada dua kategori: satu adalah pembentangan dan satu lagi adalah logik. Kami mengesyorkan menggunakan templat untuk yang pertama dan JSX atau fungsi render untuk yang kedua. Perkadaran kedua-dua jenis komponen ini akan berbeza-beza bergantung pada jenis aplikasi, tetapi secara keseluruhan kami mendapati bahawa terdapat lebih banyak komponen pembentangan daripada komponen logik.

    CSS dalam skop komponen

    Melainkan anda mengedarkan komponen merentas berbilang fail (seperti Modul CSS), skop CSS dalam React dilaksanakan melalui penyelesaian CSS-dalam-JS (seperti komponen gaya, glamour dan emosi ). Ini memperkenalkan paradigma penggayaan berorientasikan komponen baharu yang berbeza daripada proses penulisan CSS biasa. Selain itu, walaupun ia disokong untuk mengekstrak CSS ke dalam helaian gaya yang berasingan pada masa binaan, himpunan biasanya memerlukan program masa jalan untuk menjadikan gaya ini berkuat kuasa. Walaupun anda boleh menggunakan JavaScript untuk mengendalikan gaya secara fleksibel, anda juga perlu menimbang saiz berkas dan overhed masa jalan.

    Jika anda peminat CSS-in-JS, banyak perpustakaan CSS-in-JS arus perdana turut menyokong Vue (seperti styled-components-vue dan vue-emotion). Perbezaan utama antara React dan Vue di sini ialah kaedah tetapan gaya lalai Vue ialah teg yang serupa dengan style dalam Single File Component. style 的标签。

    单文件组件让你可以在同一个文件里完全控制 CSS,将其作为组件代码的一部分。

    <style scoped>
      @media (min-width: 250px) {
        .list-container:hover {
          background: orange;
        }
      }
    </style>

    这个可选 scoped 属性会自动添加一个唯一的属性 (比如 data-v-21e5b78) 为组件内 CSS 指定作用域,编译的时候 .list-container:hover 会被编译成类似 .list-container[data-v-21e5b78]:hover

    最后,Vue 的单文件组件里的样式设置是非常灵活的。通过 vue-loader,你可以使用任意预处理器、后处理器,甚至深度集成 CSS Modules——全部都在 <style>

    Komponen Fail Tunggal
    memberi anda kawalan penuh ke atas CSS dalam fail yang sama sebagai sebahagian daripada kod komponen.

    rrreee

    Atribut scoped pilihan ini akan menambah atribut unik secara automatik (seperti data-v-21e5b78) untuk menentukan skop untuk CSS dalam komponen semasa menyusun < kod >.list-container:hover akan disusun menjadi sesuatu seperti .list-container[data-v-21e5b78]:hover. Akhir sekali, tetapan gaya dalam komponen fail tunggal Vue adalah sangat fleksibel. Melalui vue-loader, anda boleh menggunakan mana-mana prapemproses, pascapemproses malah menyepadukan Modul CSS - semuanya dalam teg <style> .

    Skala

    🎜Scale up🎜🎜🎜Kedua-dua Vue dan React menyediakan penghalaan yang berkuasa untuk mengendalikan aplikasi yang besar. Komuniti React sangat inovatif dalam pengurusan negeri (seperti Flux, Redux), dan corak pengurusan negeri ini dan juga 🎜Redux sendiri🎜 boleh disepadukan dengan mudah ke dalam aplikasi Vue. Malah, Vue telah membawa model ini lebih jauh (🎜Vuex🎜) dan penyelesaian pengurusan keadaan Vue yang lebih mendalam iaitu Vuex, yang saya percaya boleh membawa anda pengalaman pembangunan yang lebih baik. 🎜

    Satu lagi perbezaan penting antara keduanya ialah perpustakaan penghalaan Vue dan perpustakaan pengurusan negeri secara rasmi diselenggara dan disokong serta dikemas kini secara serentak dengan perpustakaan teras. React memilih untuk menyerahkan isu ini kepada komuniti, sekali gus mewujudkan ekosistem yang lebih terpencar. Tetapi secara relatifnya, ekosistem React lebih makmur daripada Vue.

    Akhir sekali, Vue menyediakan Cli scaffolding, yang membolehkan anda membina projek dengan sangat mudah melalui bimbingan scaffolding interaktif. Anda juga boleh menggunakannya untuk prototaip komponen dengan pantas. React juga menyediakan create-react-app dalam hal ini, tetapi masih terdapat beberapa batasan:

    • Ia tidak membenarkan sebarang konfigurasi apabila projek dijana, dan Vue CLI berjalan pada kebergantungan masa jalan yang boleh ditingkatkan, masa jalan boleh dilanjutkan melalui plugin.

    • Ia hanya menyediakan pilihan lalai untuk membina aplikasi satu halaman, manakala Vue menyediakan templat untuk pelbagai tujuan.

    • Ia tidak boleh membina projek dengan konfigurasi pratetap buatan pengguna, yang amat berguna untuk konvensyen yang telah ditetapkan dalam persekitaran perusahaan.

    Walaupun penting untuk ambil perhatian bahawa pengehadan ini adalah berdasarkan reka bentuk, ini mempunyai kelebihannya. Contohnya, jika keperluan projek anda sangat mudah, anda tidak perlu menyesuaikan proses binaan. Anda boleh mengemas kininya sebagai pergantungan. Jika baca lebih lanjut tentang Idea Reka Bentuk Berbeza.

    Scale down

    React mempunyai keluk pembelajaran yang curam Sebelum anda mula belajar React, anda perlu mengetahui JSX dan ES2015 kerana banyak contoh menggunakan sintaks ini. Anda perlu mempelajari sistem binaan, dan walaupun anda boleh menggunakan Babel secara teknikal untuk menyusun kod anda dengan segera, ini tidak disyorkan untuk kegunaan pengeluaran.

    Sama seperti Vue naikkan seperti React, Vue turunkan seperti jQuery. Anda hanya perlu meletakkan tag berikut pada halaman untuk dijalankan:

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>

    Kemudian anda boleh menulis kod Vue dan menggunakannya pada pengeluaran Anda hanya perlu menggantikannya dengan versi min fail Vue dan anda tidak perlu risau tentang isu prestasi lain.

    Memandangkan tidak perlu mempelajari JSX, ES2015 dan membina sistem pada peringkat awal, pembangun boleh membina aplikasi mudah dalam masa kurang daripada sehari dengan membaca Panduan.


    Perenderan asli

    React Native membolehkan anda menggunakan model komponen yang sama untuk menulis APP (iOS dan Android) dengan keupayaan pemaparan tempatan. Mampu membangun merentas berbilang platform pada masa yang sama adalah bagus untuk pembangun. Sehubungan itu, Vue dan Weex akan mempunyai kerjasama rasmi Weex ialah rangka kerja pembangunan antara muka pengguna merentas platform yang dimulakan oleh Alibaba Ia juga mengeramkan projek di Apache Foundation penyemak imbas tamat, dan juga boleh digunakan untuk membangunkan komponen untuk aplikasi asli pada iOS dan Android.

    Pada masa ini, Weex masih aktif membangun, dan kematangannya tidak dapat bersaing dengan React Native. Walau bagaimanapun, pembangunan Weex didorong oleh keperluan syarikat e-dagang terbesar di dunia, dan pasukan Vue juga akan bekerjasama secara aktif dengan pasukan Weex untuk memastikan pengalaman pembangunan yang baik untuk pembangun.

    Pilihan lain ialah NativeScript-Vue, pemalam NativeScript untuk membina apl asli sepenuhnya dengan Vue.js.


    MobX

    Mobx sangat popular dalam komuniti React dan sebenarnya menggunakan sistem reaktif yang hampir sama dalam Vue. Pada tahap yang terhad, React + Mobx juga boleh dianggap sebagai versi Vue yang lebih menyusahkan, jadi jika anda biasa menggunakannya secara gabungan, lebih masuk akal untuk memilih Vue.


    Preact dan pustaka seperti React yang lain

    Pustaka seperti React cenderung berkongsi API dan ekologi dengan React sebanyak mungkin. Oleh itu perbandingan di atas terpakai sama kepada mereka. Perbezaan antara mereka dan React selalunya terletak pada ekologi yang lebih kecil. Oleh kerana perpustakaan ini tidak 100% serasi dengan semua dalam ekosistem React, sesetengah alatan dan perpustakaan tambahan mungkin tidak tersedia. Atau walaupun ia kelihatan berfungsi, ketidakserasian mungkin berlaku pada bila-bila masa, melainkan perpustakaan seperti React yang anda gunakan secara rasminya konsisten dengan React.


    AngularJS (Angular 1)


    Sesetengah sintaks Vue sangat serupa dengan AngularJS (contohnya v-if vs ng-if). Kerana AngularJS adalah inspirasi untuk pembangunan awal Vue. Walau bagaimanapun, banyak masalah yang wujud dalam AngularJS telah diselesaikan dalam Vue. .


    Fleksibiliti dan modulariti

    Vue.js ialah penyelesaian yang lebih fleksibel dan terbuka. Ia membolehkan anda mengatur aplikasi anda mengikut cara yang anda mahu, dan bukannya perlu mengikut peraturan yang ditetapkan oleh AngularJS pada setiap masa, menjadikan Vue sesuai untuk pelbagai projek. Kami tahu adalah penting untuk menyerahkan keputusan kepada anda.

    Inilah sebabnya kami menyediakan sistem lengkap untuk pembangunan pesat berdasarkan Vue.js. Vue CLI bertujuan untuk menjadi alat asas standard dalam ekosistem Vue. Ia membolehkan alat binaan yang pelbagai berfungsi bersama dengan lancar dengan konfigurasi lalai yang mantap. Dengan cara ini anda boleh memberi tumpuan kepada aplikasi itu sendiri tanpa menghabiskan terlalu banyak masa pada konfigurasi. Pada masa yang sama, ia juga menyediakan fleksibiliti untuk menyesuaikan setiap konfigurasi alat mengikut keperluan sebenar.


    Data Binding

    AngularJS menggunakan pengikatan dua hala, manakala Vue memaksa aliran data sehala antara komponen yang berbeza. Ini menjadikan aliran data dalam aplikasi lebih jelas dan lebih mudah difahami.


    Arahan dan komponen

    Arahan dan komponen dipisahkan dengan lebih jelas dalam Vue. Arahan hanya merangkumi operasi DOM, manakala komponen mewakili unit bebas serba lengkap - dengan paparan dan logik datanya sendiri. Dalam AngularJS, semuanya dilakukan oleh arahan, dan komponen hanyalah sejenis arahan khas.


    Runtime Performance

    Vue mempunyai prestasi yang lebih baik dan sangat-sangat mudah untuk dioptimumkan kerana ia tidak menggunakan semakan kotor.

    Dalam AngularJS, apabila semakin ramai pemerhati, ia akan menjadi semakin perlahan, kerana setiap perubahan dalam skop, semua pemerhati mesti dikira semula. Selain itu, jika sesetengah pemerhati mencetuskan kemas kini lain, kitaran penghadaman mungkin perlu dijalankan beberapa kali. Pengguna AngularJS sering menggunakan teknik esoterik untuk menyelesaikan masalah gelung semakan kotor. Kadangkala tiada cara mudah untuk mengoptimumkan skop dengan bilangan pemerhati yang ramai.

    Vue tidak mempunyai masalah ini sama sekali, kerana ia menggunakan sistem pemerhatian berdasarkan penjejakan pergantungan dan kemas kini baris gilir tak segerak Semua perubahan data dicetuskan secara bebas melainkan terdapat pergantungan yang jelas antara mereka.

    Menariknya, Angular dan Vue menggunakan reka bentuk yang serupa untuk menyelesaikan beberapa masalah yang wujud dalam AngularJS.


    Angular (Sudut asal 2)


    Kami akan membincangkan Sudut baharu secara berasingan kerana ia adalah rangka kerja yang berbeza sama sekali daripada AngularJS. Sebagai contoh: ia mempunyai sistem komponen yang sangat baik, dan banyak pelaksanaan telah ditulis semula sepenuhnya, dan API telah diubah sepenuhnya.


    TypeScript

    Angular sebenarnya mesti dibangunkan dalam TypeScript, kerana hampir semua dokumentasi dan sumber pembelajarannya berorientasikan TS. TS mempunyai banyak faedah - semakan jenis statik sangat berguna dalam aplikasi berskala besar, dan ia juga meningkatkan kecekapan pembangunan untuk pembangun dengan latar belakang Java dan C#.

    Namun, tidak semua orang mahu menggunakan TS - dalam projek kecil dan sederhana, memperkenalkan TS mungkin tidak membawa banyak kelebihan yang jelas. Dalam kes ini, menggunakan Vue akan menjadi pilihan yang lebih baik kerana menggunakan Angular tanpa TS akan mencabar.

    Akhirnya, walaupun integrasi Vue dan TS mungkin tidak sedalam Angular, kami juga menyediakan Jenis pengisytiharan dan Penghias komponen rasmi dan mengetahui bahawa terdapat sebilangan besar pengguna menggunakan gabungan Vue + TS dalam pengeluaran persekitaran. Kami juga secara aktif bekerjasama dengan pasukan TS / VSCode Microsoft, dengan matlamat untuk menyediakan pengguna Vue + TS dengan pengalaman semakan jenis dan pembangunan IDE yang lebih baik.


    Prestasi masa jalan

    Kedua-dua rangka kerja adalah pantas dan mempunyai data penanda aras yang hampir serupa. Anda boleh melayari data tertentu untuk membuat perbandingan yang lebih terperinci, tetapi kelajuan tidak seharusnya menjadi faktor penentu.


    Size

    Dari segi saiz, versi Angular terbaru menggunakan teknologi AOT dan tree-shaking untuk mengurangkan saiz kod akhir dengan banyak. Namun begitu, projek Vue yang mengandungi Penghala Vuex + Vue (30kB selepas gzip) masih jauh lebih kecil daripada saiz projek lalai (~65KB) yang dijana menggunakan pengoptimuman ini angular-cli.


    Fleksibiliti

    Vue lebih fleksibel daripada Angular secara rasmi menyediakan alatan binaan untuk membantu anda dalam membina projek, tetapi ia tidak mengehadkan cara anda menyusun kod aplikasi anda. Sesetengah orang mungkin suka mempunyai piawaian organisasi kod yang ketat, tetapi terdapat juga pembangun yang menyukai pendekatan yang lebih fleksibel dan bebas.


    Keluk Pembelajaran

    Untuk mempelajari Vue, anda hanya memerlukan asas yang baik dalam HTML dan JavaScript. Dengan kemahiran asas ini, anda boleh melompat ke dalam pembangunan dengan cepat dengan membaca Garis Panduan.

    Keluk pembelajaran Angular sangat curam - sebagai rangka kerja, kawasan APInya jauh lebih besar daripada Vue, jadi anda perlu memahami lebih banyak konsep untuk mula bekerja dengan cekap. Sudah tentu, kerumitan Angular itu sendiri adalah disebabkan oleh matlamat reka bentuknya yang hanya menyasarkan aplikasi yang besar dan kompleks; tetapi tidak dapat dinafikan bahawa ini juga menjadikannya agak tidak mesra kepada pembangun yang kurang berpengalaman.


    Ember


    Ember ialah rangka kerja yang serba boleh. Ia menyediakan sejumlah besar konvensyen, dan apabila anda sudah biasa dengannya, pembangunan akan menjadi sangat cekap. Walau bagaimanapun, ini juga bermakna bahawa keluk pembelajaran adalah tinggi dan ia tidak fleksibel. Ini bermakna membuat pertukaran antara rangka kerja dan perpustakaan (serta set alat yang digandingkan secara longgar). Yang terakhir lebih membebaskan, tetapi juga memerlukan anda membuat lebih banyak keputusan seni bina.

    Makanya, perbandingan terbaik kami ialah antara teras Vue dan templat Ember vs. model datalapisan:

    • Vue membina respons pada objek JavaScript biasa, menyediakan sifat pengiraan automatik. Dalam Ember anda perlu meletakkan segala-galanya di dalam objek Ember dan mengisytiharkan kebergantungan secara manual untuk sifat yang dikira.

    • Sintaks templat Vue boleh menggunakan ungkapan JavaScript berciri penuh, manakala sintaks Handlebars sangat terhad berbanding dengan fungsi pembantu.

    • Dari segi prestasi, Vue adalah jauh lebih baik daripada Ember, walaupun dengan enjin Glimmer terbaru Ember 3.x. Vue boleh mengemas kini kelompok secara automatik, manakala Ember memerlukan pengurusan manual dalam senario sensitif prestasi.


    Kalah Mati


    Kalah Mati ialah perintis dalam bidang MVVM dan penjejakan tanggungan. Sistem responsifnya juga sangat serupa dengan Vue. Prestasinya dalam sokongan pelayar dan aspek lain juga mengagumkan. Ia boleh menyokong sekurang-kurangnya IE6, manakala Vue hanya boleh menyokong IE9 sekurang-kurangnya.

    Kalah mati telah perlahan sedikit dari semasa ke semasa dan mula kelihatan agak basi. Sebagai contoh, sistem komponennya tidak mempunyai kaedah peristiwa kitaran hayat yang lengkap, walaupun ini sangat biasa pada masa kini. Dan berbanding Vue, kaedahnya untuk memanggil antara muka subkomponen agak menyusahkan.

    Jika anda berminat dalam penyelidikan, anda juga akan mendapati bahawa kedua-duanya mempunyai konsep reka bentuk antara muka yang berbeza. Ini boleh dicerminkan oleh Senarai Todo ringkas yang dibuat oleh setiap orang. Ia mungkin agak subjektif, tetapi ramai yang berpendapat bahawa antara muka API Vue adalah lebih ringkas dan lebih elegan dalam struktur.


    Polymer


    Polymer ialah satu lagi projek yang ditaja oleh Google dan sebenarnya merupakan inspirasi untuk Vue. Komponen Vue secara kasar boleh dibandingkan dengan unsur tersuai Polimer, dan kedua-duanya mempunyai gaya pembangunan yang serupa. Perbezaan terbesar ialah Polimer adalah berdasarkan versi terkini piawaian Komponen Web dan memerlukan poliisi berat untuk membantu berfungsi (dengan penurunan prestasi), dan penyemak imbas itu sendiri tidak menyokong ciri ini. Sebagai perbandingan, Vue tidak perlu bergantung pada polyfill untuk berfungsi apabila ia menyokong IE9.

    Dalam versi Polimer, untuk mengimbangi prestasi, pasukan menggunakan sistem pengikatan data dengan sangat terhad. Sebagai contoh, satu-satunya ungkapan yang disokong dalam Polimer ialah penolakan Boolean dan panggilan kaedah tunggal, dan pelaksanaan kaedah pengiraannya tidak begitu fleksibel.


    Riot


    Riot 3.0 menyediakan model pembangunan berasaskan komponen serupa (dipanggil Tag in Riot), yang menyediakan API yang kecil dan cantik. Riot dan Vue mungkin mempunyai banyak persamaan dalam falsafah reka bentuk. Walaupun Vue lebih berat sedikit daripada Riot, Vue masih mempunyai banyak kelebihan ketara:

    • Prestasi yang lebih baik. Riot menggunakan Traverse pokok DOM bukannya DOM maya, tetapi ia sebenarnya menggunakan mekanisme semakan yang kotor, jadi ia mengalami masalah prestasi yang sama seperti AngularJS.

    • Sokongan untuk alat yang lebih matang. Vue menyediakan sokongan rasmi untuk webpack dan Browserify, manakala Riot bergantung pada komuniti untuk membina sistem bersepadu.