2011-02-01 34 views
5

Tôi đang phát triển một ứng dụng web và tôi đang sử dụng PHP và Javascript. Hôm nay, tôi bắt đầu vẽ tất cả các sơ đồ lớp thiết kế, nhưng tôi không biết chính xác cách kết hợp cả hai công nghệ.Trộn Javascript và PHP trong mẫu thiết kế của tôi

Tôi nghĩ rằng một cái gì đó như sau nên được tốt:

UML example diagram

Nhưng, thực sự, tôi không chắc chắn nếu gõ phần mở rộng .php trong tên lớp là đủ rõ ràng, hoặc những gì tôi cần là để tách sơ đồ thành hai: một cho các lớp Javascript và một sơ đồ khác cho các lớp PHP.

Tôi đang sử dụng CodeIgniter (mẫu MVC) và Javascript. Bất kỳ đề xuất nào cũng sẽ được đánh giá cao.

Cảm ơn!

+0

Nhận xét của bạn về mô hình của bạn (biểu đồ) hay về cách kết hợp chúng vào một ứng dụng? – gnur

+0

Tôi có một số lớp trong Javascript và các lớp khác trong PHP, vì vậy những gì tôi cần là làm thế nào tôi có thể kết hợp chúng trong một sơ đồ (vì một số khung nhìn PHP đang sử dụng mã JS của tôi). Cảm ơn! –

+0

Vì vậy, câu hỏi là làm thế nào bạn nên đại diện cho họ trong sơ đồ và không phải là các tập tin trên máy chủ? –

Trả lời

7

Thông thường, bạn không muốn làm điều này. Đó là vấn đề về độ trễ khi xem trang web trong trình duyệt. Mỗi tệp javascript riêng biệt sẽ đánh bại bộ nhớ đệm và yêu cầu thời gian chuyển bổ sung trước khi trang có thể tải. Đó là commonly advised để kết hợp các tệp JS ở bất kỳ nơi nào có thể và thiết thực để tận dụng tốt hơn bộ nhớ đệm của trình duyệt. Vì vậy, đề xuất đầu tiên của tôi là không tự ý chia JS của bạn vì lý do kiến ​​trúc ...

Bây giờ, với câu trả lời đó, bạn nghĩ nó phụ thuộc vào cách bạn xem JS. Nếu bạn đang nhìn vào nó tạo thành quan điểm cho rằng nó tăng cường ứng dụng PHP của bạn, sau đó chia nó ra dọc theo bên quan điểm của bạn không phải là xấu (đề xuất ở trên không chịu được).

Tuy nhiên, tôi thường thấy JS là một lớp ứng dụng riêng biệt trên đầu ứng dụng PHP. JS tương tác với lớp PHP thông qua các API được định nghĩa. Vì vậy, về cơ bản nó chỉ là một ứng dụng GUI đầy đủ thổi mà chỉ xảy ra khi sử dụng API được định nghĩa bởi ứng dụng PHP. Vì vậy, với ý nghĩ đó, tôi thường xây dựng ứng dụng JS với kiến ​​trúc riêng của nó phụ thuộc nhiều vào chính nó sau đó là ứng dụng PHP.Nói cách khác, chỉ vì một phần của ứng dụng JS tương tác với PHP không có nghĩa là đoạn mã thuộc về ứng dụng PHP.

Điều đó có hợp lý không?

+0

Tôi đồng ý với phần thứ hai của điều này, javascript là một phần của một giao diện nhất định, php của bạn là bộ điều khiển của bạn và một số lưu trữ là mô hình của bạn cho ứng dụng. – Chris

+0

