Pada halaman Memulai Polymer , kita melihat contoh Polymer dalam aksi:
<html>
<head>
<!-- 1. Shim missing platform features -->
<script src="polymer-all/platform/platform.js"></script>
<!-- 2. Load a component -->
<link rel="import" href="x-foo.html">
</head>
<body>
<!-- 3. Declare the component by its tag. -->
<x-foo></x-foo>
</body>
</html>
Apa yang akan Anda perhatikan <x-foo></x-foo>
sedang ditentukan oleh platform.js
dan x-foo.html
.
Sepertinya ini setara dengan modul direktif di AngularJS:
angular.module('xfoo', [])
.controller('X-Foo', ['$scope',function($scope) {
$scope.text = 'hey hey!';
})
.directive('x-foo', function() {
return {
restrict: 'EA',
replace: true,
controller: 'X-Foo',
templateUrl: '/views/x-foo.html',
link: function(scope, controller) {
}
};
});
Apa perbedaan keduanya?
Masalah apa yang dipecahkan Polymer yang AngularJS belum atau tidak mau?
Apakah ada rencana untuk mengikat Polymer dengan AngularJS di masa mendatang?
javascript
angularjs
polymer
Dan Kanze
sumber
sumber
Jawaban:
Anda bukan orang pertama yang mengajukan pertanyaan ini :) Izinkan saya mengklarifikasi beberapa hal sebelum membahas pertanyaan Anda.
Polimer
webcomponents.js
adalah pustaka yang berisi beberapa polyfill untuk berbagai W3C API yang termasuk dalam payung Komponen Web. Ini adalah:<template>
Nav kiri dalam dokumentasi ( polymer-project.org ) memiliki halaman untuk semua "teknologi Platform" ini. Masing-masing halaman juga memiliki pointer ke polyfill individu.
<link rel="import" href="x-foo.html">
adalah Impor HTML. Impor adalah alat yang berguna untuk memasukkan HTML ke HTML lain. Anda dapat memasukkan<script>
,,<link>
markup, atau apa pun dalam impor.Tidak ada "tautan"
<x-foo>
ke x-foo.html. Dalam contoh Anda, diasumsikan definisi Elemen Kustom<x-foo>
(misalnya<element name="x-foo">
) didefinisikan dalam x-foo.html. Ketika browser melihat definisi itu, itu terdaftar sebagai elemen baru.Ke pertanyaan!
Apa perbedaan antara Sudut dan Polimer?
Kami membahas beberapa hal ini di video T&J kami . Secara umum, Polymer adalah pustaka yang bertujuan untuk menggunakan (dan menunjukkan cara menggunakan) Komponen Web. Fondasinya adalah Elemen Khusus (mis. Segala sesuatu yang Anda buat adalah komponen web) dan itu berkembang seiring web berkembang. Untuk itu, kami hanya mendukung versi terbaru dari browser modern.
Saya akan menggunakan gambar ini untuk menggambarkan seluruh tumpukan arsitektur Polimer:
Lapisan RED: Kami mendapatkan web besok melalui serangkaian polyfill. Perlu diingat, pustaka tersebut hilang seiring waktu karena browser mengadopsi API baru.
Lapisan KUNING: Taburkan gula dengan polimer.js. Lapisan ini adalah pendapat kami tentang bagaimana menggunakan API yang ditentukan bersama-sama. Itu juga menambahkan hal-hal seperti pengikatan data, gula sintaksis, pengamat perubahan, properti yang dipublikasikan ... Kami pikir hal-hal ini berguna untuk membangun aplikasi berbasis komponen web.
GREEN: Perangkat komponen UI (lapisan hijau) yang komprehensif masih dalam proses. Ini akan menjadi komponen web yang menggunakan semua lapisan merah + kuning.
Arahan sudut vs Elemen Khusus?
Lihat jawaban Alex Russell . Pada dasarnya, Shadow DOM memungkinkan membuat bit HTML tetapi juga merupakan alat untuk merangkum HTML itu. Ini pada dasarnya adalah konsep baru di web dan sesuatu kerangka kerja lain akan memanfaatkan.
Masalah apa yang dipecahkan Polymer yang AngularJS belum atau tidak mau?
Kesamaan: templat deklaratif, pengikatan data.
Perbedaan: Angular memiliki API tingkat tinggi untuk layanan, filter, animasi, dll., Mendukung IE8, dan pada titik ini, merupakan kerangka kerja yang jauh lebih kuat untuk membangun aplikasi produksi. Polimer baru saja dimulai di alfa.
Apakah ada rencana untuk mengikat Polymer dengan AngularJS di masa mendatang?
Mereka proyek yang terpisah . Yang mengatakan, baik tim Angular dan Ember mengumumkan mereka akhirnya akan pindah menggunakan API platform yang mendasarinya dalam kerangka kerja mereka sendiri.
^ Ini adalah IMO kemenangan besar. Di dunia di mana pengembang web memiliki alat yang kuat (Shadow DOM, Custom Elements), pembuat kerangka juga dapat memanfaatkan primitif ini untuk membuat kerangka kerja yang lebih baik. Sebagian besar dari mereka saat ini melalui rintangan besar untuk "menyelesaikan pekerjaan".
MEMPERBARUI:
Ada artikel yang sangat bagus tentang topik ini: " Inilah perbedaan antara Polymer dan Angular "
sumber
Untuk pertanyaan Anda:
Dari akun twitter resmi AngularJS: "angularjs akan menggunakan polimer untuk widgetnya. Menang-menang"
sumber: https://twitter.com/angularjs/status/335417160438542337
sumber
Are there plans to tie Polymer in with AngularJS in the future?
Saya kira adalah ide yang bagus untuk mengutip posting asli dari tim AngularJS yang menurut Anda tidak benar. ?Dalam video ini 2 orang dari AngularJS berbicara tentang perbedaan dan persamaan tentang dua kerangka kerja ini (AngularJS 1.2 dan Beyond).
Tautan ini akan membawa Anda ke tanya jawab yang benar:
sumber
1 & 2) Komponen polimer dicakup karena pohon tersembunyi di dom bayangan. Itu berarti bahwa gaya dan perilaku mereka tidak bisa hilang. Sudut tidak dibatasi oleh arahan khusus yang Anda buat seperti komponen web polimer. Arahan sudut mungkin dapat bertentangan dengan sesuatu dalam lingkup global Anda. IMO manfaat yang akan Anda dapatkan dari polimer adalah apa yang saya jelaskan .. komponen modular yang memiliki cakupan css & JavaScript untuk komponen tertentu yang tidak dapat disentuh oleh apa pun. DOM yang tak tersentuh!
Arahan sudut dapat dibuat sehingga Anda dapat membuat anotasi elemen dengan beberapa fungsi. Dalam komponen web Polimer itu tidak terjadi. Jika Anda ingin menggabungkan fungsionalitas komponen, Anda memasukkan dua komponen ke komponen lain (atau membungkusnya dengan komponen lain) atau Anda dapat memperluas komponen yang ada. Ingat perbedaan utama masih adalah bahwa setiap komponen dicakup dalam komponen web polimer. Anda dapat berbagi file css & js di beberapa komponen atau Anda dapat mengikutinya.
3) Ya, Angular berencana untuk memasukkan polimer dalam versi 2+ menurut Rob Dodson dan Eric Bidelman
Sangat lucu bagaimana tidak ada orang di sini yang menyebutkan kata lingkup. Saya pikir itu adalah salah satu perbedaan utama.
Ada banyak perbedaan, tetapi mereka juga memiliki banyak kesamaan ketika datang untuk membuat lego modular seperti fungsi untuk aplikasi. Saya pikir aman untuk mengatakan bahwa Angular akan menjadi kerangka kerja aplikasi dan polimer suatu hari nanti bisa hidup dalam aplikasi yang sama di samping arahan dengan perbedaan utama adalah ruang lingkup tetapi polimer dapat menjadi pengganti banyak arahan Anda saat ini. Tetapi saya tidak melihat alasan mengapa Angular tidak dapat bekerja apa adanya dan memasukkan komponen polimer juga.
Membaca melalui jawaban lagi ketika saya menulis ini, saya perhatikan bahwa Eric Bidelman (ebidel) melakukan semacam sampul dalam jawabannya :
"Shadow DOM memungkinkan penulisan bit HTML tetapi juga merupakan alat untuk merangkum HTML itu."
Untuk memberi kredit di mana kredit seharusnya jatuh tempo, saya mendapat jawaban dari mendengarkan banyak wawancara dengan Rob Dodson dan Eric Bidelman . Tetapi saya merasa jawabannya tidak diucapkan untuk memberikan pertanyaan kepada orang ini pengertian yang dia inginkan. Dengan itu, saya pikir saya telah menyentuh jawaban yang dia cari, tetapi sama sekali tidak memiliki informasi lebih banyak tentang subjek daripada Rob Dodson dan Eric Bidelman
Berikut adalah sumber utama saya untuk informasi yang saya kumpulkan.
JavaScript Jabber - Polimer dengan Rob Dodson dan Eric Bidelman
Shop Talk Show - Komponen Web Dengan Rob Dodson
sumber
normalize.css
, itu tidak menormalkan di dalam dom bayangan? Jadi saya perlu secara terpisah menormalkan setiap komponen seperti itu, tanpa cara melakukannya sekali? Apakah itu hal yang baik?normalize.css
atau lembar berbasis tag lainnya), yang sekali lagi mudah dicapai tanpa Shadow DOM. Agaknya bukan isolasi yang sempurna tetapi masalah. bekerja di 95% kasus penggunaan, setidaknya yang bisa saya pikirkan." Komponen Web " adalah serangkaian standar baru yang diselimuti oleh HTML 5 yang dirancang untuk menyediakan blok bangunan yang dapat digunakan kembali untuk aplikasi web.
Browser berada di berbagai negara bagian menerapkan spesifikasi "Komponen Web", dan karena itu terlalu dini untuk menulis HTML menggunakan Komponen Web.
Namun sayang! Polimer untuk menyelamatkan! Polymer adalah pustaka yang menyediakan lapisan abstraksi untuk kode HTML Anda, yang memungkinkannya untuk menggunakan Web Components API seolah-olah sepenuhnya diimplementasikan di semua browser. Ini disebut pengisian-poli , dan tim Polimer mendistribusikan perpustakaan ini sebagai webcomponents.js . Ini dulu disebut platform.js btw.
Tapi Polymer lebih dari sekadar pustaka polyfill untuk komponen web ...
Semua elemen dapat disesuaikan dan diperluas. Ini digunakan sebagai blok bangunan untuk apa pun mulai dari widget sosial hingga animasi hingga klien API web.
Polimer lebih merupakan perpustakaan daripada kerangka kerja.
Polymer tidak memiliki dukungan untuk hal-hal seperti rute, ruang lingkup aplikasi, pengontrol, dll.
Meskipun ada beberapa tumpang tindih antara Polymer dan AngularJS, mereka tidak sama. Bahkan, tim AngularJS telah menyebutkan memanfaatkan perpustakaan Polymer dalam rilis mendatang.
Perhatikan juga bahwa Polymer masih dianggap "tepi pendarahan" saat AngularJS stabil.
Akan menarik untuk menyaksikan kedua proyek Google ini berkembang!
sumber
Saya pikir dari perspektif praktis, pada akhirnya fitur template dari arahan sudut, dan metodologi komponen web yang dimanfaatkan oleh polimer keduanya menyelesaikan tugas yang sama. Perbedaan utama seperti yang saya lihat adalah bahwa polimer memanfaatkan API web untuk memasukkan bit HTML, cara yang lebih tepat secara sintaksis, dan sederhana untuk mencapai apa yang dilakukan Angular secara programatis saat membuat template. Namun polimer seperti yang telah dinyatakan, kerangka kerja kecil untuk membangun templat deklaratif dan interaktif menggunakan komponen. Ini tersedia hanya untuk tujuan desain UI, dan hanya didukung di sebagian besar browser modern. AngularJS adalah kerangka kerja MVC lengkap yang dirancang untuk membuat aplikasi web deklaratif dengan menggunakan binding data, dependensi, dan arahan. Mereka adalah dua binatang yang sangat berbeda. Untuk pertanyaan anda, menurut saya pada titik ini Anda tidak akan mendapat manfaat besar dari menggunakan polimer lebih dari sudut, kecuali memiliki puluhan komponen yang dibangun sebelumnya, namun itu masih akan mengharuskan Anda untuk port yang ke arah sudut. Namun di masa depan, ketika API web menjadi lebih maju, komponen web akan sepenuhnya menghapus kebutuhan untuk secara sistematis menentukan dan membangun template karena browser akan dapat dengan mudah memasukkan mereka dalam cara yang mirip dengan cara menangani file javascript atau css.
sumber
MVVM (model-view, view-model) yang ditawarkan Angular bukan masalah yang ingin dipecahkan oleh Polymer. Sifat komposable & dapat digunakan kembali yang diberikan arahan Angular kepada Anda (tag khusus + kombinasi logika terkait) adalah perbandingan yang lebih waras ketika Anda mempertimbangkan membandingkan Angular dan Polimer. Angular adalah dan akan tetap menjadi kerangka kerja melayani tujuan yang lebih luas.
sumber
Untuk pengguna: Tidak banyak. Anda dapat membangun aplikasi yang luar biasa dengan keduanya.
Untuk pengembang: Mereka menggunakan sintaks yang berbeda sehingga kedua solusi memiliki kurva belajar yang cukup curam. Angular telah ada lebih lama dan memiliki komunitas BESAR sehingga Anda akan sulit sekali menemukan masalah yang belum diselesaikan.
Bagi seorang arsitek: Sangat berbeda. Angular adalah kerangka kerja aplikasi yang bertanggung jawab untuk semua aspek kehidupan Anda. Bahkan memiliki arahan terintegrasi secara vertikal jika Anda ingin fitur seperti komponen. Polimer di sisi lain lebih seperti pay-as-you-go. Anda ingin modal, tentu saja, Anda ingin widget interaktif, tidak masalah, Anda ingin penanganan rute, kita bisa melakukannya. Polimer juga lebih portabel karena Angular membutuhkan aplikasi Angular untuk menggunakan kembali arahan. Ide dengan Polymer menjadi lebih moduler dan akan bekerja di aplikasi lain, bahkan aplikasi Angular.
Polymer adalah pendekatan untuk menuju mengambil keuntungan dari standar komponen web baru. Jika fitur seperti elemen khusus, Shadow DOM, dan impor HTML didukung secara lokal, bodoh jika tidak memanfaatkannya. Saat ini sebagian besar fitur komponen web tidak didukung secara luas ( status saat ini ) sehingga Polymer bertindak sebagai shim atau jembatan. Agak seperti polyfill (sebenarnya ia menggunakan polyfill).
Kami telah menggunakan Angular dan Polymer bersama selama lebih dari setahun. Sebagian dari keputusan untuk melakukan ini didasarkan pada janji yang dibuat langsung oleh tim Polymer kepada kami bahwa interoperabilitas ada di sana. Kami telah menyerah pada ide itu. Kami sekarang bergerak menggunakan hanya Polymer.
Untuk mengulanginya lagi, kita mungkin tidak akan menggunakan Polymer sama sekali, alih-alih menunggu sampai matang. Yang sedang berkata Polymer memiliki kelebihan (beberapa cukup bagus) dan kontra (beberapa di antaranya cukup membuat frustrasi) tapi saya pikir itu adalah diskusi untuk utas lainnya.
sumber
Arahan Angularadalah pendekatan untuk membuat elemen khusus. Anda dapat menetapkan tag khusus baru dengan atribut khusus. Polimer juga bisa melakukan ini, tetapi ia akan melakukannya dengan cara yang menarik dan lebih sederhana. Polimer sebenarnya bukan kerangka kerja, itu hanya perpustakaan. Polymer memungkinkan Anda mempelajari teknologi komponen web asli yang dibuat oleh w3c, bahwa browser web akhirnya menerapkan komponen it.web adalah teknologi masa depan, tetapi polimer memungkinkan Anda menggunakan teknologi itu sekarang. Google Polymer adalah perpustakaan yang menyediakan gula dan polyfill sintaksis untuk membangun elemen dan aplikasi dengan komponen web. Ingat bahwa saya katakan polimer bukan kerangka kerja dan itu adalah perpustakaan. Tapi ketika Anda menggunakan Polimer, sebenarnya kerangka kerja Anda adalah DOM. posting ini adalah tentang angular js ver 1 dan polimer dan saya telah bekerja dengan keduanya adalah proyek saya dan saya pribadi lebih suka polimer daripada angularjs. Tetapi versi Angular 2 sangat berbeda dibandingkan dengan angularjs 1.direktif dalam angular 2 memiliki arti yang berbeda.
sumber
Arahan sudut secara konseptual mirip dengan Elemen Kustom tetapi diterapkan tanpa menggunakan API Komponen Web. Arahan sudut adalah cara untuk membangun elemen khusus, tetapi spesifikasi Polimer dan Komponen Web adalah cara berbasis standar untuk melakukannya.
elemen polimer:
Arahan sudut:
sumber