cari
Rumahhujung hadapan webtutorial jsRapi pengawal sudut anda dengan kilang dan perkhidmatan

Tidy Up Your Angular Controllers with Factories and Services

kira -kira lima atau enam tahun yang lalu, JQuery menguasai pelanggan web. Ia berbunyi seperti bahasa Inggeris tulen, mudah dipasang, dan mempunyai keluk pembelajaran yang lancar yang walaupun kanak -kanak dapat dengan mudah dimulakan. Walau bagaimanapun, kemudahan penggunaan ini juga membawa beberapa masalah. JQuery menjadikannya mudah untuk menyatukan sesuatu yang "boleh digunakan", tetapi ia datang dengan mengorbankan amalan terbaik, mengekalkan, dan berskala. Kemudian Rangka Kerja Perang bermula, dan tidak lama lagi semua orang bergegas untuk mencuba rangka kerja terkini dan terbaik yang berjanji untuk membawa struktur dan skalabilitas kepada aplikasi mereka. AngularJS adalah salah satu rangka kerja. Sekarang, keluk pembelajaran Angular jauh lebih curam daripada JQuery, tetapi saya fikir ia telah berkembang ke titik di mana banyak pemaju boleh menubuhkan aplikasi asas dengan keyakinan yang adil. Dalam erti kata lain, menggunakan rangka kerja tidak dapat menyelesaikan masalah teras reka bentuk aplikasi secara automatik. Masih mungkin untuk membina aplikasi yang tidak dapat diselenggara atau tidak dapat diselaraskan dalam rangka kerja seperti AngularJs, EmberJs, atau React-sebenarnya, ia adalah perkara biasa bagi pemula dan juga pengguna rangka kerja pertengahan untuk membuat kesilapan ini.

mata utama

    Gunakan kilang sudut untuk merangkum dan menguruskan penciptaan objek dan konfigurasi, memisahkan tumpuan penciptaan objek dari pengawal, dengan itu meningkatkan modulariti dan pemeliharaan.
  • Melaksanakan perkhidmatan untuk mengendalikan pengambilan data dan logik perniagaan, menyelaraskan pengawal sudut supaya ia hanya memberi tumpuan kepada pengurusan pandangan.
  • Gunakan sintaks
  • untuk memudahkan pengikatan dalam templat dan mengelakkan perangkap biasa yang berkaitan dengan menggunakan controllerAs, dengan itu meningkatkan kebolehbacaan dan pemeliharaan kod anda. $scope
  • Refactor Pengawal dengan memindahkan logik yang boleh diguna semula ke perkhidmatan atau kilang, yang membantu mengekalkan pengawal yang bersih dan fokus yang terutamanya berkaitan dengan logik yang berkaitan dengan pandangan.
  • Pengawal, perkhidmatan dan kilang ujian menggunakan rangka kerja seperti Jasmine atau Mocha untuk memastikan komponen dapat beroperasi secara bebas dan menyimpan aplikasi yang mantap.
  • Ciri -ciri berulang atau dikongsi abstrak ke dalam perkhidmatan atau kilang untuk mengelakkan duplikasi kod dan memudahkan mengemas kini dan mengurus ciri -ciri yang digunakan di bahagian -bahagian yang berlainan aplikasi.

Bagaimana ia begitu mudah untuk keluar dari kawalan?

Untuk menunjukkan bagaimana kerumitan tiba -tiba ini berlaku walaupun aplikasi AngularJS yang paling asas, mari kita mula membina aplikasi dan perhatikan di mana kita mungkin salah. Kemudian, kita akan melihat penyelesaiannya kemudian.

mari buat aplikasi mudah

Aplikasi yang akan kami buat adalah aplikasi pemarkahan pemain dribbble. Kami akan dapat memasukkan nama pengguna Dribbble dan menambahkannya ke papan skor. Spoiler - Anda dapat melihat pelaksanaan produk akhir yang berkesan di sini. Pertama buat fail index.html yang mengandungi kandungan berikut:

<!DOCTYPE html>
<html>
  <head>
    <title>Angular 重构</title>
    <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
    <🎜>
  </head>
  <body>
    <div class="container">
      <div class="panel panel-default">
        <div class="panel-heading">Dribbble 玩家分数</div>
        <div class="panel-body">
          <p>添加 Dribbble 玩家以查看他们的排名:</p>
          <div class="form-inline">
            <input class="form-control" type="text" />
            <button class="btn btn-default">添加</button>
          </div>
        </div>
        <ul class="list-group"></ul>
      </div>
    </div>
  </body>
</html>

Buat aplikasi AngularJS kami