@ Chris: Đó là một cách để xem nó. Có nhiều hơn một. Ví dụ, nếu bạn đang làm JS không phô trương nhưng vẫn muốn tương tác ajax, bạn không thể xây dựng nó như là lớp xem hoàn chỉnh vì bạn cần lớp xem trong PHP cho phần không phô trương. Vì vậy, đó là lý do tại sao các phương pháp khác nhau. Tôi thường thấy nó như là một ứng dụng hoàn toàn riêng biệt (và kiểm tra nó như vậy) có liên quan vì nó gọi API. Chỉ là những cách khác nhau để nhìn vào nó (và nó không sai khi có nhiều hơn 1) ... – ircmaxell

+0

Đó là một cái nhìn tinh tế hơn của riêng tôi nhưng dọc theo cùng một dòng. Tôi hoàn toàn đồng ý và thích quan điểm đó tốt hơn! Hỏi: Tôi có bao nhiêu trách nhiệm để bạn đặt trên js cho HTML thế hệ so với php phía máy chủ? (Chắc chắn câu trả lời này chủ quan nhưng tò mò từ kinh nghiệm của bạn.) – Chris

2

Tôi không biết cách bạn làm mọi thứ thường nhưng trong các dự án của tôi, tôi có xu hướng tách PHP và JS. Trước hết, dễ phát triển và gỡ lỗi nếu bạn đi theo cách đó, thứ hai, nếu bạn xử lý javascript dưới dạng lớp thứ hai thay vì ở cùng cấp độ lập trình như PHP, bạn sẽ nhận được dự phòng trong trường hợp JS của bạn không không hoạt động hoặc người dùng ứng dụng web của bạn đã tắt javascript.

Tôi có xu hướng làm mọi thứ hoạt động trong PHP và sau này tôi ghi đè một số hành động với javascript để làm cho chúng hoạt động thông qua ajax thay vì cách làm việc truyền thống trong Web trường cũ.

--- Sửa đổi theo nhận xét đầu tiên ---

Sau đó, bạn có thể muốn xử lý phần PHP và Javascript khi tách ứng dụng. Hệ thống đầu tiên (PHP) tạo ra trạng thái ban đầu. Khi hành động của người dùng hệ thống thứ hai (JS) tạo một truy vấn cho câu hỏi đầu tiên và chờ câu trả lời, theo cách này, bạn sẽ thiết lập một số loại API sẽ chuẩn hóa các giao dịch của bạn.

Tôi đã từng làm việc với các chuyên gia thông tin thiết kế và họ thường gọi Jesse James Garrett là một "Guru" trong lĩnh vực chuyên môn đó, bạn có thể muốn kiểm tra trang web của mình (có giấy nến premade for omnigraffle, visio và vài người khác)).

Thông qua bài viết và ví dụ của mình, bạn có thể tìm thấy các biểu tượng và yếu tố phù hợp để đại diện cho hệ thống của mình.

Jesse James Garrett's website

+0

Xin chào Jeff, cảm ơn câu trả lời của bạn. Toàn bộ dự án sử dụng cả hai công nghệ (rất nhiều Javascript, và sử dụng PHP để tải một số tài nguyên bên ngoài thông qua Ajax). Nếu người dùng đã tắt Javascript, trang web sẽ không hoạt động (nhưng đó không phải là quyết định của tôi, tôi chỉ là kỹ sư phần mềm). Vì vậy, bạn chia thành hai lớp thiết kế của bạn, nhưng làm thế nào về sơ đồ của bạn? Bạn có thể giải thích trong một vài từ làm thế nào bạn vẽ sơ đồ sử dụng JS và PHP với nhau? Cảm ơn một lần nữa! –

3

Cố gắng đặt tất cả các lớp của bạn (ngay cả trong một ứng dụng - bạn có hai: một ứng dụng PHP và một ứng dụng JS) trên một sơ đồ UML là khá nhiều cách để lãng phí rất nhiều thời gian và không đạt được gì.

Sử dụng UML để hiển thị các phụ thuộc trong một gói hoặc một nhóm các lớp làm việc cùng nhau, nhưng đừng cố gắng làm điều đó cho toàn bộ ứng dụng.