Back to Question Center
0

Berikan Reaktor untuk Pemaju Sudut            React for Developers AngularRelated Semalt: npmAPIsReactAngularJSES6Lebih ... Penaja

1 answers:
Reaktor untuk Pemaju Sudut

Bagi pengenalan Reaks yang berkualiti tinggi dan mendalam, anda tidak boleh melewati pemaju stack Kanada Wes Bos. Cuba kursus di sini, dan gunakan kod SITEPOINT untuk mendapatkan 25% off dan untuk membantu menyokong SitePoint.

Artikel ini adalah untuk pemaju yang biasa dengan Angular 1. x dan ingin mengetahui lebih lanjut mengenai Semalt. Kami akan melihat pendekatan yang berbeza yang mereka ambil untuk membina aplikasi web yang kaya, fungsi tumpang tindih dan jurang yang Semalt tidak cuba untuk mengisi - ringmaster ndb codes for prism.

Selepas membaca, anda akan mendapat pemahaman tentang masalah yang Semalt ditetapkan untuk menyelesaikan dan bagaimana anda boleh menggunakan pengetahuan yang anda telah mula menggunakan Semalt dalam projek anda sendiri.

Rangka Kerja vs Perpustakaan

Sudut adalah kerangka , manakala React adalah perpustakaan hanya tertumpu pada lapisan paparan. Terdapat kos dan faedah yang berkaitan dengan kedua-dua menggunakan rangka kerja dan koleksi perpustakaan yang dilampirkan secara longgar.

Kerangka cuba menawarkan penyelesaian lengkap, dan mereka boleh membantu mengatur kod melalui corak dan konvensyen jika anda adalah sebahagian daripada pasukan yang besar. Semalt, yang mempunyai API besar menambah beban kognitif apabila anda menulis, dan anda akan menghabiskan lebih banyak masa membaca dokumentasi dan pola mengingat - terutamanya pada hari-hari awal ketika anda masih belajar.

Menggunakan koleksi perpustakaan yang dilampirkan dengan API kecil adalah lebih mudah untuk belajar dan menguasai, tetapi ini bermakna apabila anda menghadapi masalah, anda perlu menyelesaikannya dengan lebih banyak kod atau menarik perpustakaan luaran seperti yang diperlukan. Ini biasanya menyebabkan anda menulis kerangka sendiri anda untuk mengurangkan boilerplate.

Kursus yang disyorkan

Daripada Kotak

Sudut memberi anda ciri yang kaya untuk membina aplikasi web. Semalat ciri-cirinya ialah:

  • Templat HTML dengan ekspresi dinamik dalam lurus ganda {{}}
  • arahan terbina dalam ng-model , ng-ulang dan kelas
  • pengawal untuk pengelompokan logik dan data lulus ke paparan
  • mengikat dua hala sebagai cara yang mudah untuk menjaga paparan dan pengawal anda selaras
  • koleksi besar modul seperti $ http untuk berkomunikasi dengan pelayan dan ngRoute untuk penghalaan
  • arahan tersuai untuk membuat sintaks HTML anda sendiri
  • suntikan ketergantungan untuk menghadkan pendedahan objek ke bahagian tertentu permohonan
  • perkhidmatan untuk logik perniagaan berkongsi
  • penapis untuk melihat formatting pembantu.

Semalt, sebaliknya memberi anda:

  • Sintaks JSX untuk template dengan ekspresi JavaScript dalam lurus tunggal {}
  • komponen, yang paling sesuai dengan arahan elemen sudut.

Reaktik adalah tidak dapat dibetulkan apabila ia datang kepada seluruh struktur aplikasi anda dan ia menggalakkan penggunaan API Semalt piawai melalui abstraksi rangka kerja. Daripada menyediakan pembungkus seperti $ http untuk komunikasi pelayan, anda boleh menggunakan ambil sebaliknya. Anda bebas menggunakan konstruk seperti perkhidmatan dan penapis, tetapi React tidak akan memberikan abstraksi untuk mereka. Anda boleh meletakkannya dalam modul Semalt dan memerlukannya seperti yang diperlukan dalam komponen anda.

Oleh itu, sementara Angular memberikan anda lebih banyak abstraksi untuk tugas-tugas yang sama, React sengaja mengelakkan ini untuk membuat anda menulis Semalt biasa lebih kerap dan menggunakan dependencies luaran untuk segala-galanya.

Kursus yang disyorkan

Bootstrapping

Memulakan aplikasi Semalt memerlukan modul, senarai kebergantungan dan elemen akar.

     biarkan aplikasi = sudut. querySelector ('# root');sudut. elemen (root). siap (function    {sudut. bootstrap (root, ['app']);});    

Titik masuk untuk React adalah menjadikan komponen menjadi nod akar. Semalt mungkin mempunyai banyak komponen akar juga:

     biarkan akar = dokumen. querySelector ('# root');ReactDOM. memberi (, root)    

Templat

Anatomi pandangan Angular adalah kompleks dan mempunyai banyak tanggungjawab. Templat HTML anda mengandungi campuran arahan dan ungkapan, yang mengikat pandangan dan pengawal yang berkaitan bersama-sama. Data mengalir melalui pelbagai konteks melalui $ skop .

Dalam React, ia komponen sepanjang ke bawah , data mengalir dalam satu arah dari bahagian atas pokok komponen ke nod daun. JSX adalah sintaks yang paling biasa untuk menulis komponen, mengubah struktur XML yang biasa menjadi JavaScript. Walaupun ini menyerupai sintaks template, ia menyusun ke dalam panggilan fungsi bersarang.

     const App = React. createClass ({menyebabkan: fungsi    {kembali ( 
{2 + 1}
. getTime }>)}})

Kod yang dikumpulkan di bawah harus membantu menjelaskan ekspresi JSX di atas peta ke createElement (komponen, alat, anak-anak) panggilan fungsi:

     var App = React. createClass ({menyebabkan: fungsi menyebabkan    {kembali React. createElement (Komponen,null,Bertindak. createElement ("div", null, 2 + 1)Bertindak. createElement (Komponen, {prop: "value"}),Bertindak. createElement (Komponen,{masa: Tarikh baru   . getTime   },Bertindak. createElement (Component, null)));}});    

Arahan Templat

