mata teras
- AngularJS, rangka kerja JavaScript yang dibangunkan oleh Google, membolehkan pemaju membuat kod front-end tanpa perlu memanipulasi model objek dokumen (DOM). Ini boleh dicapai dengan menentukan pandangan dan pengawal dinamik menggunakan arahan dan mengikat data.
- AngularJS menggunakan struktur MVC (model-view-controller). Model ini ditakrifkan oleh modul sudut dan pengawal yang disambungkan ke HTML melalui arahan. Ini membolehkan pengikatan data dua hala, di mana perubahan dalam model secara automatik mengemas kini paparan dan sebaliknya.
- Dalam AngularJS, Arahan memperluaskan perbendaharaan kata HTML, menyediakan templat yang lebih dinamik dan berkuasa. Contohnya termasuk NG-Repeat untuk melelehkan set, NG-klik untuk pemprosesan acara, dan NG-show untuk rendering bersyarat.
- Walaupun AngularJS telah menerima beberapa kritikan untuk keluk pembelajaran dan penggunaan atribut HTML yang tidak standard, ia memberikan pendekatan yang unik untuk pembangunan web yang menggalakkan penciptaan aplikasi yang lebih komposis dan boleh diuji. Memisahkan kebimbangan reka bentuk dengan MVC mengurangkan jumlah kod yang diperlukan untuk menyambungkan komponen.
<table> <tr ng-repeat="row in board.grid"> <td ng-repeat="cell in row"> {{ cell.marker }} </td> </tr> </table>tunggu, apakah unsur -unsur pelik dan kurungan janggut? Mari ambil langkah mundur dan ambil langkah demi langkah.
<tr ng-repeat="row in board.grid">
angularjs command
adalah arahan ng-repeat
angularjs dan merupakan salah satu sambungan HTML yang disediakan. Ia membolehkan kami melangkah ke atas koleksi dan memberi instantiate templat untuk setiap projek. Dalam contoh ini, kami memberitahu AngularJS untuk mengulangi setiap baris dalam sifat objek board
. Katakan grid
adalah array dua dimensi, dan <tr>
adalah objek pada tetingkap. grid
<table> <tr ng-repeat="row in board.grid"> <td ng-repeat="cell in row"> {{ cell.marker }} </td> </tr> </table>
Kemudian, kita melelehkan sel -sel dalam baris menggunakan arahan <td>
sel yang sama. marker
Sekarang kita dapat memvisualisasikan keadaan lembaga, dan kami akan menyediakannya dengan sumber data dengan menentukan kandungan sebenar
. board
<tr ng-repeat="row in board.grid">Kami mula -mula menambah beberapa kod JavaScript untuk menentukan modul AngularJS untuk permohonan kami. Parameter pertama adalah nama aplikasi,
bermakna kita memerlukan modul "ng" AngularJS, yang menyediakan perkhidmatan teras angularjs. ['ng']
mengarahkan kami untuk menggunakan modul aplikasi kami. ng-app
<td ng-repeat="cell in row"> {{ cell.marker }} </td>
mvc - Tentukan pengawal dan pandangan
Ciri MVC AngularJS dimainkan di sini. Kami menambah beberapa kod JS untuk memanggil fungsi pengawal pada modul aplikasi kami yang baru dibuat, lulus nama pengawal dan fungsi yang melaksanakannya.
app = angular.module('ngOughts', ['ng'])Dalam kes ini, fungsi pengawal kami menerima parameter
, iaitu kebergantungan $scope
pengawal kami. AngularJS menggunakan Suntikan Ketergantungan untuk memberi kita objek perkhidmatan ini, menyimpulkan objek yang betul dari nama parameter fungsi (terdapat juga sintaks alternatif yang juga membolehkan pengorbanan).
ke templat HTML untuk menyambungkannya ke pengawal kami: ng-controller
<div ng-app='ngOughts'>Sama, ia semudah harta dengan nama pengawal. Perkara menarik berlaku di sini - Unsur -unsur yang bersarang di dalam tag badan kita kini boleh diakses dengan objek perkhidmatan
. Harta $scope
kami akan mencari pembolehubah ng-repeat
dalam skop BoardCtrl
, jadi mari kita tentukannya: board
app.controller "BoardCtrl", ($scope) ->kami membuat kemajuan sekarang. Kami menyuntik
ke dalam pengawal kami, memberi instantiate dan menjadikannya tersedia dalam skop Board
. BoardCtrl
yang mudah. Board
<tr ng-repeat="row in board.grid"> ...
Tambah kilang
kemudian kita boleh menentukan kilang
yang hanya mengembalikan kelas , yang membolehkannya disuntik ke dalam pengawal kami. Board
app.controller "BoardCtrl", ($scope, Board) -> $scope.board = new Boardboleh ditakrifkan secara langsung dalam fungsi kilang, dan juga meletakkan
pada objek tetingkap, tetapi menjaga ia bebas di sini membolehkan kita menguji Board
secara bebas dari sudut dan menggalakkan kebolehgunaan semula. Board
Jadi sekarang kita mempunyai papan catur kosong. Perkara menarik, bukan? Mari kita tetapkan supaya mengklik sel akan meletakkan tanda di sana.
<table> <tr ng-repeat="row in board.grid"> <td ng-repeat="cell in row"> {{ cell.marker }} </td> </tr> </table>
kami menambah arahan <td>
kepada setiap elemen ng-click
. Apabila kita mengklik sel meja, kita akan memanggil fungsi board
pada playCell
menggunakan objek sel yang diklik. Isi Board
pelaksanaan:
<tr ng-repeat="row in board.grid">
Pengikatan data bidirectional
Baiklah, jadi sekarang kita telah mengemas kini model papan, kita perlu mengemas kini paparan, bukan?
tidak! Pengikatan data AngularJS adalah Bidirectional -Ia memerhatikan perubahan dalam model dan menyebarkannya kembali kepada pandangan. Begitu juga, mengemas kini paparan akan mengemas kini model yang sepadan. Tag kami akan dikemas kini dalam grid dalaman Board
kami, dan kandungan <td>
akan diubah segera untuk mencerminkan ini.
Ini menghapuskan banyak kod boilerplate yang rapuh, yang bergantung kepada pemilih yang perlu anda tulis sebelum ini. Anda boleh memberi tumpuan kepada logik aplikasi dan tingkah laku dan bukannya saluran paip.
Ia akan menjadi lebih baik jika kita tahu seseorang akan menang. Mari melaksanakannya. Kami akan meninggalkan kod yang memeriksa kriteria yang menang di sini, tetapi ia wujud dalam kod akhir. Katakan apabila kita mencari pemenang, kita akan menetapkan atribut yang menang pada setiap sel yang membentuk pemenang.
maka kita boleh menukar <td>
kita kepada sesuatu seperti ini:
<td ng-repeat="cell in row"> {{ cell.marker }} </td>
app = angular.module('ngOughts', ['ng'])
Jika winning
benar, ng-class
akan memohon kelas CSS "menang" untuk <td>
, mari kita tetapkan latar belakang hijau yang menyenangkan untuk meraikan kemenangan kami. Anda mengatakan anda akan mempunyai permainan lain? Kami memerlukan butang Papan Reset:
<div ng-app='ngOughts'>
tambahkannya ke pengawal kami dan kami akan memanggil reset
apabila butang diklik. Penanda lembaga akan dibersihkan, semua kelas CSS akan dibersihkan, dan kami bersedia untuk memulakannya semula - tidak perlu kami mengemas kini elemen DOM.
marilah kita benar -benar memamerkan kemenangan kita:
app.controller "BoardCtrl", ($scope) ->Perintah
ng-show
membolehkan kami memaparkan elemen <h1></h1>
apabila permainan menang, dan pengikatan data membolehkan kami memasukkan tag pemenang. Mudah dan ekspresif.
Perlu diperhatikan bahawa kebanyakan kod kami berkaitan dengan kod JavaScript lama biasa. Ini disengajakan - tidak memanjangkan objek kerangka, hanya menulis dan memanggil kod JS. Pendekatan ini membantu membuat aplikasi yang lebih mudah untuk menggabungkan dan lebih mudah untuk diuji, yang merasakan ringan. Kebimbangan reka bentuk kami dipisahkan oleh MVC, tetapi kami tidak perlu menulis banyak kod untuk menyambungkannya bersama -sama.
Walau bagaimanapun, AngularJS bukan tanpa batasan. Ramai yang mengadu tentang dokumentasi rasmi dan lengkung pembelajaran yang agak curam, ada yang bimbang tentang SEO, dan yang lain hanya membenci menggunakan atribut dan unsur-unsur HTML yang tidak standard.
Walau bagaimanapun, terdapat penyelesaian kepada masalah ini, dan pendekatan unik AngularJS untuk pembangunan web pasti bernilai masa untuk diterokai. Anda boleh melihat kesan sebenar kod akhir pada Plunkr, atau memuat turunnya dari GitHub.
Komen dalam artikel ini telah ditutup. Ada soalan mengenai AngularJS? Mengapa tidak mengemukakan soalan di forum kami?
Soalan Lazim Mengenai Arahan AngularJS dan Data Mengikat
Apakah perbezaan antara arahan dan komponen AngularJS?
Arahan dan komponen AngularJS adalah ciri -ciri yang kuat dari kerangka AngularJS. Arahan membolehkan anda membuat elemen dan sifat HTML yang boleh diguna semula, sementara komponen adalah arahan khas yang menggunakan konfigurasi yang lebih mudah. Komponen sesuai untuk membina struktur aplikasi berasaskan komponen, yang lebih moden dan digunakan secara meluas dalam pembangunan front-end hari ini. Walau bagaimanapun, arahan lebih fleksibel dan boleh mengendalikan DOM secara langsung, yang komponen tidak boleh dilakukan.
Bagaimana data mengikat dalam angularjs berfungsi?
Pengikatan data dalam AngularJS adalah penyegerakan data automatik antara model dan komponen paparan. Angularjs melaksanakan data yang mengikat dengan cara yang membolehkan anda merawat model anda sebagai satu sumber fakta dalam aplikasi anda. Pandangan itu sentiasa menjadi unjuran model. Apabila model berubah, pandangan mencerminkan perubahan dan sebaliknya.
Bolehkah anda menerangkan perbezaan antara pengikatan data satu arah dan mengikat data dua hala?
Pengikatan data satu arah adalah aliran data mudah dari model ke pandangan atau dari pandangan ke model. Ini bermakna jika model keadaan berubah, pandangan tidak akan dikemas kini. Sebaliknya, pengikatan data bidirectional bermakna bahawa jika model keadaan berubah, paparan akan dikemas kini; Ini membolehkan kesan masa nyata, yang bermaksud perubahan (seperti input pengguna) akan segera ditunjukkan dalam keadaan model.
Bagaimana untuk membuat arahan tersuai di AngularJS?
Untuk membuat arahan tersuai di AngularJS, anda perlu menggunakan fungsi
. Anda boleh menamakan arahan anda dan kemudian membuat fungsi kilang yang akan menjimatkan semua pilihan arahan. Fungsi kilang disuntik menggunakan ketergantungan (jika ada), dan kemudian ia mengembalikan objek yang mentakrifkan pilihan arahan. .directive
Apakah skop pengasingan dalam arahan AngularJS?
Skop pengasingan dalam Arahan AngularJS membolehkan anda membuat skop baru untuk arahan. Ini bermakna apa -apa perubahan dalam skop arahan tidak akan menjejaskan skop induk dan sebaliknya. Ini sangat berguna apabila anda ingin membuat komponen yang boleh digunakan semula dan modular.
Bagaimana menggunakan transkripsi dalam arahan AngularJS?
Transkripsi adalah ciri dalam AngularJS yang membolehkan anda memasukkan kandungan tersuai ke dalam arahan. Dengan menetapkan pilihan
untuk transclude
dalam objek Definisi Arahan, anda boleh menggunakan arahan true
untuk memasukkan kandungan tersuai dalam templat arahan. ng-transclude
Apakah fungsi pautan dalam arahan AngularJS?
Fungsi pautan digunakan untuk arahan AngularJS untuk memanipulasi DOM atau menambah pendengar acara. Ia dilaksanakan selepas mengkloning templat. Fungsi ini biasanya digunakan untuk melaksanakan tugas seperti menetapkan pengendali acara DOM, memantau perubahan dalam sifat model, dan mengemas kini DOM.
Bagaimana menggunakan fungsi pengawal dalam arahan AngularJS?
Fungsi pengawal adalah pembina JavaScript yang digunakan untuk meningkatkan skop AngularJS. Apabila pengawal dilampirkan ke DOM melalui arahan ng-controller
, AngularJS meniru objek pengawal baru menggunakan pembina pengawal yang ditentukan. Subscope baru akan diwujudkan dan diberikan kepada pengawal sebagai parameter suntikan sebagai pembina $scope
.
Apakah perbezaan antara "@", "=", dan "&" dalam pilihan skop arahan?
Simbol -simbol ini digunakan untuk mengikat data ke skop arahan. "@" digunakan untuk mengikat rentetan, "=" digunakan untuk mengikat model bidirectional, dan "&" digunakan untuk mengikat kaedah. Mereka membolehkan anda mengasingkan skop, menjadikan arahan anda lebih modular dan boleh diguna semula.
Bagaimana untuk menguji arahan AngularJS saya?
AngularJS menyediakan modul yang dipanggil ngMock
yang membolehkan anda menyuntik dan mengejek perkhidmatan AngularJS dalam ujian unit. Anda boleh menggunakannya untuk menguji arahan anda. Anda juga boleh menggunakan rangka kerja ujian lain seperti Jasmine atau Mocha dengan ngMock
untuk menulis dan menjalankan ujian.
Atas ialah kandungan terperinci AngularJS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

