Rumah > hujung hadapan web > tutorial js > Rapi pengawal sudut anda dengan kilang dan perkhidmatan

Rapi pengawal sudut anda dengan kilang dan perkhidmatan

Jennifer Aniston
Lepaskan: 2025-02-21 12:28:10
asal
435 orang telah melayarinya

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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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", []);
Salin selepas log masuk

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>
Salin selepas log masuk

(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 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan