Apakah jquery merupakan library atau framework javascript? [Tutup]


121

Di sini, jquery disebutkan dalam kategori framework: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

Apakah jquery merupakan library atau framework javascript?


40
Perpustakaan satu orang adalah kerangka kerja orang lain.
nnnnnn

1
Ini di luar topik di sini karena setiap jawaban sama validnya: "Apa favorit Anda ______?" . Juga, apa bedanya jika kita semua itu perpustakaan atau kerangka kerja?
EJoshuaS

Jawaban:


169

Perpustakaan. Menurut beranda , dan yang saya setujui.

Kerangka kerja adalah sesuatu yang biasanya memaksa cara tertentu untuk mengimplementasikan solusi, sedangkan jQuery hanyalah alat untuk mempermudah penerapan apa yang ingin Anda lakukan.


55
+1. Perpustakaan adalah sesuatu yang Anda sebut dari program Anda. Kerangka kerja adalah sesuatu yang memanggil program Anda.
Thilo

1
Untuk perbandingan library vs framework, lihat "Inversion of Control" stackoverflow.com/a/3057818/2144912
cheshireoctopus

30

14
Meskipun saya setuju, nama / slogan yang diberikan sendiri tidak membuktikan apa-apa. Ada ribuan yang disebut "kerangka kerja" di luar sana yang sebenarnya adalah perpustakaan.
kapex

@Kapep tetapi kasus terbalik kurang umum: tidak banyak kerangka kerja yang menyebut diri mereka "perpustakaan". Saya kira istilah "kerangka" terdengar lebih seksi bagi sebagian orang…
Franklin Yu

19

Yang pasti, ini adalah pustaka javascript. Tapi tentang menjadi kerangka atau tidak, saya hanya berpikir itu bukan kerangka. Lihat definisi wikipedia dari software-framework :

Ini adalah kumpulan pustaka perangkat lunak yang menyediakan antarmuka pemrograman aplikasi yang ditentukan.

Dan jQuery hanyalah satu pustaka. Setelah itu dikatakan:

Kerangka kerja berisi fitur pembeda utama yang memisahkannya dari pustaka normal:

  1. inversion of control - Dalam kerangka kerja, tidak seperti di perpustakaan atau aplikasi pengguna normal, aliran kontrol program secara keseluruhan tidak ditentukan oleh pemanggil, tetapi oleh kerangka kerja.

Jadi, saya pikir ini bukan kerangka kerja.


9

Menurut situs web angularjs

  • perpustakaan - kumpulan fungsi yang berguna saat menulis aplikasi web. Kode Anda bertanggung jawab dan akan dipanggil ke perpustakaan jika
    dianggap sesuai. Misalnya, jQuery.
  • frameworks - implementasi tertentu dari aplikasi web, di mana kode Anda mengisi detailnya. Kerangka kerja bertanggung jawab dan memanggil kode Anda ketika membutuhkan sesuatu yang spesifik aplikasi. Misal durandal, bara, dll.

5

Framework dan libarry belum tentu merupakan istilah yang saling eksklusif. Kerangka biasanya merupakan perpustakaan atau kumpulan perpustakaan.

Sebenarnya, jQuery adalah pustaka, tetapi, sampai batas tertentu, itu memenuhi definisi kerangka perangkat lunak. Meskipun banyak yang berpendapat bahwa jQuery tidak memenuhi definisi kerangka perangkat lunak dengan cukup ketat, faktanya adalah tidak ada kerangka kerja JavaScript lain yang sepenuhnya memenuhi definisi kerangka kerja juga.

Salah satu ciri khas kerangka kerja perangkat lunak adalah bahwa kodenya dilindungi dari modifikasi. Dalam JavaScript, ini jelas bukan masalahnya. Pustaka atau kerangka kerja apa pun yang dapat dipanggil ke kode sisi klien Anda dapat dimodifikasi, meskipun akan bertentangan dengan praktik terbaik untuk mengubahnya. Oleh karena itu, jika diizinkan untuk memanggil Bootstrap atau AngularJS sebagai kerangka kerja, tidak ada alasan mengapa jQuery juga tidak dapat disebut kerangka kerja.Tautan ini berisi penjelasan yang lebih detail tentang bagaimana jQuery memenuhi kriteria untuk disebut sebagai kerangka kerja.

Mungkin penjelasan terbaik tentang mengapa jQuery lebih merupakan kerangka kerja daripada perpustakaan adalah kenyataan bahwa sebagai pengembang, Anda dapat memilih untuk tidak menggunakan fungsi seperti kerangka kerja apa pun. Anda dapat, misalnya, mencampur pernyataan jQuery sederhana dengan pernyataan JavaScript standar pada baris yang sama. AngularJS dan Bootstrap biasanya tidak mengizinkan Anda melakukan ini. Oleh karena itu, jawaban akurat apakah jQuery adalah framework atau tidak adalah "tergantung apakah Anda memilih untuk menggunakannya sebagai framework atau tidak".


2

Saya setuju dengan semua jawaban di sini bahwa jQuery itu sendiri memang perpustakaan, bukan kerangka kerja. Seperti yang ditentukan oleh jawaban Saeed, salah satu fitur pembeda utama adalah inversi kendali. Namun Anda dapat menggunakan fungsionalitas jQuery untuk membuat kerangka kerja Anda sendiri.

Contoh: ada proyek yang dibangun di atas jQuery yang didefinisikan sebagai kerangka kerja: jQuery Mobile: Kerangka Web yang Dioptimalkan untuk Sentuhan , JavaScriptMVC , dan sammy.js untuk beberapa nama.

Ada juga pustaka lain yang dibangun di atas jQuery, seperti jQuery UI

Beberapa di antaranya tampak seperti semantik ketika mendefinisikan apa itu perpustakaan vs kerangka kerja, tetapi contoh-contoh itu membantu menarik garis bagi saya.


1

Jika kita berbicara tentang Pembalikan kontrol, yang hampir semua orang di utas di atas bicarakan maka jQuery adalah KERANGKA.

Ia mendapat IOC misalnya ketika kita menulis fungsi $ (document) .ready {} ... itu adalah wadah yang memanggil metode ini dan kita cukup meletakkan kode kita di dalam tanda kurung. Kami bukan Penelepon dari metode ini dan karenanya "Inversi Kontrol"

Dengan cara ini jQuery adalah KERANGKA.


1
Yah, perpustakaan yang paling besar menyediakan setidaknya semacam metode callback-ish samar-samar untuk beberapa tujuan. Anda dapat menulis banyak kode jQuery tanpa bergantung pada ready().
Nathan Tuggy

@NathanTuggy Jadi mengapa diskusi rinci tentang Framework vs Lib berbicara tentang IOC. Jika ada, maka itu ada. Mengapa berbicara tentang "mengandalkan" atau "tidak mengandalkan".
pinkman

Karena IoC gaya framework dicirikan oleh kebutuhan untuk menggunakannya. Bukan kemungkinan menggunakannya, seperti yang diinginkan, dengan cara tertentu, a la carte. Dalam kerangka, Anda tidak punya pilihan: kontrol yang terbalik.
Nathan Tuggy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.