Penangkapan dan gelembung acara adalah dua peringkat penyebaran acara di Dom. Tangkap adalah dari lapisan atas ke elemen sasaran, dan gelembung adalah dari elemen sasaran ke lapisan atas. 1. Penangkapan acara dilaksanakan dengan menetapkan parameter useCapture addeventlistener kepada benar; 2. Bubble acara adalah tingkah laku lalai, useCapture ditetapkan kepada palsu atau ditinggalkan; 3. Penyebaran acara boleh digunakan untuk mencegah penyebaran acara; 4. Acara menggelegak menyokong delegasi acara untuk meningkatkan kecekapan pemprosesan kandungan dinamik; 5. Penangkapan boleh digunakan untuk memintas peristiwa terlebih dahulu, seperti pemprosesan pembalakan atau ralat. Memahami kedua -dua fasa ini membantu mengawal masa dan bagaimana JavaScript bertindak balas terhadap operasi pengguna.

Perbezaan utama antara modul ES dan Commonjs adalah kaedah pemuatan dan senario penggunaan. 1.Commonjs dimuatkan secara serentak, sesuai untuk persekitaran sisi pelayan Node.js; 2. Modul tidak disengajakan, sesuai untuk persekitaran rangkaian seperti penyemak imbas; 3. Sintaks, modul ES menggunakan import/eksport dan mesti terletak di skop peringkat atas, manakala penggunaan CommonJS memerlukan/modul.exports, yang boleh dipanggil secara dinamik pada runtime; 4.Commonjs digunakan secara meluas dalam versi lama node.js dan perpustakaan yang bergantung kepadanya seperti Express, manakala modul ES sesuai untuk kerangka depan moden dan nod.jsv14; 5. Walaupun ia boleh dicampur, ia boleh menyebabkan masalah dengan mudah.

