Saya terus melihat perekrut, pengembang, dll. Merujuk ke Node.js sebagai kerangka kerja. Menurut pendapat saya, ini karena ketidaktahuan untuk apa Node.js sebenarnya.
Seringkali, dalam deskripsi pekerjaan, Node.js dikelompokkan sebagai perpustakaan di antara AngularJS , React , dll. Secara umum, saya melihatnya dimasukkan oleh seseorang yang tidak mengetahui perbedaannya (SDM, perekrut, dll.).
Menurut pendapat saya, Node.js adalah platform , atau lingkungan runtime; itu mematikan DOM API (JavaScript di browser) untuk berbagai API lainnya, seperti sistem file (karena berjalan sebagai server, dan bukan di browser).
Mengapa orang berpikir bahwa Node.js adalah kerangka kerja; Apakah aku salah? Apakah ini sebenarnya sebuah kerangka kerja?
terminology
node.js
ndugger
sumber
sumber
Jawaban:
Agak sulit untuk mengatakannya karena kata-kata ini tidak terdefinisi dengan baik. Dalam bahasa umum, saya pikir itu agak tidak lazim untuk memanggil Node. Saya pikir itu kerangka kerja, tapi saya akan mengalami kesulitan berdebat mengapa tidak tepatnya.
Ini semua menjadi tidak pasti, dan saya sering melihat penggunaan bahasa yang sangat buruk, jadi saya akan secara eksplisit dan mulai dari bawah
JavaScript adalah bahasa komputer, yang berarti, secara sempit, seperangkat konvensi yang memungkinkan kita untuk membaca dan menafsirkan sekelompok teks sebagai memiliki semantik eksekusi - kata yang bagus untuk "cara menafsirkan bahasa sebagai seperangkat instruksi". Kelas-kelas program yang disebut interpreter , compiler , transpiler , linter , highlighters , dll. Semuanya memuat teks dan berupaya melakukan sesuatu dengan pemahaman konvensional tentang cara menjalankan kode ini.
Sekarang, mari kita menggali sedikit tentang semantik eksekusi. Secara umum, semantik eksekusi melibatkan proses membaca teks bahasa dan sampai pada deskripsi mesin abstrak atau deskripsi efek samping yang dapat diamati . Yang ingin saya sarankan adalah bahwa keduanya menganggap perlu ada semacam "API tingkat rendah" baik untuk mengoperasikan mesin atau untuk melakukan efek yang dapat diamati. Ini biasanya dianggap sebagai bagian dari lingkungan runtime
Kata runtime biasanya disalahgunakan berarti kumpulan yang diasumsikan primitif sendiri dan instantiasi aktual dari mereka.
Jadi, sekarang kita sampai pada sesuatu yang berbulu. Bahasa adalah seperangkat konvensi yang mengasumsikan keberadaan runtime untuk memberikan makna pada semantik pelaksanaannya. Itu tidak pernah "menyelidiki mereka" karena mereka berada di luar ruang lingkup.
Untuk benar-benar menggunakan bahasa Anda ingin sesuatu seperti kompiler atau juru bahasa di samping implementasi runtime. Compiler / interpreter dan runtime ini berjalan seiring dalam menjalankan kode Anda.
Jadi di mana Node.js cocok dengan ini?
Kita harus memecahnya menjadi beberapa bagian:
Jadi Node.js banyak hal!
Tetapi apakah ini sebuah kerangka kerja?
Di sinilah terminologi benar-benar berantakan — tidak ada yang memiliki definisi yang baik, konsisten, bermakna tentang apa sebenarnya kerangka kerja itu.
Ada perdebatan yang mengamuk: "apa itu kerangka kerja versus perpustakaan" dan mereka berakhir dengan hal-hal yang tidak memuaskan seperti "perpustakaan adalah sesuatu yang Anda panggil dan kerangka kerja adalah sesuatu yang memanggil Anda". Saya bahkan tidak benar-benar ingin memberikan penjelasan yang menyedihkan hari itu — tetapi JavaScript, dan JavaScript khususnya, adalah pukulan besar bagi definisi ini karena keseluruhan teknik panggilan balik berarti Anda terus - menerus beralih antara menelepon dan dipanggil.
Menurut pendapat pribadi saya, ada sesuatu yang substansial di sini. Saya tidak ingin menggambar garis yang terang, tetapi saya hanya akan mengatakannya
Ini adalah garis gelombang tangan yang pasti, tapi saya ingin menarik poin yang sangat menarik tentang kerangka kerja:
Kerangka kerja menyiratkan seperangkat konvensi tentang bagaimana menafsirkan kode; karena itu mereka adalah bahasa dalam hak mereka sendiri.
Ini mungkin sesuatu yang juga ingin diperdebatkan orang, tetapi jika Anda membeli definisi saya sebelumnya bahwa suatu bahasa hanyalah seperangkat konvensi yang memberi kehidupan pada sekumpulan teks, maka setiap kali Anda meletakkan lapisan konvensi baru, Anda Saya sudah membangun bahasa baru. Mungkin dengan kerangka kerja bahan baku adalah interpretasi semantik dari bahasa inang mereka alih-alih file teks mentah, tetapi idenya sama!
Jadi dengan semua yang dikatakan, saya benar-benar senang memanggil Node.js sebuah kerangka kerja bahkan jika itu bertentangan dengan norma! Node.js menambahkan fungsionalitas ke JavaScript mentah dengan cara memperluas bahasa . Dengan itu membawa asumsi dan alat baru untuk bekerja dalam bahasa yang diperluas ini. Secara fungsional, ide-ide ini sama dengan ide-ide kerangka kerja lain yang diterima dengan baik seperti Ruby on Rails .
Saya berpendapat bahwa jika pada saat ini Anda merasa sedikit mual dan ingin berdebat bahwa ada perbedaan besar antara Ruby on Rails dan Node.js dengan cara ini maka saya di sana bersama Anda , tentu saja. Jenis dunia konseptual yang didiami keduanya secara dramatis berbeda - saya hanya ingin mengatakan bahwa mereka adalah hal yang sama: seperangkat konvensi untuk memperluas kekuatan bahasa dasar dalam domain tertentu.
Saya juga senang menyarankan bahwa domain Node.js kecil dan ketat sehingga konvensi yang ditambahkannya sederhana untuk dipikirkan dan relatif mudah dibuat benar. OTOH, Ruby on Rails hidup dalam domain kompleks "aplikasi web bisnis" yang tidak didefinisikan dengan baik, yang berarti bahwa konvensi yang dihimpunnya jelas tidak jelas dan rusak.
Tapi semua ini jauh dari kata, ya, perekrut mungkin tidak tahu apa artinya ketika mengatakan itu. Saya menduga "framework" hanya terdengar seperti kata yang lebih baik, lebih grokkable daripada "runtime" atau "engine".
sumber
probably have no idea
,: 'framework' adalah sebuah kata yang dapat Anda pahami tanpa menjadi seorang programmer, fitur yang berguna, jika tidak digunakan ketika itu benar-benar akan membuat perbedaan.sumber
Node adalah runtime atau lingkungan. Ini bukan kerangka kerja. Orang (saya merasa) sering mendapatkan kesalahan ini karena kerangka kerja seperti express ada di mana-mana dengan simpul.
lebih banyak membaca tentang runtimes vs frameworks jika Anda tertarik.
sumber