mata utama
controllerAs
, dengan itu meningkatkan kebolehbacaan dan pemeliharaan kod anda. $scope
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!