Sự khác biệt giữa Bootstrap và React

Một trong những khái niệm cốt lõi trong React là tạo các thành phần tùy chỉnh và sử dụng lại chúng. Có một số thư viện thành phần React cung cấp cho bạn các thành phần vượt trội, chẳng hạn như Material UI nổi tiếng, Semantic UI React, Gestalt, v.v.

Như đã nói, trong một số trường hợp, các nhà phát triển React vẫn thích sử dụng JSX đơn giản kết hợp với CSS hơn khi sử dụng các thư viện thành phần React đã chuẩn bị sẵn đó

Bài viết này sẽ so sánh thư viện React-Bootstrap, cung cấp cho bạn các thành phần React sẵn sàng đó (với thiết kế CSS của Bootstrap) và Bootstrap - thư viện CSS nổi tiếng nhất cho phép bạn sử dụng JSX và CSS đơn giản trong các dự án React của mình và cho phép bạn . Sẳn sàng?


Bootstrap

Thư viện Bootstrap được nhóm Twitter phát hành vào năm 2011 và kể từ đó nó đã trở nên phổ biến và trở thành một trong những thư viện CSS nổi tiếng nhất với khoảng 2. 5 triệu (. ) lượt tải xuống hàng tuần

Điều đáng chú ý là mặc dù Bootstrap chính thức là một thư viện CSS, nhưng nó vẫn phụ thuộc rất nhiều vào JavaScript (với jquery). Thực tế này có ý nghĩa về cách Bootstrap di chuyển với React, chúng ta sẽ xem tất cả về nó sau

Phiên bản mới nhất của Bootstrap là 5. 00 và thư viện được duy trì bởi một số lượng lớn người đóng góp - 1200

React-Bootstrap

React Bootstrap được phát hành vào tháng 11 năm 2019 và kể từ đó đã trở nên phổ biến trong cộng đồng React. Nó có khoảng 900 nghìn lượt tải xuống mỗi tuần. Thực ra, nếu bạn tính đến việc để sử dụng React-Bootstrap, bạn cũng phải cài đặt Bootstrap (React-Bootstrap vẫn sử dụng CSS từ gói Bootstrap gốc) thì React-Bootstrap không còn quá xa vời với Bootsrap hàng tuần.

React-Bootstrap triển khai phiên bản thứ 4 của Bootstrap

React là tất cả về DOM ảo

Vấn đề chính mà React-Bootstrap đã giải quyết là việc tích hợp JavaScript của Bootstraps với React. Bootstrap sử dụng jquery để triển khai hoạt ảnh và các thay đổi khác đối với DOM và React, giả sử, không thích điều đó

Câu chuyện dài - React chủ yếu sử dụng DOM ảo để thao tác với DOM thực. Điều đó có nghĩa là mọi thay đổi đối với DOM trước tiên phải được ghi lại trong DOM ảo. ngược lại, jquery thao tác trực tiếp với DOM (hay còn gọi là đối tượng $ trong jquery). Vấn đề phát sinh với điều đó là sau khi jquery thao túng DOM, React thực sự sẽ không biết gì về sự thay đổi đó (vì như đã nói, React theo dõi các thay đổi với DOM ảo) và điều đó có thể dẫn đến nhiều lỗi và hành vi không mong muốn

Ngắn là tốt hơn

Một ưu điểm khác với React-Bootstrap là bạn có thể triển khai cùng một thành phần với cú pháp ngắn hơn. Lấy đoạn mã sau làm ví dụ. Xin lưu ý rằng chúng tôi đã thay đổi thuộc tính class thành className như dự kiến ​​sẽ có trong ứng dụng React

import React from 'react';


const ReactWithBootstrap = () => {
  return (
    
                          Email                    
                   Password                                           Address                                Address 2                                           City                                        State                        Choose...                                                     Zip                                                                              Check me out                                           Sign in               ); }; export default ReactWithBootstrap;

Bạn cũng có thể nhận thấy rằng chúng tôi phải thêm thẻ tự đóng (/) vào tất cả các thẻ đầu vào. Điều này là do trong JSX tất cả các thẻ phải có thẻ đóng hoặc tự đóng. Bây giờ hãy xem chính xác thành phần đó trông như thế nào trong React-Bootstrap

import React from 'react';
import { Form, Col, Button } from 'react-bootstrap';


const ReactWithReactBootstrap = () => {
  return (
    
                          Email                                        Password                                           Address                                Address 2                                           City                                        State                                                                             Zip                                                                  Submit               ); }; export default ReactWithReactBootstrap;

Bây giờ điều đó được cho là tốt hơn nhiều so với "div-hell" mà chúng ta có trước đây phải không?

Một điều thú vị khác cần xem xét là chúng tôi hoàn toàn không sử dụng thuộc tính className (mặc dù chúng tôi có thể sử dụng nó nếu chúng tôi muốn chuyển các kiểu của riêng mình). Thay vào đó, React-Bootstrap sử dụng cú pháp khác. Vì vậy, ví dụ nếu chúng ta muốn tạo một hàng linh hoạt có 2 cột trong Bootstrap thì nó sẽ trông như thế này

  
      
        Email
        
      
      
        Password
        
      
   
 


và trong React-Bootstrap nó sẽ như thế này

 
        
          Email
          
        


        
          Password
          
        
     
 

