Rumah  >  Soal Jawab  >  teks badan

javascript - Mengapa mengisytiharkan kebergantungan dalam kebergantungan?

Apabila anda melihat modul dipasang oleh --save, ia akan dipaparkan dalam kebergantungan.
Dan modul dalam kebergantungan mewakili kebergantungan persekitaran pengeluaran. Seperti jQuery.

Tetapi apa yang saya tidak faham ialah, ambil jQuery sebagai contoh. Mengapa saya harus mengisytiharkan tanggungan dalam tanggungan?
Dalam persekitaran pengeluaran, saya akan terus menggunakan tag skrip untuk merujuk jQuery, tanpa kebergantungan sama sekali. Apakah yang berlaku jika modul yang bergantung kepada persekitaran pengeluaran diisytiharkan dalam kebergantungan? Adakah ia akan menambah tag skrip secara automatik untuk saya atau, sebagai contoh, apabila modul pembungkusan, apabila modul persekitaran pengeluaran pembungkusan, adakah semua kebergantungan dalam kebergantungan akan dibungkus? Tetapi setakat yang saya tahu, sebagai contoh, apabila modul webpack dibungkus, ia dibungkus berdasarkan graf kebergantungan yang dibuat oleh modul memerlukan, jadi saya tidak begitu faham mengapa kebergantungan persekitaran pengeluaran harus diisytiharkan dalam kebergantungan.

为情所困为情所困2677 hari yang lalu744