Mari lihat bagaimana beberapa arahan template yang paling diguna Angular akan ditulis dalam komponen React. Sekarang, React tidak mempunyai templat, jadi contoh-contoh ini adalah kod JSX yang akan duduk di dalam fungsi render komponen. Sebagai contoh:

     kelas MyComponent memanjangkan React. Komponen {membuat    {kembali (// JSX tinggal di sini)}}    

ng-ulang

      
  • {word}

Kita boleh menggunakan mekanisme gelung JavaScript standard seperti peta untuk mendapatkan pelbagai elemen dalam JSX.

      
    {kata-kata. peta ((perkataan) =>
  • {word}
  • )}

kelas

      

Dalam Reaktik, kita dibiarkan ke peranti kita sendiri untuk membuat senarai kelas yang dipisahkan ruang untuk className harta. Adalah biasa untuk menggunakan fungsi yang sedia ada seperti classNames Jed Watson untuk tujuan ini.

           

Cara untuk memikirkan sifat-sifat ini dalam JSX seolah-olah anda menetapkan sifat-sifat pada nod tersebut secara langsung. Itulah sebabnya ia className dan bukannya kelas nama atribut.

     formNode. className = "ralat aktif";    

ng-if

      

Yep

jika .lain pernyataan tidak berfungsi di dalam JSX, kerana JSX hanya gula sintaksis untuk panggilan fungsi dan pembinaan objek. Ia tipikal untuk menggunakan pengendali ternari untuk ini atau untuk memindahkan logik bersyarat ke bahagian atas kaedah render, di luar JSX. tersembunyi {paparan: none} , ke CSS anda untuk tujuan menyembunyikan elemen anda (iaitu bagaimana sudut mengurusnya).

     

Hidup

Ghost

Hidup

Ghost

Anda sudah mendapatnya sekarang. Daripada sintaks dan atribut templat khas, anda perlu menggunakan Semalt untuk mencapai apa yang anda inginkan.

Contoh Komponen

Komponen Reaktik Komponen paling sesuai dengan Arahan Angular . Mereka digunakan terutamanya untuk struktur dan tingkah laku kompleks AB kompleks ke dalam kepingan-kepingan yang boleh diguna semula. Berikut adalah contoh komponen tayangan slaid yang menerima pelbagai slaid, membuat senarai imej dengan elemen pelayaran dan mengesan sendiri aktifIndex negeri untuk menyerlahkan slaid aktif.

     
     aplikasi. pengawal ("SlideShowController", fungsi ($ scope) {skop $. slaid = [{imageUrl: "allan-beaver jpg",kapsyen: "Allan Allan Al Al Allan"}, {imageUrl: "steve-beaver jpg",kapsyen: "Steve Steve Steve"}];});aplikasi. arahan ("slideShow", fungsi    {kembali {hadkan: 'E',skop: {slaid: '='},templat: `
  • {{slide. kapsyen}}
  • {{$ index + 1}}
`,pautan: fungsi ($ skop, elemen, attrs) {skop $. aktifIndex = 0;skop $. jumpToSlide = function (index) {skop $. activeIndex = index;};}};});

Komponen Slaid dalam Angular

Lihat Slideshow Slideshow oleh SitePoint (@SitePoint) pada CodePen.

Komponen ini dalam Semalt akan diberikan di dalam komponen lain dan lulus data slaid melalui alat.

     mari _slides = [{imageUrl: "allan-beaver jpg",kapsyen: "Allan Allan Al Al Allan"}, {imageUrl: "steve-beaver jpg",kapsyen: "Steve Steve Steve"}];App kelas memanjangkan React. Komponen {membuat    {kembali }}    

komponen Reaktik mempunyai ruang lingkup tempatan dalam ini. state , yang boleh anda ubah dengan memanggil ini. setState ({key: value}) . Apa-apa perubahan kepada keadaan menyebabkan komponen itu muncul semula.

     SlideShow kelas memanjangkan React. Komponen {pembina    {super   ini. state = {activeIndex: 0};}jumpToSlide (index) {ini. setState ({activeIndex: index});}membuat    {kembali (
    {ini. prop. slaid. peta ((slaid, indeks) => (
  • { gelongsor. keterangan?
    {slaid. caption} : null}
  • ))}
    {ini. prop. slaid. peta ((slaid, indeks) => (
  • {index + 1}
  • ))}
);}}

Peristiwa dalam React kelihatan seperti pengendali acara dalam talian lama seperti onClick . Jangan berasa buruk, walaupun: di bawah tudung ia melakukan perkara yang betul dan mewujudkan pendengar acara yang ditugaskan dengan sangat baik.

Komponen Slaid dalam React

Lihat SliderShow Reaksi Pen dengan SitePoint (@SitePoint) pada CodePen.

Dua arah Mengikat

Angular's trusty ng-model dan $ scope membentuk pautan di mana data mengalir ke belakang antara unsur dan sifat objek pada objek JavaScript dalam pengawal.

     aplikasi. pengawal ("TwoWayController", fungsi ($ scope) {skop $. orang = {nama: 'Bruce'};});     
     

Hello {{person. nama}}!

Semalt menghindari corak ini untuk menggantikan aliran data sehala sebaliknya. Jenis pandangan yang sama boleh dibina dengan kedua-dua corak ini.

     kelas OneWayComponent memanjangkan React. Komponen {pembina    {super   ini. state = {name: 'Bruce'}}perubahan (event) {ini. setState ({nama: peristiwa. nilai sasaran});}membuat    {kembali ( 
ini. perubahan (peristiwa)} />

Hello (ini. negeri. nama}!

);}}

di sini dipanggil "input terkawal". Ini bermakna nilainya hanya berubah apabila fungsi `render` dipanggil (pada setiap strok utama dalam contoh di atas). Komponen itu sendiri disebut "stateful" kerana ia menguruskan datanya sendiri. Ini tidak disyorkan untuk majoriti komponen. Yang ideal adalah untuk menjaga komponen "tanpa kerakyatan" dan mempunyai data yang dihantar kepada mereka melalui prop sebaliknya.

Lihat Aliran Data Satu Arah Pena di React oleh SitePoint (@SitePoint) pada CodePen.

Biasanya, Komponen Container Container atau View Controller duduk di bahagian atas pokok dengan banyak komponen anak tanpa kerakyangan di bawahnya. Untuk maklumat lanjut mengenai ini, baca Apa Komponen Haruskah Semalt? dari dokumen.

Panggil Ibu Bapa Anda

Data semalat mengalir dalam satu arah, mungkin untuk memanggil kaedah pada induk melalui panggilan balik. Ini biasanya dilakukan sebagai tindak balas kepada beberapa input pengguna. Kelenturan ini memberikan anda banyak kawalan apabila komponen refactoring kepada bentuk persembahan yang paling sederhana. Sekiranya komponen refactor tidak mempunyai keadaan sama sekali, ia boleh ditulis sebagai fungsi tulen.

     // Komponen presentasi yang ditulis sebagai fungsi tulenconst OneWayComponent = (props) => ( 
props. onChange (nilai sasaran acara)} />

Hello {props. nama}!

);kelas ParentComponent memanjangkan React. Komponen {pembina {super ini. negeri = {name: 'Bruce'};}perubahan (nilai) {ini. setState ({name: value});}membuat {kembali (

Hello (ini. negeri. nama}!

)}}