Một lần nữa, đây là một cú pháp "sạch hơn" và nó dễ đọc hơn nhiều. Bạn chắc chắn có thể thấy vị trí hàng bắt đầu và vị trí kết thúc (nhờ các thẻ đóng). Tuy nhiên, nếu bạn chuyển từ thế giới CSS sang lĩnh vực React, bạn có thể cân nhắc ở lại với Bootstrap thuần túy, nếu lý do duy nhất là cú pháp, bởi vì điều này cũng có nghĩa là bạn sẽ phải học một API hoàn toàn mới

Cho nên. React-Bootstrap > Bootstrap?

Trên thực tế, có một số lý do để gắn bó với Bootstrap và không triển khai React-Bootstrap ở mọi nơi

Trước hết, như đã đề cập ở đầu bài viết này, phiên bản mới nhất của Bootstrap là 5 và hãy đoán xem? . phụ thuộc jquery đã được loại bỏ hoàn toàn. Thay vào đó, Bootstrap hiện sử dụng vanilla JavaScript và điều đó thật tuyệt vời đối với các nhà phát triển React vì tất cả các tác động với DOM ảo hiện đã được khắc phục. Bây giờ chúng ta có thể sử dụng tất cả các tính năng mới nhất của Bootstrap trong ứng dụng React mà không phải lo lắng về DOM ảo của Reacts. Với React-Bootstrap, chúng tôi sẽ không thể sử dụng các tính năng mới nhất của BootStrap 5 vì như đã nói, React-Bootstrap chỉ triển khai phiên bản thứ 4 của Bootstrap

Một lý do khác để gắn bó với Bootstrap là tính linh hoạt của dự án của bạn. Nếu bạn muốn thay thế toàn bộ giao diện người dùng của mình bằng giả sử - Vue (mặc dù tôi thực sự không thấy bất kỳ lý do nào để làm điều đó), sẽ đơn giản hơn nhiều nếu bạn sử dụng Bootstrap đơn giản

Cuối cùng, có một vấn đề khác với các thành phần tùy chỉnh của React. Nó không nói riêng về React-Bootstrap, nhưng nó liên quan đến tất cả các thành phần tùy chỉnh của React. Vấn đề là về trường 'ref' của các thành phần tùy chỉnh. Trường ref trong một thành phần tùy chỉnh sẽ đề cập đến chính thành phần đó chứ không phải các khối xây dựng của nó

Hãy xem xét đoạn mã sau

import React from 'react';


const MyCustomInput = () => {
  return ;
};


;

Chúng tôi đã tạo một thành phần đầu vào tùy chỉnh. Bây giờ, giả sử chúng ta muốn lấy một tham chiếu đến giá trị hiện tại của phần tử đầu vào đó. Nếu chúng tôi cố gắng đặt tham chiếu trên chính thành phần đó, nó sẽ thất bại và chúng tôi sẽ không thể nhận được giá trị hiện tại với. tài sản hiện tại. để khắc phục chúng ta phải sử dụng React. chuyển tiếpRef như thế này

import React from 'react';


const MyCustomInput = React.forwardRef((props, ref) => {
  ;
});


const ref = React.createRef();
;

Chà, và trong React-Bootstrap, chúng tôi sẽ không thể làm được. Nếu đó là thư viện của riêng chúng tôi, chúng tôi có thể triển khai nó, nhưng đó là thư viện công cộng và chúng tôi không thể thực hiện bất kỳ thay đổi nào đối với nó. Thực sự có một giải pháp (hãy gọi ReactDOM. findDOMNode(ref) để lấy nút DOM) nhưng đối với các ứng dụng lớn, việc áp dụng nó sẽ rất cồng kềnh. Hơn nữa, findDomeNode không được dùng trong StrictMode, vì vậy bạn không thực sự muốn sử dụng nó

Tóm lược

Bạn nên sử dụng Bootstrap nếu

-Bạn đã có nhiều kinh nghiệm với thư viện Bootstrap và không muốn học một API mới

-Bạn quan tâm đến tính linh hoạt của ứng dụng và muốn dành tùy chọn thay đổi khung của mình trong tính năng

Tôi có nên sử dụng Bootstrap với React không?

Bạn nên sử dụng React-Bootstrap nếu. - Bạn quan tâm đến cú pháp rõ ràng và dễ đọc của các thành phần . -Bạn muốn sử dụng phiên bản thứ 4 của Bootstrap với tất cả các tính năng JavaScript của nó. -Bạn chưa quen với thế giới phát triển web và không quan tâm đến việc học một API mới.

Tôi có thể sử dụng React thay vì Bootstrap không?

Phản ứng. js có sẵn mô-đun bootstrap i. e. Reac-bootstrap có thể được nhập để sử dụng bootstrap trong HTML. Người ta cũng có thể liên kết với CDN hoặc nhập các tệp của nó để sử dụng các lớp bootstrap.

Tôi nên học Bootstrap hay React trước?

Chọn Bootstrap nếu – Bạn có kiến ​​thức cơ bản về HTML, CSS và JS và muốn tìm hiểu một khung công tác mới . Bạn đang tìm kiếm một framework với các cơ hội tích hợp và tùy chỉnh dễ dàng.