mise vs. asdf untuk pengurusan persekitaran projek JavaScript
Ditulis oleh Rosario De Chiara✏️
mise dan asdf ialah alatan yang direka untuk membantu pembangun mengurus berbilang versi bahasa pengaturcaraan dan persekitaran. Kedua-dua alatan itu bertujuan untuk memudahkan pembangunan polyglot dengan menjadikannya lebih mudah untuk mengurus dan bertukar antara versi alat, yang merupakan cabaran biasa apabila bekerja dengan bahasa pengaturcaraan dan rangka kerja yang berbeza.
Apa itu asdf?
asdf ialah pengurus versi popular yang menggunakan teknik yang dipanggil "shimming" untuk bertukar antara versi alat yang berbeza seperti Python, Node.js dan Ruby. Ia mencipta laluan sementara ke versi tertentu, mengubah suai persekitaran untuk memastikan versi alat yang betul digunakan dalam projek yang berbeza. Walau bagaimanapun, kaedah ini boleh memperkenalkan prestasi overhed kerana cara shim ini berfungsi.
Apa itu mise?
mise, singkatan untuk ungkapan Perancis "mise-en-place," iaitu cara anda menyediakan meja, berusaha untuk menambah baik pada asdf dengan menghilangkan pergantungan pada shim.
Ditulis dalam Rust, mise mengubah suai terus pembolehubah persekitaran PATH, yang membawa kepada masa pelaksanaan yang lebih pantas. Ia direka bentuk untuk berfungsi dengan lancar dengan pemalam asdf tetapi menawarkan ciri seperti padanan kabur arahan dan keupayaan untuk memasang berbilang versi alat yang sama secara serentak.
Bermula dengan asdf
Untuk memasang asdf, ikut panduan permulaan untuk memasang prasyarat bergantung pada sistem anda. Setelah persekitaran sedia, anda boleh git mengklon repositori rasmi dalam direktori rumah anda:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Arahan di atas akan mengklon ke dalam direktori .asdf semua skrip dan fail konfigurasi yang diperlukan untuk memuktamadkan pemasangan.
Langkah seterusnya, daripada panduan pemasangan di atas, adalah untuk melaksanakan skrip pemasangan. Sekali lagi, langkah ini bergantung pada butiran persekitaran dan sistem pengendalian anda, jadi ikuti sahaja panduan untuk menambah skrip skrip yang betul dalam skrip permulaan shell anda (cth., .bashrc, .bash_profile, dll.). Pada penghujung proses ini dan, biasanya selepas anda memulakan semula shell anda, anda sepatutnya dapat menjalankan asdf sebagai arahan:
Pada ketika ini, asdf sedang berjalan tetapi untuk menjadikan sesuatu yang berguna dengannya, anda mesti memasang pemalam untuk mengendalikan alat (dalam bahasa asdf) yang berkaitan dengan projek yang anda ingin bangunkan (cth., Node.js, ular sawa, dll.).
Untuk tujuan ini, kami memasang pemalam untuk Node.js. Dalam asdf, pemalam ialah sekeping kod yang akan membolehkan anda menyesuaikan versi rangka kerja atau pustaka yang berbeza. Dalam kes ini, kami akan memasang pemalam Node.js dan kemudian memasang beberapa versi Node.js hanya untuk memahami cara asdf akan mengendalikannya.
Kami akan memasang pemalam Node.js dengan kod berikut:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Sila ambil perhatian bahawa anda perlu menangani secara eksplisit repositori git yang mengandungi kod sumber pemalam. Setelah pemalam itu disediakan, anda boleh menggunakannya untuk memasang versi Node.js tertentu dengan arahan berikut:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Dalam contoh ini, anda memasang versi terkini yang, pada masa penulisan, ialah 23.1.0. Dengan arahan berikut, anda memasang versi khusus Node.js:
$ asdf install nodejs latest
Untuk memastikan kedua-duanya tersedia dalam sistem anda, gunakan yang berikut:
$ asdf install nodejs 20.0.0
Untuk memilih versi Node.js untuk digunakan, gunakan arahan berikut:
$ asdf shim-versions node nodejs 20.0.0 nodejs 23.1.0
asdf mengendalikan pelbagai versi alat dengan mengisi fail bernama [.tool-versions](https://asdf-vm.com/manage/configuration.html#tool-versions) dengan format berikut:
$ asdf global nodejs 20.0.0 $ node --version v20.0.0 $ asdf global nodejs 23.1.0 $ node --version v23.1.0
Fail .tool-versions dimanipulasi secara automatik oleh asdf dengan arahan untuk menentukan versi mana yang anda ingin gunakan, seperti yang kami lakukan di atas dengan Node.js versi 20.0.0. Bergantung pada parament global, shell dan local, kami akan menambah versi alat pada fail .tool-versions tertentu dengan kesan berbeza pada persekitaran anda. Berikutan, terdapat penjelasan tentang kesan parameter sekiranya kami memasang Node.js versi 20.0.0:
- asdf global nodejs 20.0.0: Dalam kes ini, kami berhasrat untuk menggunakan versi khusus ini di seluruh sistem di mana sahaja ia tidak dinyatakan secara berbeza
- asdf shell nodejs 20.0.0: Ini adalah kes di mana kita mahu menggunakan versi Node.js ini hanya untuk sesi shell semasa
- asdf local nodejs 20.0.0: Rasa perintah ini akan mencipta .tool-versions yang menentukan versi Node.js hanya sah untuk direktori tempat perintah itu dilaksanakan. Ini bermakna kami boleh mempunyai versi yang berbeza bagi alat yang sama dalam sub-direktori projek anda yang berbeza. Ini adalah ciri yang cukup kemas, relevan untuk projek yang kompleks. Dalam imej berikut, anda boleh melihat bagaimana ini mempengaruhi persekitaran anda:
ruby 2.5.3 nodejs 10.15.0
Dengan arahan pertama, kami memberitahu asdf untuk menggunakan versi 20.0.0 dalam direktori rumah dan nod --version mengesahkan versi. Kemudian, kami mencipta direktori bernama ujian. Dalam ujian, kami melaksanakan asdf, menyatakan versi berbeza untuk Node (versi 23.1.0) dan, sekali lagi, nod --version mengesahkan bahawa kami menggunakan versi 23.1.0. Akhirnya, kembali ke direktori utama, anda boleh melihat bagaimana versi Node.js secara setempat masih 20.0.0.
Apa itu shim?
Sekarang kami mempunyai asdf yang bekerja pada sistem kami, mari kita pelajari apa itu shim dan mengapa ia penting apabila bekerja dengan asdf.
Dalam sains komputer, shim ialah satu cara untuk mengubah hala arahan (cth., penyerahan kaedah perpustakaan) secara telus antara versi yang berbeza. Kuncinya di sini ialah perkataan "secara telus." Keseluruhan idea asdf adalah untuk membenarkan pengguna menukar apa yang sebenarnya dipanggil apabila anda menulis, katakan, nod atau python atau mana-mana pakej lain, dengan cara yang telus. Pengguna terus menaip nod atau python tetapi asdf telah menyediakan laluan berbeza – shim – ke versi yang betul bergantung pada apa yang ditulis dalam fail .tool-versions.
Pemalam hanyalah satu set skrip shell pintar yang membenarkan asdf memilih versi arahan tertentu yang betul (cth., semak pemalam Node.js). Arahan dalam direktori bin hanya melaksanakan perkara yang asdf mesti laksanakan apabila anda menggunakan pemalam Node.js untuk memasang versi baharu, pilih versi tertentu untuk digunakan, dsb.
Bermula dengan mise
Proses memasang mise lebih mudah berbanding asdf kerana anda tidak perlu mengklon repositori git:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Panduan pengaktifan agak mudah; sebaik sahaja anda melaksanakan arahan di atas dan mulakan semula shell anda, anda akan dapat menjalankan yang berikut:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Ini akan menunjukkan status pemasangan anda. Setelah mise dipasang, anda mungkin perlu mengaktifkannya dengan perintah [mise activate](https://mise.jdx.dev/cli/activate.html).
Pada ketika ini, arahan mise tersedia untuk digunakan untuk tugas yang paling biasa: memasang versi rangka kerja tertentu untuk menjadikannya tersedia secara global untuk sistem:
$ asdf install nodejs latest
Kita bermula daripada situasi di mana nod boleh laku tidak berada dalam sistem. Menggunakan arahan mise, kami memasang versi nod tertentu secara global untuk menjadikannya tersedia. Untuk mengesahkan versi alatan yang dipasang pada masa ini, anda boleh menggunakan arahan berikut:
$ asdf install nodejs 20.0.0
Dalam arahan di atas, anda boleh melihat alat nod dipasang dalam kotak di atas dan versi Python.
Membandingkan asdf vs. mise
Rangka kerja mise menggunakan mekanisme asdf yang sama untuk mengendalikan konfigurasi alat yang berbeza di seluruh sistem dan dalam direktori tertentu. Peranan fail .tool-versions dalam asdf dimainkan oleh fail mise.toml, yang akan mengumpulkan konfigurasi.
Dalam mise, tiada konsep yang serupa dengan pemalam asdf, dan ini adalah perkara yang baik kerana, semasa dalam asdf, memasang versi alat tertentu – katakan node@20.0.0 – ialah proses dua langkah ( mula-mula memasang pemalam Node.js dan kemudian versi tertentu Node). Dalam mise, anda hanya menangani versi tunggal alat yang anda perlukan, dan mise akan menangani semua beban berat untuk mengkonfigurasinya untuk anda di sebalik tabir. Dalam dua kotak berikut, anda boleh melihat bagaimana arahan asdf diterjemahkan kepada mise:
$ asdf shim-versions node nodejs 20.0.0 nodejs 23.1.0
Sebenarnya, ini semua boleh dilakukan dalam satu langkah yang memasang pemalam dan masa jalan serta menetapkan versi:
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
Perkataan umum asdf diselesaikan secara elegan oleh gula sintaksis mise. Namun, mise berbeza dalam cara ia mengendalikan pelbagai versi, yang mempunyai kesan yang lebih luas pada keseluruhan pengalaman. Dalam imej berikut, kami menggambarkan perkara yang berlaku apabila anda melaksanakan perintah nod dalam persekitaran di mana asdf berfungsi:
Proses ini, sudah tentu, memberi kesan kepada masa yang diperlukan untuk melaksanakan arahan. Sebaliknya, mise menyelesaikan masalah yang sama untuk memilih alat yang betul bergantung pada konfigurasi dengan memanfaatkan mekanisme lain: pembolehubah PATH, yang merupakan mekanisme asli sistem pengendalian untuk melaksanakan arahan.
Persembahan adalah sama dengan menjalankan arahan (cth., nod) tanpa menggunakan mise. Demi rasa ingin tahu, mise berfungsi secara berbeza berkenaan dengan asdf: mise menjejaki setiap perubahan direktori supaya apabila pengguna menukar direktori, mise memanggil cangkuk dalaman untuk mengemas kini pembolehubah PATH. Cangkuk ini sangat cekap kerana ia ditulis dalam Rust dan ia akan menyediakan pembolehubah PATH dengan cepat untuk mengkonfigurasi persekitaran anda.
Kesimpulan
Kedua-dua asdf dan mise menguruskan berbilang versi alat dengan berkesan, masing-masing dengan mekanisme unik. mise cemerlang dalam kecekapan terima kasih kepada mekanisme cangkuk PATHnya, manakala asdf menawarkan keserasian alat yang lebih luas tetapi dengan pertukaran prestasi mekanisme shimnya. keserasian mise dengan pemalam asdf merapatkan jurang antara alatan.
Sama ada mengutamakan kelajuan atau pemilihan, kedua-dua alatan memperkasakan pembangun untuk mengurus persekitaran mereka dengan mudah, menawarkan ekosistem yang berkembang pesat untuk pelbagai pakej dan alatan.
Sediakan dengan penjejakan ralat moden LogRocket dalam beberapa minit:
- Lawati https://logrocket.com/signup/ untuk mendapatkan ID apl.
- Pasang LogRocket melalui NPM atau tag skrip. LogRocket.init() mesti dipanggil bahagian klien, bukan bahagian pelayan.
NPM:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Tag Skrip:
$ asdf install nodejs latest
3.(Pilihan) Pasang pemalam untuk penyepaduan yang lebih mendalam dengan timbunan anda:
- Perisian tengah Redux
- ngrx middleware
- Pemalam Vuex
Mulakan sekarang.
Atas ialah kandungan terperinci mise vs. asdf untuk pengurusan persekitaran projek JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.