Mekanisme pengumpulan sampah JavaScript secara automatik menguruskan memori melalui algoritma pembersihan tag untuk mengurangkan risiko kebocoran ingatan. Enjin melintasi dan menandakan objek aktif dari objek akar, dan tidak bertanda dianggap sebagai sampah dan dibersihkan. Sebagai contoh, apabila objek tidak lagi dirujuk (seperti menetapkan pembolehubah kepada null), ia akan dikeluarkan dalam pusingan seterusnya kitar semula. Punca kebocoran memori yang biasa termasuk: ① Pemasa atau pendengar peristiwa yang tidak jelas; ② Rujukan kepada pembolehubah luaran dalam penutupan; ③ Pembolehubah global terus memegang sejumlah besar data. Enjin V8 mengoptimumkan kecekapan kitar semula melalui strategi seperti kitar semula generasi, penandaan tambahan, kitar semula selari/serentak, dan mengurangkan masa menyekat benang utama. Semasa pembangunan, rujukan global yang tidak perlu harus dielakkan dan persatuan objek harus dihiasi dengan segera untuk meningkatkan prestasi dan kestabilan.

Terdapat tiga cara biasa untuk memulakan permintaan HTTP dalam node.js: Gunakan modul terbina dalam, axios, dan nod-fetch. 1. Gunakan modul HTTP/HTTPS terbina dalam tanpa kebergantungan, yang sesuai untuk senario asas, tetapi memerlukan pemprosesan manual jahitan data dan pemantauan ralat, seperti menggunakan https.get () untuk mendapatkan data atau menghantar permintaan pos melalui .write (); 2.AXIOS adalah perpustakaan pihak ketiga berdasarkan janji. Ia mempunyai sintaks ringkas dan fungsi yang kuat, menyokong async/menunggu, penukaran JSON automatik, pemintas, dan lain -lain. Adalah disyorkan untuk memudahkan operasi permintaan tak segerak; 3.Node-Fetch menyediakan gaya yang serupa dengan pengambilan penyemak imbas, berdasarkan janji dan sintaks mudah