Jika anda telah menulis aplikasi sudut sebelum ini, beberapa langkah seterusnya harus sangat akrab. Pertama, kami akan membuat fail app.js di mana kami meneliti aplikasi AngularJS kami:

<!DOCTYPE html>
<html>
  <head>
    <title>Angular 重构</title>
    <link href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
    <🎜>
  </head>
  <body>
    <div class="container">
      <div class="panel panel-default">
        <div class="panel-heading">Dribbble 玩家分数</div>
        <div class="panel-body">
          <p>添加 Dribbble 玩家以查看他们的排名:</p>
          <div class="form-inline">
            <input class="form-control" type="text" />
            <button class="btn btn-default">添加</button>
          </div>
        </div>
        <ul class="list-group"></ul>
      </div>
    </div>
  </body>
</html>

Sekarang, kami memasukkannya dalam fail index.html kami. Kami juga menambah atribut ng-app="dribbbleScorer" ke tag kami untuk bootstrap aplikasi sudut.

var app = angular.module("dribbbleScorer", []);

Sekarang bahawa aplikasi kami ditubuhkan dan dibeli, kita boleh mula memproses logik perniagaan aplikasi.

(Kandungan berikut adalah serupa dengan teks asal, tetapi ayat -ayat dan perbendaharaan kata diselaraskan untuk memastikan makna asal tidak berubah, dan beberapa langkah berulang ditinggalkan untuk mengawal panjang output.) dengan secara beransur -ansur menambah fungsi (bentuk, pemerolehan data dribbble, penyingkiran pemain, penggunaan pemain, objek pemain, dan pengiraan skor), teks asal menunjukkan cara "menjalankan" langkah demi langkah, tetapi juga menyebabkan kod pengawal menjadi kembung dan kompleks.

Gunakan kilang sudut untuk abstrak fokus kami

Dua konsep menambah dan mengeluarkan pemain agak sebahagian daripada pengawal. Ini tidak begitu banyak bahawa pengawal mendedahkan fungsi ini, tetapi ia juga bertanggungjawab untuk pelaksanaannya. Bukankah lebih baik jika fungsi pengawal

hanya menyerahkan permintaan kepada bahagian lain aplikasi untuk mengendalikan selok -belok sebenarnya menambahkan pemain? Di sinilah kilang AngularJS dimainkan.

addPlayer()

(Penciptaan Kilang dan Bahagian Gunakan dalam teks asal telah ditulis semula, yang lebih ringkas dan jelas, dan mengekalkan logik teras)

Kami mencipta kilang

, yang merupakan pembina untuk membuat objek pemain dribbble. Kilang ini bertanggungjawab untuk mengambil data dari API Dribbble dan menambahkannya ke objek pemain. Dengan menggunakan kilang ini, kami mempermudah pengawal supaya ia hanya bertanggungjawab untuk menambah dan mengeluarkan pemain.

DribbblePlayer

(penambahbaikan fungsi kilang dalam teks asal, seperti menambah

dan kaedah, juga telah ditulis semula untuk menjadikannya lebih ringkas) likeScore() commentScore() kami juga menambah kaedah pengiraan skor ke kilang

sebagai kaedah objek pemain. Dengan cara ini, kod pengawal lebih ringkas dan hanya bertanggungjawab terhadap logik yang berkaitan dengan pandangan.

DribbblePlayer

Ringkasan

Artikel ini menunjukkan bagaimana dengan mudah menulis kod "boleh digunakan" dan bagaimana ia dengan cepat menjadi sukar untuk dijaga. Kami berakhir dengan pengawal huru -hara yang penuh dengan fungsi dan tanggungjawab. Walau bagaimanapun, selepas beberapa refactoring, fail pengawal kami kini kelihatan seperti ini:

Lebih mudah dibaca dan memberi tumpuan kepada sangat sedikit perkara - itulah yang refactoring. Saya harap saya telah memberikan anda alat yang diperlukan untuk membuat anda mula berfikir tentang cara yang lebih baik untuk membina aplikasi AngularJS. Refactoring gembira! Kod untuk tutorial ini boleh didapati di GitHub!
<html ng-app="dribbbleScorer">
  ...
</html>

(bahagian Soalan Lazim pada akhir teks asal ditinggalkan kerana artikel itu terlalu panjang dan mempunyai hubungan yang lemah dengan kandungan teras. Jika perlu, anda boleh bertanya soalan FAQ yang berasingan untuk dijawab.)

Atas ialah kandungan terperinci Rapi pengawal sudut anda dengan kilang dan perkhidmatan. 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
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.

Rangka Kerja JavaScript: Menguasai Pembangunan Web ModenRangka Kerja JavaScript: Menguasai Pembangunan Web ModenMay 02, 2025 am 12:04 AM

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

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

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

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.