Pada permulaan projek front-end, antara muka yang indah biasanya direka dahulu. Anda dengan berhati -hati merancang dan menarik semua komponen UI dan pelbagai negeri dan kesannya. Walau bagaimanapun, perkara cenderung berubah semasa pembangunan. Permintaan baru dan kes penggunaan yang tidak diduga muncul satu demi satu. Perpustakaan komponen awal yang indah tidak meliputi semua keperluan ini, anda perlu terus menambah reka bentuk baru.
Jika anda mempunyai pakar reka bentuk di sekeliling anda pada masa ini, ia hebat, tetapi mereka sering beralih kepada projek lain, meninggalkan pemaju sahaja untuk menangani perubahan ini. Akibatnya, konsistensi reka bentuk mula menurun. Adalah sukar untuk mengesan komponen sedia ada di perpustakaan komponen, status dan penampilan mereka.
Untuk mengelakkan kekeliruan reka bentuk ini, biasanya lebih baik untuk membuat dokumen berasingan untuk semua komponen. Walaupun terdapat pelbagai alat yang tersedia untuk tujuan ini, artikel ini akan memberi tumpuan kepada buku cerita React, alat yang direka khusus untuk aplikasi React. Ia membolehkan anda dengan mudah melayari koleksi komponen dan fungsi mereka. Perpustakaan Komponen Native React adalah contoh aplikasi sedemikian.
mata utama
pereka atau pakar ux
pemaju
penguji akan memeriksa dengan teliti bahawa komponen dilaksanakan seperti yang diharapkan. Salah satu pekerjaan utama penguji adalah untuk memastikan komponen berfungsi dengan betul dalam setiap aspek. Walaupun ini tidak menghilangkan keperluan untuk ujian integrasi, ia biasanya lebih mudah daripada melakukannya sendiri dalam projek itu sendiri.
menerima kakitangan reka bentuk dan pelaksanaan. Pemilik produk perlu memastikan bahawa setiap bahagian projek adalah selaras dengan jangkaan dan gaya jenama konsisten.
anda mungkin menyedari bahawa apa yang semua orang yang terlibat adalah sama mempunyai satu lokasi dengan semua komponen. Mencari semua komponen dalam projek itu sendiri boleh menjadi sangat membosankan. Fikirkanlah, berapa lama masa yang diperlukan untuk mencari semua varian butang yang mungkin dalam projek (termasuk status mereka (dilumpuhkan, primer, menengah, dan lain -lain)? Oleh itu, mempunyai perpustakaan yang berasingan akan menjadi lebih mudah.
Jika saya telah meyakinkan anda, mari kita lihat bagaimana untuk menyediakan buku cerita dalam projek anda.
Untuk menubuhkan buku cerita React, anda memerlukan projek React. Sekiranya anda tidak mempunyai projek yang sesuai pada masa ini, anda boleh membuatnya dengan mudah dengan aplikasinya.
Untuk menghasilkan buku cerita, sila pasang GettoryBook secara global:
<code>npm i -g getstorybook</code>
kemudian menavigasi ke projek anda dan jalankan:
<code>getstorybook</code>
Perintah ini akan melaksanakan tiga operasi berikut:
untuk menjalankan buku cerita, laksanakan buku cerita NPM dan buka alamat yang dipaparkan ( https://www.php.cn/link/93e4d7106625e1b0f2eb8af065c83452 :
Fungsi
//src/stories/index.js import React from 'react'; import { storiesOf, action, linkTo } from '@kadira/storybook'; import Button from './Button'; import Welcome from './Welcome'; storiesOf('Welcome', module) .add('to Storybook', () => ( <Welcome showApp={linkTo('Button')}/> )); storiesOf('Button', module) .add('with text', () => <Button>Hello Button</Button>) .add('with some emoji', () => <Button>? ? ? ?</Button>);
Anda boleh memilih secara bebas di mana untuk meletakkan fail cerita: dalam folder cerita berasingan atau di sebelah komponen. Saya secara peribadi lebih suka yang terakhir kerana meletakkan cerita dengan komponen membantu memastikan mereka dapat diakses dan terkini.
Cerita dimuatkan dalam fail .storybook/config.js, yang mengandungi kod berikut:
<code>npm i -g getstorybook</code>
Secara lalai, ia memuatkan fail SRC/STEACE/INDEX.JS dan mengharapkan anda mengimport cerita anda di sana. Ini agak menyusahkan kerana ia memerlukan kita untuk mengimport setiap cerita baru yang kita buat. Kami boleh mengubah suai skrip ini untuk memuatkan semua cerita secara automatik menggunakan kaedah WebPack yang memerlukan.context. Untuk membezakan fail cerita dari seluruh kod, kita boleh konvensyen untuk menambah .stories.js lanjutan kepada mereka. Skrip yang diubah suai sepatutnya kelihatan seperti ini:
<code>getstorybook</code>
Jika anda menggunakan folder yang berbeza sebagai kod sumber, pastikan anda menunjuk ke lokasi yang betul. Buku cerita rerun untuk membuat perubahan berkuatkuasa. Buku cerita akan kosong kerana ia tidak lagi mengimport fail index.js, tetapi kami akan menyelesaikan masalah ini tidak lama lagi.
(kandungan berikut pada dasarnya konsisten dengan teks asal, dan membuat sedikit pelarasan untuk memastikan semantik tidak berubah, dan deskripsi separa dipermudahkan)
Sekarang bahawa kita mempunyai sedikit tweaked buku cerita untuk memenuhi keperluan kita, mari kita tulis cerita pertama kita. Tetapi pertama -tama kita perlu membuat komponen untuk ditunjukkan. Mari buat komponen nama mudah yang memaparkan nama dalam blok berwarna. Komponen ini akan mempunyai JavaScript dan CSS berikut.
//src/stories/index.js import React from 'react'; import { storiesOf, action, linkTo } from '@kadira/storybook'; import Button from './Button'; import Welcome from './Welcome'; storiesOf('Welcome', module) .add('to Storybook', () => ( <Welcome showApp={linkTo('Button')}/> )); storiesOf('Button', module) .add('with text', () => <Button>Hello Button</Button>) .add('with some emoji', () => <Button>? ? ? ?</Button>);
import { configure } from '@kadira/storybook'; function loadStories() { require('../src/stories'); } configure(loadStories, module);
Anda mungkin menyedari bahawa komponen mudah ini boleh mempunyai tiga negeri: lalai, diserlahkan, dan dilumpuhkan. Bukankah lebih baik untuk memvisualisasikan semua negeri ini? Mari tulis cerita untuk ini. Buat fail name.stories.js baru di sebelah komponen anda dan tambahkan yang berikut:
import { configure, addDecorator } from '@kadira/storybook'; import React from 'react'; configure(() => { const req = require.context('../src', true, /.stories\.js$/); req.keys().forEach(filename => req(filename)); }, module );
Buka buku cerita dan lihat komponen baru anda. Hasilnya harus seperti berikut:
(kandungan berikut juga diselaraskan dan diselaraskan untuk mengekalkan konsistensi semantik)
Lihat penyesuaian
import React from 'react'; import './Name.css'; const Name = (props) => ( <div className={`name ${props.type}`}> {props.name} </div> ); Name.propTypes = { type: React.PropTypes.oneOf(['highlight', 'disabled']), }; export default Name;
.name { display: inline-block; font-size: 1.4em; background: #4169e1; color: #fff; border-radius: 4px; padding: 4px 10px; } .highlight { background: #dc143c; } .disabled { background: #999; }
Jika anda sedang menjalankan projek di GitHub, anda boleh menerbitkan buku cerita anda dengan membinanya ke dalam folder Docs dan menolaknya ke repositori. GitHub boleh dikonfigurasikan untuk menyediakan laman web GitHub halaman anda dari sana. Jika anda tidak mahu menyimpan buku cerita yang dibina di repositori, anda juga boleh menggunakan penindasan buku cerita.
Buku cerita dikonfigurasikan untuk menyokong banyak ciri dalam cerita. Anda boleh menulisnya dalam sintaks ES2015 yang sama seperti Create-REACT-App, bagaimanapun, jika projek anda menggunakan konfigurasi Babel yang berbeza, ia secara automatik akan mengambil fail .babelrc anda secara automatik. Anda juga boleh mengimport fail dan imej JSON.
Jika anda fikir ini tidak mencukupi, anda boleh menambah konfigurasi webpack tambahan dengan membuat fail webpack.config.js dalam folder .storybook. Pilihan konfigurasi yang dieksport oleh fail ini akan digabungkan dengan konfigurasi lalai. Sebagai contoh, untuk menambah sokongan untuk SCSS untuk cerita anda, tambahkan kod berikut:
<code>npm i -g getstorybook</code>
Jangan lupa memasang sass-loader dan nod-sass.
Anda boleh menambah sebarang konfigurasi webpack yang diperlukan, bagaimanapun, anda tidak boleh mengatasi entri, output, dan loader Babel yang pertama.
Jika anda ingin menambah konfigurasi yang berbeza untuk persekitaran pembangunan dan pengeluaran, anda boleh mengeksport fungsi. Ia akan dipanggil menggunakan konfigurasi asas dan pembolehubah konfigurasi yang ditetapkan untuk "pembangunan" atau "pengeluaran".
Buku cerita itu sendiri sangat berguna, tetapi untuk menjadikannya lebih baik, ia mempunyai beberapa tambahan. Dalam artikel ini, kami hanya meliputi sebahagian daripada mereka, tetapi pastikan anda menyemak senarai rasmi kemudian.
(bahagian berikut diselaraskan dan pengenalan addon diselaraskan)
Buku cerita dilengkapi dengan dua add-on yang telah dikonfigurasikan: tindakan dan pautan. Anda tidak perlu membuat konfigurasi tambahan untuk menggunakannya.
Knobs: membolehkan anda menyesuaikan komponen dengan mengubahsuai sifat bertindak balas secara langsung dari UI semasa runtime. Kaedah Pemasangan: npm i --save-dev @storybook/addon-knobs
. Gunakan penghias .storybook/addons.js
untuk membungkus cerita. withKnobs
Info: membolehkan anda menambah lebih banyak maklumat mengenai cerita, seperti kod sumbernya, keterangan, dan proptypes React. Kaedah pemasangan: , kaedah pendaftaran: Gunakan npm i --save-dev @storybook/addon-info
dalam .storybook/preview.js
. addDecorator
Ujian automatik
Aspek penting dalam buku cerita (tidak diterangkan dalam artikel ini) adalah menggunakannya sebagai platform untuk menjalankan ujian automatik. Anda boleh melakukan pelbagai ujian, dari ujian unit ke ujian fungsional dan ujian regresi visual. Seperti yang dijangkakan, terdapat beberapa tambahan yang direka untuk meningkatkan fungsi buku cerita sebagai platform ujian. Kami tidak akan masuk ke dalam butiran kerana mereka berhak mendapat artikel yang berasingan, tetapi masih mahu menyebutnya.buku cerita sebagai perkhidmatan
Kadira juga menawarkan buku cerita sebagai perkhidmatan yang dipanggil Storybook Hub. Ia membolehkan anda menjadi tuan rumah buku cerita dan mengambil kerjasama ke peringkat seterusnya. Sebagai tambahan kepada ciri -ciri standard, ia mengintegrasikan dengan GitHub dan boleh menghasilkan buku cerita baru untuk setiap permintaan tarik anda. Anda juga boleh meninggalkan komen secara langsung dalam buku cerita untuk membincangkan perubahan dengan rakan sekerja anda.
Kesimpulan
Jika anda merasakan bahawa mengekalkan komponen UI dalam projek anda mula menjadi menyakitkan, ambil langkah mundur dan lihat apa yang anda hilang. Anda hanya memerlukan platform kerjasama yang mudah antara semua pihak yang terlibat. Dalam kes ini, untuk projek React anda, buku cerita adalah alat yang sesuai untuk anda.
Adakah anda sudah menggunakan buku cerita? Adakah anda merancang untuk mencubanya? Kenapa? Atau mengapa tidak? Saya suka mendengar anda dalam komen.
(bahagian Soalan Lazim diselaraskan dan struktur diselaraskan)
FAQ (FAQ)
.storybook/addons.js
, dan konfigurasikannya mengikut dokumentasi. Atas ialah kandungan terperinci Buku Cerita React: Membangunkan antara muka pengguna yang indah dengan mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!