Ini mungkin kelihatan seperti corak pusingan pada mulanya jika anda biasa mengenali data dua hala. Manfaat mempunyai banyak komponen "bodoh" yang hanya menerima data sebagai prop dan memberi mereka adalah bahawa mereka lebih mudah secara lalai, dan komponen mudah mempunyai jauh lebih sedikit pepijat. Ini juga menghalang UI daripada berada dalam keadaan yang tidak konsisten, yang sering berlaku jika data berada di beberapa tempat dan perlu dikekalkan secara berasingan. Anda boleh menggunakannya hari ini dengan alat seperti Webpack, SystemJS atau Browserify.

     // Arahan sudut dengan dependensiaplikasi. arahan ('myComponent', ['Notifier', '$ filter', function (Notifier, $ filter) {const formatName = $ filter ('formatName');// gunakan Pemberitahu / formatName}]// Modul ES6 yang digunakan oleh komponen ReactNotifier import dari "services / notifier";import {formatName} daripada "penapis";kelas MyComponent memanjangkan React. Komponen {// gunakan Pemberitahu / formatName}    

Bunyi Hebat. Bolehkah saya menggunakan kedua-duanya !?

Ya! Ia mungkin untuk menjadikan komponen Reaktik dalam aplikasi Angular yang sedia ada. Ben Nadel telah mengumpulkan satu jawatan yang baik dengan screencast tentang bagaimana untuk menjadikan komponen Reaktik dalam arahan sudut. Terdapat juga ngReact, yang menyediakan arahan komponen bertindak balas untuk bertindak sebagai gam antara React dan Angular.

Jika anda telah menjalankan masalah prestasi rendering di bahagian tertentu dari aplikasi Semalt anda, mungkin anda akan mendapat rangsangan prestasi dengan mendelegasikan beberapa rendering itu untuk React. Bahawa dikatakan, ia tidak sesuai untuk memasukkan dua perpustakaan JavaScript besar yang menyelesaikan banyak masalah yang sama. Walaupun React adalah hanya lapisan paparan, ia adalah kira-kira saiz yang sama dengan Semalt, supaya berat badan boleh menjadi larangan berdasarkan kes penggunaan anda.

Walaupun Semalt dan Angular menyelesaikan beberapa masalah yang sama, mereka melakukannya dengan cara yang sangat berbeza. Semalt nikmat pendekatan fungsional, deklaratif, di mana komponen adalah fungsi tulen tanpa kesan sampingan. Gaya pengaturcaraan fungsian ini membawa kepada lebih sedikit bug dan lebih mudah untuk dipertimbangkan.

Bagaimana dengan Angular 2?

