Rumah hujung hadapan web tutorial js Menggunakan keperluan yang memerlukan dalam aplikasi AngularJS

Menggunakan keperluan yang memerlukan dalam aplikasi AngularJS

Feb 20, 2025 pm 12:14 PM

Using RequireJS in AngularJS Applications

mata teras

    memerlukanJS adalah perpustakaan JavaScript yang memudahkan kebergantungan JavaScript memuat dan meningkatkan pemeliharaan asas kod. Ia amat berguna dalam projek besar, kerana kebergantungan pengesanan dalam projek besar boleh mencabar.
  • sistem suntikan pergantungan Angular dan pengurusan ketergantungan memerlukan fungsi yang berbeza. AngularJS mengendalikan objek yang diperlukan dalam komponen, manakala memerlukan modul atau fail JavaScript.
  • Komponen AngularJS boleh ditakrifkan sebagai modul yang memerlukan dan boleh dibuang secara manual kerana fail skrip yang diperlukan perlu dimuatkan secara asynchronously.
  • Alat seperti
  • grunt boleh digunakan untuk menggabungkan dan memampatkan modul memerlukan modul untuk penggunaan, dengan itu mengoptimumkan kelajuan muat turun fail skrip. Proses ini boleh automatik dan boleh dikonfigurasi secara berbeza untuk setiap fasa penggunaan.
Salah satu cara paling mudah untuk menulis aplikasi JavaScript yang besar adalah untuk memecah asas kod ke dalam pelbagai fail. Melakukannya dapat meningkatkan pemeliharaan kod anda, tetapi dapat meningkatkan kemungkinan tag skrip yang hilang atau salah dalam dokumen HTML utama. Oleh kerana bilangan fail meningkat, kebergantungan pengesanan menjadi sukar. Masalah ini juga wujud dalam aplikasi AngularJS yang besar. Kami sudah mempunyai banyak alat untuk mengendalikan pemuatan kebergantungan dalam aplikasi kami. Dalam artikel ini, kita akan belajar bagaimana menggunakan memerlukan dengan AngularJS untuk memudahkan kerja pemuatan kebergantungan. Kami juga akan melihat cara menggunakan Grunt untuk menghasilkan fail combo yang mengandungi modul memerlukan.

Pengenalan kepada keperluan memerlukanJS adalah perpustakaan JavaScript yang membantu melambatkan memuatkan ketergantungan JavaScript. Modul ini hanya mengandungi beberapa fail JavaScript yang memerlukan gula sintaks JS. MemerlukanJS melaksanakan modul asynchronous yang ditentukan oleh Commonjs. MemerlukanJS menyediakan API mudah untuk membuat dan modul rujukan. MemerlukanJS memerlukan fail utama yang mengandungi data konfigurasi asas, seperti laluan ke modul dan shims. Coretan kod berikut menunjukkan rangka fail main.js:

Semua modul dalam aplikasi tidak perlu ditentukan dalam bahagian Paths. Modul lain boleh dimuatkan menggunakan laluan relatif mereka. Untuk menentukan modul, kita perlu menggunakan blok menentukan ().

require.config({
    map: {
        //映射
    },
    paths: {
        //模块的别名和路径
    },
    shim: {
        //模块及其依赖模块
    }
});
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Modul

mungkin mempunyai beberapa modul yang bergantung. Biasanya, objek dikembalikan pada akhir modul, tetapi ini bukan keperluan wajib.

define([
    //依赖项
], function (
    //依赖项对象
) {

    function myModule() {
        //可以使用上面接收到的依赖项对象
    }

    return myModule;
});
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

suntikan ketergantungan sudut dan memerlukan pengurusan ketergantungan

Persoalan umum yang saya dengar dari pemaju sudut adalah mengenai perbezaan antara pengurusan ketergantungan Angular dan pengurusan ketergantungan yang memerlukan. Adalah penting untuk diingat bahawa tujuan kedua -dua perpustakaan ini sama sekali berbeza. Suntikan ketergantungan terbina dalam AngularJS memerlukan objek yang diperlukan dalam komponen pemprosesan sistem; Apabila memerlukanJS cuba memuatkan modul, ia memeriksa semua modul bergantung dan memuatkannya terlebih dahulu. Objek modul yang dimuatkan di -cache dan disediakan apabila modul yang sama diminta semula. Sebaliknya, AngularJS mengekalkan penyuntik yang mengandungi senarai nama dan objek yang sepadan. Apabila komponen dibuat, entri itu ditambah kepada penyuntik dan disediakan apabila objek dirujuk dengan nama berdaftar.

gabungan keperluan dan angularjs

Kod yang boleh dimuat turun dengan artikel ini adalah aplikasi mudah dengan dua halaman. Ia mempunyai kebergantungan luaran berikut:

  • memerlukan
  • jQuery
  • AngularJS
  • laluan sudut
  • Sumber sudut
  • angular ui nggrid

Fail -fail ini hendaklah dimuatkan terus ke halaman dalam pesanan yang disenaraikan di sini. Kami mempunyai lima fail skrip tersuai yang mengandungi kod untuk komponen AngularJS yang diperlukan. Mari lihat bagaimana fail -fail ini ditakrifkan.

Tentukan komponen AngularJS sebagai modul memerlukan