Perbezaan antara VAR, LET dan Const adalah skop, promosi dan pengisytiharan berulang. 1.VAR adalah skop fungsi, dengan promosi yang berubah -ubah, yang membolehkan pengisytiharan berulang; 2.Let adalah skop peringkat blok, dengan zon mati sementara, dan pengisytiharan berulang tidak dibenarkan; 3.const juga skop peringkat blok, dan mesti diberikan dengan segera, dan tidak boleh ditugaskan semula, tetapi nilai dalaman jenis rujukan boleh diubah suai. Gunakan const terlebih dahulu, gunakan biarkan apabila menukar pembolehubah, dan elakkan menggunakan var.

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

Dom Traversal adalah asas operasi elemen laman web. Kaedah umum termasuk: 1. Gunakan ParentNode untuk mendapatkan nod induk, dan boleh dirantai untuk menemuinya ke atas; 2. Kanak -kanak mengembalikan koleksi elemen kanak -kanak, mengakses unsur -unsur kanak -kanak pertama atau akhir melalui indeks; 3. NextElementsibling memperoleh elemen adik seterusnya, dan menggabungkan sebelum ini untuk merealisasikan navigasi peringkat yang sama. Aplikasi praktikal seperti struktur pengubahsuaian dinamik, kesan interaktif, dan lain -lain, seperti mengklik butang untuk menyerlahkan nod abang seterusnya. Selepas menguasai kaedah ini, operasi kompleks dapat dicapai melalui gabungan.