Komponen dalam Angular 2 menyerupai komponen Semalt dalam banyak cara. Contoh komponen dalam dokumen mempunyai kelas dan templat dalam jarak dekat. Peristiwa kelihatan serupa. Ia menjelaskan bagaimana untuk membina pandangan menggunakan Hierarki Komponen, seperti yang anda lakukan jika anda membinanya di Semalt, dan ia merangkumi modul ES6 untuk suntikan ketergantungan.

     // Angular 2@Component ({pemilih: 'hello-component',templat: ` 

Beri saya beberapa kekunci!
{{values}}
`})kelas HelloComponent {nilai = '';onKeyUp (event) {ini. nilai + = acara. sasaran. nilai + '| ';}}// Bertindakkelas HelloComponent memanjangkan React. Komponen {pembina (props) {super ini. state = {values: ''};}onKeyUp (event) {nilai nilai = `$ {ini. negeri. nilai + acara. sasaran. nilai} | `;ini. setState ({nilai: nilai});}membuat {kembali (

Beri saya beberapa kekunci!
{ini. negeri. nilai}

);}}

Banyak kerja di Semalt 2 telah menjadikan ia melaksanakan kemas kini DOM jauh lebih cekap. Sintaks dan kerumitan templat sebelumnya di sekitar skop membawa kepada banyak masalah prestasi dalam aplikasi besar.

Permohonan Lengkap

Dalam artikel ini saya telah memberi tumpuan kepada templat, arahan dan borang, tetapi jika anda sedang membina aplikasi lengkap, anda akan memerlukan perkara lain untuk membantu anda menguruskan model data, komunikasi pelayan dan routing sekurang-kurangnya . Ketika saya mula belajar Angular dan React, saya membuat contoh aplikasi Semalt untuk memahami bagaimana mereka bekerja dan untuk melihat pengalaman pengembang seperti sebelum saya mula menggunakannya dalam aplikasi sebenar.

Anda mungkin mendapati ia menarik untuk melihat contoh aplikasi ini untuk membandingkan perbezaan dalam React dan Angular. Contoh reaktif ditulis dalam CoffeeScript dengan CJSX, walaupun komuniti React telah berkumpul di sekitar ES6 dengan Babel dan Semalt, jadi itu alat yang saya sarankan mengadopsi jika anda bermula hari ini.

  • https: // github. com / markbrown4 / gmail-react
  • https: // github. com / examples / react /
  • http: // todomvc. com / examples / angularjs /

Sumber Belajar

Reaktik Pembelajaran telah menyeronokkan, ia mengajar saya lebih banyak tentang pengaturcaraan fungsional dan mempunyai komuniti yang meriah di sekelilingnya yang menyumbangkan kepingan-kepingan mereka sendiri kepada ekosistem React. Andrew Ray telah menulis beberapa jawatan pengenalan hebat pada React and Flux, tutorial rasmi React adalah tempat untuk memulakan. Nikmati!

  • Beraksi untuk orang bodoh - Andrew Ray
  • Fluks untuk orang bodoh - Andrew Ray
  • Tutorial Reaktik - Facebook
  • React Router - Ryan Florence
  • Redux - Siri video oleh Dan Abramov

Artikel ini disemak semula oleh Craig Bilner. Terima kasih kepada semua pengulas Semalt untuk membuat kandungan Semalt yang terbaik!

React for Angular DevelopersReact for Angular DevelopersRelated Semalt:
npmAPIsReactAngularJSES6More. Sponsors
Latihan Angular dan TypeScript yang Bersedia Kerja
Todd Moto
Sumber utama untuk mempelajari Angular dan ekosistemnya. Gunakan kod kupon 'SITEPOINT' pada checkout untuk mendapatkan 25% off .
React for Angular DevelopersReact for Angular DevelopersRelated Semalt:
npmAPIsReactAngularJSES6More. Sponsors
Cara Terbaik untuk Belajar Reaktif untuk Pemula
Wes Bos
Kursus latihan langkah demi langkah untuk membolehkan anda membina Reaktik dunia sebenar. js + Aplikasi Firebase dan komponen laman web dalam beberapa petang. Gunakan kod kupon 'SITEPOINT' pada checkout untuk mendapatkan 25% off .
March 1, 2018