Mana -mana komponen AngularJS mengandungi:

  • Definisi fungsi
  • Suntikan Ketergantungan
  • Daftar dengan modul sudut

Dalam tiga tugas di atas, kami akan melaksanakan dua tugas pertama dalam setiap modul, dan tugas ketiga akan dilakukan dalam modul berasingan yang bertanggungjawab untuk mewujudkan modul AngularJS. Pertama, mari kita tentukan blok konfigurasi. Blok konfigurasi tidak bergantung kepada mana -mana blok lain dan mengembalikan fungsi konfigurasi pada akhir. Walau bagaimanapun, sebelum kita memuatkan modul konfigurasi di dalam modul lain, kita perlu memuat semua yang kita perlukan untuk mengkonfigurasi blok. config.js mengandungi kod berikut:

require.config({
    map: {
        //映射
    },
    paths: {
        //模块的别名和路径
    },
    shim: {
        //模块及其依赖模块
    }
});
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sila ambil perhatian bahawa suntikan ketergantungan berada dalam coretan kod di atas. Saya menggunakan $inject untuk menyuntik kebergantungan kerana fungsi konfigurasi yang ditakrifkan di atas adalah fungsi JavaScript biasa. Sebelum menutup modul, kami mengembalikan fungsi konfigurasi supaya ia boleh dihantar ke modul bergantung untuk kegunaan selanjutnya. Kami juga mengambil pendekatan yang sama untuk menentukan apa-apa jenis komponen sudut lain, kerana tidak ada kod khusus komponen dalam fail ini. Coretan kod berikut menunjukkan definisi pengawal:

define([
    //依赖项
], function (
    //依赖项对象
) {

    function myModule() {
        //可以使用上面接收到的依赖项对象
    }

    return myModule;
});
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Modul sudut aplikasi bergantung pada setiap modul yang ditakrifkan setakat ini. Fail ini mengambil objek dari semua fail lain dan cangkuknya ke modul AngularJS. Fail ini mungkin atau tidak boleh mengembalikan apa -apa, kerana modul sudut fail ini boleh dirujuk dari mana -mana sahaja menggunakan angular.module(). Blok kod berikut mentakrifkan modul sudut:

require.config({
    map: {
        //映射
    },
    paths: {
        //模块的别名和路径
    },
    shim: {
        //模块及其依赖模块
    }
});
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kerana fail skrip yang diperlukan dimuatkan secara asynchronously, adalah mustahil untuk boot aplikasi sudut menggunakan arahan NG-app. Cara yang betul di sini ialah menggunakan boot manual. Ini mesti dilakukan dalam fail khas yang dipanggil main.js. Ini memerlukan pemuatan fail pertama yang mentakrifkan modul sudut. Kod untuk fail ini ditunjukkan di bawah.

define([
    //依赖项
], function (
    //依赖项对象
) {

    function myModule() {
        //可以使用上面接收到的依赖项对象
    }

    return myModule;
});
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Konfigurasi Grunt untuk menggabungkan modul memerlukan

Apabila menggunakan aplikasi JavaScript-heavy, fail skrip harus digabungkan dan dimampatkan untuk mengoptimumkan kelajuan muat turun fail skrip. Alat seperti Grunt boleh mengautomasikan tugas -tugas ini dengan mudah. Ia mentakrifkan banyak tugas, menjadikan sebarang proses penyebaran depan lebih mudah. Ia mempunyai tugas, grunt-contrib-requirejs, untuk menggabungkan modul fail memerlukan dalam urutan yang betul, dan kemudian memampatkan fail hasil. Seperti mana -mana tugas yang lain, ia boleh dikonfigurasikan untuk berkelakuan berbeza untuk setiap peringkat penempatan. Konfigurasi berikut boleh digunakan untuk aplikasi demonstrasi:

define([], function () {
    function config($routeProvider) {
        $routeProvider.when('/home', {templateUrl: 'templates/home.html', controller: 'ideasHomeController'})
            .when('/details/:id', {templateUrl: 'templates/ideaDetails.html', controller: 'ideaDetailsController'})
            .otherwise({redirectTo: '/home'});
    }
    config.$inject = ['$routeProvider'];

    return config;
});
Salin selepas log masuk

Konfigurasi ini akan menjana fail yang tidak dikompresi apabila berjalan mengerang dengan pilihan dev dan menjana fail termampat apabila menjalankan Grunt dengan pilihan pelepasan.

Kesimpulan

Menguruskan kebergantungan boleh menjadi mencabar apabila saiz permohonan melebihi jumlah fail tertentu. Perpustakaan seperti memerlukanJS menjadikannya lebih mudah untuk menentukan kebergantungan tanpa perlu risau tentang pesanan pemuatan fail. Pengurusan pergantungan menjadi sebahagian daripada aplikasi JavaScript. AngularJS 2.0 akan menyokong AMD dalam terbina dalam.

(bahagian FAQ telah ditinggalkan kerana terlalu lama dan tidak sepadan dengan matlamat asal pseudo.

Atas ialah kandungan terperinci Menggunakan keperluan yang memerlukan dalam aplikasi AngularJS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

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.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

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.

Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Apr 04, 2025 pm 05:12 PM

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...

See all articles