membalas semua(5)saya akan balas

  • 我想大声告诉你

    我想大声告诉你2017-06-21 10:13:57

    Kami akan menggunakan banyak modul dalam pembangunan sebenar Beberapa modul (seperti gulp, babel, ini diletakkan dalam devDependencies) hanya digunakan dalam persekitaran pembangunan, manakala jquery digunakan dalam persekitaran pengeluaran Apabila anda menggunakan projek tersebut persekitaran pengeluaran, jika anda melaksanakan npm install --production, hanya modul dalam kebergantungan akan dipasang, yang akan menjadi sangat mudah.

    balas
    0
  • PHP中文网

    PHP中文网2017-06-21 10:13:57

    Hakikatnya ialah medan itu direka bentuk untuk nod, jadi tidak kira sama ada anda menulisnya atau tidak.

    Untuk lebih spesifik, sebagai projek bahagian hadapan, kebergantungan anda sama ada dibungkus atau diperkenalkan dengan tag skrip, jadi apa yang ada dalam medan deps anda tidak akan menjejaskan kod akhir sama sekali.

    balas
    0
  • 天蓬老师

    天蓬老师2017-06-21 10:13:57

    • Jika anda menggunakan <script>加入模块的话,这个引入JS/CSS的方法本身用不到npm包管理,可以直接忽略package.json masalah konfigurasi

    • Jika anda memasang pakej kebergantungan seperti webpack进行打包。webpack在模块打包时是根据require的模块创建的依赖图表来打包的,这的确没错。但是之后还有一步,就是webpack通过依赖图表进行打包的时候,如果依赖图表里有jQuery依赖,webpack还是要去找jQuery的文件,然后注入到打包的文件之中。如果你不写dependencies的话,在团队开发中,另一个人改了一点代码,然后用npm install, dan kemudian membungkus semula, webpack mencipta graf kebergantungan, yang bergantung pada jQuery, tetapi webpack tidak dapat mencari kod jQuery untuk disuntik ke dalam fail sasaran dalam node_modules, jadi Jika dia membungkus semula ia akan gagal. Sudah tentu, anda boleh mengabaikan ini jika anda seorang sahaja yang sedang berkembang.

    • Sudah tentu, dependencies mempunyai aplikasi lain, seperti perangkak node.js yang saya tulis sebelum ini. Memandangkan perangkak ini secara langsung menggunakan nod untuk menjalankan kod JS, require hanya boleh membaca pakej yang sepadan selepas memasang kebergantungan ini dalam fail JS saya. require()的包都需要写在dependencies里,部署的时候用npm install

    • balas
      0
  • 淡淡烟草味

    淡淡烟草味2017-06-21 10:13:57

    Saya rasa anda mungkin menggunakan nod kerana anda perlu menggunakan webpack untuk membangunkan halaman. Jika tidak, anda tidak akan bertanya tentang hubungan antara kebergantungan dan skrip. Tiada kaitan antara keduanya.

    Di sini anda telah mencampurkan 3 perkara:

    1. Pengurusan pergantungan package.json

    2. Pengurusan pergantungan pek web

    3. Pengenalan skrip dalam html

    Pengurusan pergantungan package.json

    node bukan sahaja boleh digunakan untuk pembangunan halaman, tetapi juga boleh digunakan untuk melakukan banyak perkara, seperti membangunkan program pelayan, membangunkan perpustakaan JS, dll. Kebergantungan merekod dan menjamin kebergantungan projek anda apabila ia digunakan oleh ; devDependencies merekod dan menjamin kebergantungan projek anda apabila ia dibangunkan oleh . Sebagai contoh, kami membangunkan perpustakaan dan bersedia untuk menerbitkannya di NPM. Jika anda perlu menggunakan

    , devDependencies termasuk babel dan eslint.

    lodash.sample,开发时使用es6,并且还使用eslint对代码风格进行规范。那么dependencies中就有lodash.samplePergantungan memastikan bahawa apabila sesiapa memasang perpustakaan kami,

    mereka boleh mendapatkan persekitaran pembangunan yang sama (pembungkusan, transkod, kekangan, pembinaan, dll.). Fikirkanlah, jika anda menggunakan komputer lain dan ingin membangunkan versi 2.0 perpustakaan ini, jika tiada devDependencies, anda perlu memasang babel dan eslint secara manual sekali lagi, atau anda perlu menyalin keseluruhan projek daripada projek asal . folder node_modules.

    lodash.sample都会被安装(否则这个库将无法正确运行);devDependencies保证任何人在(或者你自己在其他设备上)对这个项目进行修改(开发)时,通过npm installPengurusan pergantungan pek web

    Webpack ialah alat binaan yang boleh digunakan dalam pembangunan halaman dan juga boleh digunakan di tempat lain. Pengurusan kebergantungan Webpack memang mencari kebergantungan melalui

    , ia tidak bergantung pada kebergantungan.

    requireMasih menggunakan contoh perpustakaan di atas, kita boleh menggunakan webpack untuk pembungkusan (maka perlu ada webpack dalam devDependencies). Walaupun anda memanggil masuk.

    Pengenalan skrip dalam htmlnpm install --save了其他十几个模块,webpack时,也只会将lodash.sample

    Apabila webpack digunakan untuk membangunkan halaman, fail js yang dibungkus mula-mula diperkenalkan secara manual sebagai skrip dalam HTML, tetapi kemudiannya terdapat pemalam untuk membantu kami melengkapkan proses ini secara automatik. Kemudian, beberapa alat perancah seperti vue-cli mempunyai konfigurasi pek web yang bertanggungjawab terbina dalam, mengoptimumkan dan mengautomasikan keseluruhan proses. Di samping itu, keseluruhan proses pembangunan diselesaikan dalam nod, yang boleh menyebabkan anda tersalah percaya bahawa terdapat hubungan antara kebergantungan dan skrip.

    Kembali kepada soalan anda: "Mengapa kita harus mengisytiharkan kebergantungan persekitaran pengeluaran dalam kebergantungan"

    Alasannya ialah: tanpa merekodkan kebergantungan ini, apabila orang lain (atau anda sendiri pada peranti lain) membangunkannya semula, mereka tidak akan tahu kebergantungan mana yang perlu diperkenalkan ke dalam projek, dan pembangunan tidak akan dapat dilakukan. Jika anda hanya seorang dan tidak menukar komputer, kebergantungan tidak perlu digunakan.

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-21 10:13:57

    工作环境改变的时候,你的项目要是想正常运行。必须声明依赖,这样不管在哪里,只需要一句
    npm installAnda boleh memulihkan persekitaran kerja dan menyelesaikan semua kebergantungan

    balas
    0
  • Batalbalas