Liệu Reac.js có ý nghĩa đối với một trang web hướng nội dung tĩnh không?


14

Tôi được bán khá nhiều trên mô hình Reac.js vì nó giúp thao tác DOM trở nên trơn tru và dễ hiểu. Nhưng tôi tự hỏi làm thế nào nó có thể được tận dụng cho một trang web mà phần lớn là tĩnh với các khối văn bản và hình ảnh lớn không di chuyển. Nó sẽ chỉ cản trở? Có vẻ khó xử khi có các thành phần có KB văn bản ở trạng thái của chúng.


4
Bạn có một cái búa, và đang suy nghĩ xem vít này có thể được sử dụng như một cái đinh không. Thông thường, các quyết định liên quan đến công nghệ phải được đưa ra dọc theo đường dây Yêu cầu của chúng tôi là X, Y, Z. Những công nghệ nào sẽ cho phép chúng tôi đến đó với chi phí thấp nhất?, Tôi không có giải pháp, nhưng bạn có thể đưa ra giải pháp không cho tôi một vấn đề? Thực tế là bạn đã có kinh nghiệm với React đưa ra quyết định phần nào có lợi cho nó, nhưng những yêu cầu nào sẽ được thỏa mãn bởi nó? Nó sẽ thêm giá trị gì cho khách hàng hoặc người dùng?
14/2/2015

4
Vâng, đó là những gì tôi đang cố gắng xác định. Là React một cái búa hoặc một hộp công cụ? Nó chắc chắn vượt trội trong các loại trường hợp sử dụng mà Facebook có và tôi chưa thấy bất cứ điều gì cho thấy nó sẽ hút ở các trường hợp khác. Nó chắc chắn ít hấp dẫn hơn, nhưng điều đó không có nghĩa là nó không hoàn toàn tốt.
nhộn

1
Tôi thực sự có cùng một câu hỏi. Tôi yêu mọi thứ về các thành phần React nhưng đối với các trang web hướng nội dung chỉ với một vài dòng javascript thì dường như nó tập trung nhiều vào khớp nối HTML-JS và nhiều hơn về các trạng thái và sự kiện hơn là HTML-CSS sạch. Tôi thích thứ gì đó như các thành phần React trong một ngôn ngữ tạo khuôn mẫu khác.
JeroenVdb

Câu trả lời:


10

Biết những gì bạn muốn làm, sau đó chọn công nghệ.

Từ quan điểm đó, React.js dường như quá mức cần thiết cho một trang web chủ yếu là tĩnh.

Từ trang web của React:

Chúng tôi đã xây dựng React để giải quyết một vấn đề: xây dựng các ứng dụng lớn với dữ liệu thay đổi theo thời gian.

React là một cái búa cho một móng tay cụ thể. Điều đó sẽ chỉ ra rằng nó sẽ cản trở việc tạo ra một trang web tĩnh.


2

Tạo các trang tĩnh là việc sử dụng React được dự đoán trước, như được đề cập trong tài liệu cho React.renderToStaticMarkup

Tương tự như vậy renderToString, ngoại trừ việc này không tạo thêm các thuộc tính DOM như data-react-id, React sử dụng nội bộ. Điều này rất hữu ích nếu bạn muốn sử dụng React như một trình tạo trang tĩnh đơn giản, vì tước đi các thuộc tính bổ sung có thể tiết kiệm rất nhiều byte.

Một số đã được gọi là sử dụng phản ứng ở đây quá mức cần thiết. Tuy nhiên, khi tôi muốn một cái gì đó chết, tôi không có vấn đề gì với việc làm quá mức nó. Thực tế là phản ứng có thể làm nhiều hơn là không cần thiết cho trường hợp sử dụng này là không có lý lẽ chống lại phản ứng.

Tuy nhiên, vấn đề có thể phát sinh nếu bạn muốn thực hiện mã không đồng bộ. Hãy tưởng tượng như sau:

function SchoolClass({classId}) {
   const students = await query("SELECT name FROM student WHERE class = ?", classId);
   return <ul>
      {_.map(students, ({name}) => <li>{name}</li>}
   </ul>
}

Nhưng điều này sẽ không hoạt động, bởi vì hàm trả về một Promise, không phải là phần tử React và do đó không tương thích với React. Nếu bạn đang nghĩ ra một khung công cụ tạo trang tĩnh theo kiểu React, có lẽ bạn sẽ cho phép điều này. Tuy nhiên, vì React tập trung vào các ứng dụng khách webapp, nên điều đó không được phép.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.