Quy trình công việc có thể cộng hưởng để thiết kế ứng dụng web là gì?


9

Đã được một thời gian kể từ khi tôi thực hiện bất kỳ sự phát triển web đáng kể nào và tôi muốn tận dụng các thực tiễn mới nhất nhưng tôi đang cố gắng hình dung quy trình làm việc để kết hợp mọi thứ.

Đây là những gì tôi đang tìm cách sử dụng:

  • Khung CakePHP
  • jsmin (Giảm thiểu JavaScript)
  • SASS (Kiểu dáng đồng bộ tuyệt vời)
  • Git

CakePHP:

Khá tự giải thích, thực hiện sửa đổi và cập nhật nguồn.

jsmin:

Khi bạn sửa đổi tập lệnh, bạn có chạy thủ công jsmin để xuất mã được rút gọn mới hay không, tốt hơn là chạy một hook pre-commit tự động tạo đầu ra jsmin của các tệp javascript đã thay đổi. Giả sử rằng tôi không có kiến ​​thức về việc thực hiện hook hook.

SASS:

Tôi thực sự thích những gì SASS cung cấp nhưng tôi cũng biết rằng mã SASS không được trình duyệt hỗ trợ theo mặc định, vì vậy, tại một số điểm, mã SASS cần được chuyển đổi sang CSS bình thường. Tại điểm nào trong quy trình làm việc này được thực hiện.

Git

Tôi sợ phải thừa nhận điều đó, nhưng lần trước khi tôi thực hiện bất kỳ sự phát triển web đáng kể nào, tôi đã không sử dụng kiểm soát nguồn SCM (IE, tôi đã sử dụng kiểm soát nguồn nhưng nó bao gồm một nhật ký thay đổi rất chi tiết với các bản sao lưu).

Tôi đã có nhiều kinh nghiệm sử dụng Git (cũng như đồng bóng và SVN) để phát triển máy tính để bàn nhưng tôi tự hỏi làm thế nào để triển khai tốt nhất cho phát triển web).

Có phải thông thường là triển khai kho lưu trữ từ xa trên máy chủ web để tôi có thể đẩy các thay đổi trực tiếp đến máy chủ sản xuất hoặc có một số công cụ đa nền tảng (windows / linux) giúp dễ dàng tải lên các tệp đã thay đổi vào máy chủ sản xuất . Có công ty lưu trữ web nào giúp dễ dàng triển khai kho lưu trữ từ xa không, tôi có cần truy cập SSH không, v.v ...

Tôi biết cách thực hiện việc này trên máy chủ thử nghiệm của riêng mình với một kho lưu trữ từ xa với một nhánh theo dõi từ xa riêng biệt nhưng tôi chưa bao giờ thực hiện nó trên một máy chủ lưu trữ web sản xuất từ ​​xa trước đó vì vậy tôi chưa biết các tùy chọn này.

Thêm:

Tôi đã xem xét triển khai khung javascript trong đó các tệp javascript riêng được sử dụng trên một trang được biên dịch thành một tệp duy nhất cho mỗi trang trên máy chủ sản xuất để giới hạn số lần tải xuống tệp cần thiết trên mỗi trang.

Có một cái gì đó như thế này đã tồn tại? Đã có một dự án nguồn mở ngoài tự nhiên thực hiện một cái gì đó tương tự mà tôi có thể sử dụng và đóng góp?

Xem xét các nhà phát triển web hoang tưởng về hiệu suất như thế nào (và thực tế là số lượng yêu cầu tệp trên một trang web là một tác động lớn đến hiệu suất) Tôi đoán rằng có một số hacker thuật sĩ trên mạng đã giải quyết vấn đề này.

Câu trả lời:


2

Bạn có thể kiểm tra tiện ích mở rộng PageSpeed ​​của Google cho Apache : afaik, có một tùy chọn để tự động tổng hợp và thu nhỏ Javascript và CSS và kết hợp với bộ đệm, điều này sẽ phù hợp với những gì bạn đề cập đến ở cuối bài đăng của mình.


1
Thật tuyệt, tôi đã không nhận ra rằng tất cả những điều này có thể được thực hiện với một mô-đun Apache. Thu nhỏ Javascript / css, ghép javascript / css, cũng như một loạt các cải tiến hiệu suất tùy chọn khác. Sau một số Google, tôi thậm chí còn phát hiện ra rằng Dreamhost cung cấp dịch vụ lưu trữ chia sẻ / VPN của họ. Tôi ngạc nhiên không có thêm thông tin về nó trên webmasters.stackexchange.com hoặc stackoverflow.com.
Evan Plaice

5

jsmin

Nếu bạn không có một tấn JS, bạn có thể thiết lập một cái gì đó để thu nhỏ mỗi khi bạn nhấn lưu. Nếu bạn có nhiều JS, hãy biến nó thành một phần của quy trình triển khai của bạn (xem Git bên dưới).

SASS

Sử dụng Khung La bàn . Nó bao gồm SASS, cộng với một tập lệnh nhỏ "xem" thư mục SASS của bạn và biên dịch các tệp thành CSS (bao gồm cả CSS được rút gọn, nếu bạn muốn) mỗi khi bạn lưu. Nó được xây dựng với RoR trong tâm trí, nhưng bạn có thể dễ dàng sử dụng nó với bất kỳ khung web nào bằng cách tạo tệp cấu hình La bàn và chạy lệnh "đồng hồ la bàn". La bàn cũng bao gồm rất nhiều công cụ tiện dụng khác như Blueprint , mixin hữu ích và tự động tạo sprite thông qua plugin Lemonade (nên được tích hợp vào La bàn trong phiên bản tiếp theo ).

Git

Tùy thuộc vào kích thước / độ phức tạp của trang web, hãy xem xét việc theo Capistranomô hình triển khai. Không chắc bạn có thể sử dụng Capistrano trực tiếp với CakePHP hay không, nhưng ý chính là: mỗi máy chủ sản xuất có một thư mục "hiện tại" chứa tất cả mã đang chạy trong sản xuất tại thời điểm đó. Mỗi lần bạn muốn triển khai mã mới, bạn chạy một tập lệnh ssh's đến từng máy chủ sản xuất và để nó (a) sao chép nội dung của thư mục "hiện tại" vào một thư mục sao lưu (có tên phát hành / dấu thời gian trên đó), ( b) kiểm tra mã mới nhất từ ​​Git vào thư mục "hiện tại" và (c) bắt đầu phục vụ mã mới này từ thư mục "hiện tại". Bằng cách này, bạn có thể quay lại bất kỳ bản phát hành nào trước đây nếu cần thiết và bạn có thể cho biết chính xác bản sửa đổi nào đang được sản xuất. Capistrano cũng cho phép bạn thêm tất cả các loại tác vụ tùy chỉnh như một phần của quy trình triển khai, bao gồm cả minifaction JS / CSS,

Thêm

Vâng, có một bó. Google cho một cái gì đó như "CSS / concat concat". Đây là một cách nhanh chóng tôi tìm thấy cho CakePHP: Asset Packer .


Cảm ơn rất nhiều cho đầu vào. Tôi thực sự thích những gì tôi thấy với Khung La bàn. Tôi chỉ muốn tôi biết một cách để triển khai nó trong PHP. Tôi googled xung quanh nhưng không thể tìm thấy một sự thay thế. Capistrano trông cũng rất thú vị nhưng thay vì mô hình sao chép tệp đắt tiền và dễ vỡ, tôi chỉ sử dụng ssh để nói với khách hàng git trên tất cả các máy chủ từ xa để thực hiện 'git pull --rebase' nhanh chóng sau khi kiểm tra xem nó có hoạt động không máy chủ đầu tiên.
Evan Plaice

(tiếp) Trình đóng gói tài sản cũng có vẻ rất thú vị. Lý do duy nhất tôi chọn câu trả lời khác cho bạn là vì nó chứa tất cả trong một lần với quá trình xử lý được thực hiện trên chính máy chủ (vì vậy không cần thêm tập lệnh nào). Nhược điểm duy nhất tôi thấy đối với pagepeed là việc xử lý thêm nội dung tĩnh (được xử lý dễ dàng bằng cách sử dụng bộ đệm ẩn nội dung tĩnh và / hoặc CDN. Tôi thực sự muốn tôi có thể chấp nhận 2 vì câu trả lời của bạn có nhiều thông tin có giá trị.
Evan Plaice

Bạn không "triển khai" khung La bàn với PHP. Bạn chỉ chạy nó trong khi bạn viết mã, nó biên dịch các tệp CSS của bạn mỗi khi bạn nhấn lưu và các tệp CSS là những gì thực sự được triển khai. Để "chạy" la bàn, trước tiên bạn cần tạo tệp cấu hình của mình (Compass.rb) - sử dụng tùy chọn này để tạo các tùy chọn dòng lệnh: jsfiddle.net/chriseppstein/PG46q/3 . Khi bạn đã thiết lập tệp cấu hình với tất cả các đường dẫn của mình, chỉ cần chạy "đồng hồ la bàn" trong cùng thư mục với tệp cấu hình và la bàn sẽ bắt đầu biên dịch lại SASS của bạn mỗi khi bạn nhấn lưu. Hãy thử nó trên một số dự án phụ: nó RẤT dễ dàng & nhanh chóng.
Yevgeniy Brikman

Ngoài ra, theo như tôi biết, Capistrano không sao chép nhiều. Mỗi khi bạn triển khai, nó sẽ kiểm tra mã mới nhất và chỉ đổi tên thư mục. Ưu điểm là bạn luôn có thể quay lại phiên bản cũ hơn bằng cách hoán đổi tên thư mục một lần nữa.
Yevgeniy Brikman

Tôi đã tìm thấy một bài viết về cách khởi động nó và chạy trong PHP. Nó dễ sử dụng bên ngoài một dự án Ruby hơn tôi mong đợi. Cào bình luận cuối cùng của tôi về Capistrano. Tôi nghĩ rằng nó được sử dụng để gửi một lệnh phân tán đến nhiều máy chủ. Nếu tôi có quyền truy cập ssh vào các máy chủ từ xa, tôi sẽ bỏ một máy khách git như một phương tiện để lấy các thay đổi mới nhất từ ​​nhánh sản xuất. IMHO, thư mục trao đổi thư mục là một ý tưởng tồi. Tôi rất thích gắn thẻ sửa đổi trong chu kỳ phát hành và chỉ kiểm tra thẻ trước nếu thẻ hiện tại có vấn đề.
Evan Plaice
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.