Rapi pengawal sudut anda dengan kilang dan perkhidmatan
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 <html>
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()
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
dan kaedah, juga telah ditulis semula untuk menjadikannya lebih ringkas) likeScore()
commentScore()
kami juga menambah kaedah pengiraan skor ke kilang
DribbblePlayer
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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 ...

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.

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.

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 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 ...

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/) ... ...

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.

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. � ...
