cari
Rumahhujung hadapan webtutorial jsMenggunakan keperluan yang memerlukan dalam aplikasi AngularJS

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: {
        //模块及其依赖模块
    }
});
Modul

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

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

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

    return myModule;
});

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: {
        //模块及其依赖模块
    }
});

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;
});

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: {
        //模块及其依赖模块
    }
});

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;
});

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;
});

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
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
Jenis data JavaScript: Adakah terdapat perbezaan antara penyemak imbas dan nodej?Jenis data JavaScript: Adakah terdapat perbezaan antara penyemak imbas dan nodej?May 14, 2025 am 12:15 AM

Jenis data teras JavaScript adalah konsisten dalam penyemak imbas dan node.js, tetapi ditangani secara berbeza dari jenis tambahan. 1) Objek global adalah tetingkap dalam penyemak imbas dan global di Node.js. 2) Objek penampan unik Node.js, digunakan untuk memproses data binari. 3) Terdapat juga perbezaan prestasi dan pemprosesan masa, dan kod perlu diselaraskan mengikut persekitaran.

Komen JavaScript: Panduan untuk menggunakan // dan / * * /Komen JavaScript: Panduan untuk menggunakan // dan / * * /May 13, 2025 pm 03:49 PM

JavaScriptusestWotypesofcomments: Single-line (//) danMulti-line (//)

Python vs JavaScript: Analisis Perbandingan untuk PemajuPython vs JavaScript: Analisis Perbandingan untuk PemajuMay 09, 2025 am 12:22 AM

Perbezaan utama antara Python dan JavaScript ialah sistem jenis dan senario aplikasi. 1. Python menggunakan jenis dinamik, sesuai untuk pengkomputeran saintifik dan analisis data. 2. JavaScript mengamalkan jenis yang lemah dan digunakan secara meluas dalam pembangunan depan dan stack penuh. Kedua -duanya mempunyai kelebihan mereka sendiri dalam pengaturcaraan dan pengoptimuman prestasi yang tidak segerak, dan harus diputuskan mengikut keperluan projek ketika memilih.

Python vs JavaScript: Memilih alat yang sesuai untuk pekerjaanPython vs JavaScript: Memilih alat yang sesuai untuk pekerjaanMay 08, 2025 am 12:10 AM

Sama ada untuk memilih Python atau JavaScript bergantung kepada jenis projek: 1) Pilih Python untuk Sains Data dan Tugas Automasi; 2) Pilih JavaScript untuk pembangunan front-end dan penuh. Python disukai untuk perpustakaannya yang kuat dalam pemprosesan data dan automasi, sementara JavaScript sangat diperlukan untuk kelebihannya dalam interaksi web dan pembangunan stack penuh.

Python dan javascript: memahami kekuatan masing -masingPython dan javascript: memahami kekuatan masing -masingMay 06, 2025 am 12:15 AM

Python dan JavaScript masing -masing mempunyai kelebihan mereka sendiri, dan pilihan bergantung kepada keperluan projek dan keutamaan peribadi. 1. Python mudah dipelajari, dengan sintaks ringkas, sesuai untuk sains data dan pembangunan back-end, tetapi mempunyai kelajuan pelaksanaan yang perlahan. 2. JavaScript berada di mana-mana dalam pembangunan front-end dan mempunyai keupayaan pengaturcaraan tak segerak yang kuat. Node.js menjadikannya sesuai untuk pembangunan penuh, tetapi sintaks mungkin rumit dan rawan kesilapan.

Inti JavaScript: Adakah ia dibina di atas C atau C?Inti JavaScript: Adakah ia dibina di atas C atau C?May 05, 2025 am 12:07 AM

Javascriptisnotbuiltoncorc; it'saninterpretedlanguagethatrunsonenginesoftenwritteninc .1) javascriptwasdesignedasalightweight, interpratedlanguageforwebbrowsers.2)

Aplikasi JavaScript: Dari Front-End ke Back-EndAplikasi JavaScript: Dari Front-End ke Back-EndMay 04, 2025 am 12:12 AM

JavaScript boleh digunakan untuk pembangunan front-end dan back-end. Bahagian depan meningkatkan pengalaman pengguna melalui operasi DOM, dan back-end mengendalikan tugas pelayan melalui Node.js. 1. Contoh front-end: Tukar kandungan teks laman web. 2. Contoh backend: Buat pelayan Node.js.

Python vs JavaScript: Bahasa mana yang harus anda pelajari?Python vs JavaScript: Bahasa mana yang harus anda pelajari?May 03, 2025 am 12:10 AM

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

See all articles

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!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma