2014-12-24 17 views
7

Tôi đang cố sử dụng cfstatic. Trong index.cfm của tôi, tôi chỉ thêm green.css bằng cfstatic, cfstatic nên thêm phiên bản thu nhỏ của green.css, Vì vậy, văn bản h1 <h1>I should be Green</h1> của tôi phải có màu xanh lá cây. Nhưng cfstatic đang thêm cả green.css & red.css. Tôi có thiếu cấu hình không?ColdFusion cfstatic bao gồm tất cả các tệp CSS

Application.cfc

component output="false"{ 

    This.name = "testing"; 
    This.sessionManagement = true; 
    This.sessionTimeout = CreateTimeSpan(1, 23, 59, 59); 
    This.mappings["/org"] = expandpath('.')&'\org'; 

function onRequestStart(){ 


    application.cfstatic = CreateObject('org.cfstatic.CfStatic') 
     .init( staticDirectory = ExpandPath('./assets'), 
       staticUrl  = "/cfstatic/assets/" 
      ); 
    } 
} 

Index.cfm

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Test</title> 
    <cfscript> 
     application.cfstatic.include('/css/green.css',true); 
    </cfscript> 

<cfoutput>#application.cfstatic.renderIncludes('css')#</cfoutput> 

</head> 
<body> 
    <h1>I should be Green</h1> 
</body> 
</html> 

Green.css

/* This is assets/css/green.css */ 
h1 {color:green;} 

Red.css

/* This is assets/css/red.css */ 
h1 {color:red;} 

đầu ra trình duyệt của tôi là,

My browser output is

Trả lời

3

Tôi không hoàn toàn quen thuộc với CFStatic nhưng tôi đã sao chép ví dụ của bạn và tìm thấy số này article on how package minification works. Đọc qua nó, và các ý kiến, tôi nghĩ bạn có thể đi về 2 cách khác nhau này; mặc dù tôi không thể nói họ là những tuyến đường tốt nhất (hoặc duy nhất).

A) Chia kiểu thành gói riêng (thư mục). Mà biên dịch các tập tin từ mỗi thư mục vào một tập tin minified dựa trên thư mục đó.

Vì vậy, bạn có thể làm một cấu trúc thư mục như vậy ...

assets 
-- css 
--- green 
---- green.css 
--- red 
---- red.css 

Khi biên soạn, các tập tin được rút gọn sẽ green.min.cssred.min.css.

Sau đó, thay đổi bao gồm trong Application.cfc của bạn mà các cuộc gọi green.css như vậy - application.cfstatic.include('/css/green/green.css',true);

B) Đặt minifyMode="file" trong constructor mà sẽ tạo ra các file được rút gọn riêng biệt tại một địa điểm.

Chỉ mục hiện tại của bạn.cfm sẽ hoạt động như mong đợi trong trường hợp này.

Tùy thuộc vào mức độ phức tạp của ứng dụng mà bạn đang làm việc với tôi, tôi nghĩ rằng việc đóng gói tách rời là cách để đi trừ khi đó chỉ là một vài tệp.

Chúc mừng.

+0

Tôi là tác giả và câu trả lời này là câu trả lời chính xác tuyệt đối để kudos để Tony đọc tài liệu và nhận được một ví dụ làm việc. Các tài liệu chắc chắn có thể tốt hơn - nhưng đọc về cách hoạt động của quá trình rút gọn là chìa khóa ở đây: http://domwatson.codes/cfstatic/ –

1

Tôi chưa bao giờ sử dụng CFStatic, nhưng nó có thể là trong renderIncludes(). Bạn đã thử xóa bỏ dòng đó chưa? Chuyện gì xảy ra? Nếu không trực tiếp là renderIncludes(), hãy định cấu hình includeAllByDefault.

Từ their docs:

Bao gồm tất cả các file theo mặc định (từ 0.2.2)

Ra khỏi hộp, CfStatic sẽ bao gồm tất cả các file tĩnh của bạn nếu bạn không bao giờ sử dụng .include() phương pháp để chọn tệp cụ thể để bao gồm (tức là bạn chỉ cần làm .renderIncludes()). Bạn có thể thay đổi hành vi này bằng cách thiết lập includeAllByDefault thành false.

Phrasing của điều đó có vẻ như nó có thể tốt hơn một chút. Nó không rõ ràng cho tôi cho dù chức năng này là cần thiết để làm cho tất cả các tập tin bao gồm, hoặc đây chỉ là một loại getAll(*Type*) chức năng.

+0

Ban đầu khi đọc tài liệu, tôi cảm thấy như vậy và tôi đã thử điều đó. Nhưng cấu hình đó rất hữu ích ** nếu bạn không bao giờ sử dụng phương thức .include() ** –

+0

@CFMitrah Yeah. Không có kinh nghiệm với CFStatic bản thân mình, hai ý tưởng này là tốt nhất tôi có. Tôi đã thấy rằng, trong văn bản được sao chép, về việc không sử dụng '.include()' nhưng tôi nghĩ từ ngữ của đoạn văn khá ngắn. Tôi giả sử khi bạn đưa ra dòng đó, css của bạn không được bao gồm trong trang? –

Các vấn đề liên quan