Tôi đang sử dụng jquery trong ứng dụng web của mình và tôi cần tải thêm các tệp tập lệnh jquery vào một trang.
Google đề nghị tôi kết hợp tất cả các tệp tập lệnh jquery thành một tệp duy nhất.
Tôi có thể làm cái này như thế nào?
Tôi đang sử dụng jquery trong ứng dụng web của mình và tôi cần tải thêm các tệp tập lệnh jquery vào một trang.
Google đề nghị tôi kết hợp tất cả các tệp tập lệnh jquery thành một tệp duy nhất.
Tôi có thể làm cái này như thế nào?
Câu trả lời:
Trên linux, bạn có thể sử dụng tập lệnh shell đơn giản https://github.com/dfsq/compressJS.sh để kết hợp nhiều tệp javascript thành một tệp duy nhất. Nó sử dụng dịch vụ trực tuyến Closure Compiler để tập lệnh kết quả cũng được nén hiệu quả.
$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
Hãy thử trình biên dịch google đóng:
http://code.google.com/closure/compiler/docs/gettingstarted_ui.html
Chỉ cần kết hợp các tệp văn bản và sau đó sử dụng một cái gì đó như YUI Compressor .
Các tệp có thể được kết hợp dễ dàng bằng cách sử dụng lệnh cat *.js > main.js
và main.js sau đó có thể được chạy thông qua trình nén YUI bằng cách sử dụng java -jar yuicompressor-x.y.z.jar -o main.min.js main.js
.
Cập nhật tháng 8 năm 2014
Bây giờ tôi đã chuyển sang sử dụng Gulp để ghép và nén javascript cũng như với các plugin khác nhau và một số cấu hình tối thiểu mà bạn có thể thực hiện những việc như thiết lập phụ thuộc, biên dịch coffeescript, v.v. cũng như nén JS của bạn.
Bạn có thể làm điều này thông qua
include
tất cả chúng và xuất thành một <script>
thẻinclude
tức là không làm <script src = "...."> liên kết đến nhiều tệp, chỉ đưa chúng vào một phần tử script. Lý tưởng nhất là một cdn cùng với bộ nhớ đệm thích hợp nên được sử dụng.
Tôi thường có nó trên một Makefile
:
# All .js compiled into a single one.
compiled=./path/of/js/main.js
compile:
@find ./path/of/js -type f -name "*.js" | xargs cat > $(compiled)
Sau đó, bạn chạy:
make compile
Tôi hy vọng nó sẽ giúp.
Tôi sử dụng tập lệnh shell này trên Linux https://github.com/eloone/mergejs .
So với các tập lệnh ở trên, nó có ưu điểm là sử dụng rất đơn giản và một điểm cộng lớn là bạn có thể liệt kê các tệp js mà bạn muốn hợp nhất trong tệp văn bản đầu vào chứ không phải trong dòng lệnh, vì vậy danh sách của bạn có thể sử dụng lại và bạn không phải gõ nó mỗi khi bạn muốn hợp nhất các tệp của mình. Nó rất tiện dụng vì bạn sẽ lặp lại bước này bất cứ khi nào bạn muốn bắt đầu sản xuất. Bạn cũng có thể nhận xét các tệp bạn không muốn hợp nhất trong danh sách. Dòng lệnh mà bạn có nhiều khả năng sẽ nhập là:
$ mergejs js_files_list.txt output.js
Và nếu bạn cũng muốn nén tệp đã hợp nhất kết quả:
$ mergejs -c js_files_list.txt output.js
Thao tác này sẽ output-min.js
được trình biên dịch đóng của Google thu nhỏ. Hoặc là :
$ mergejs -c js_files_list.txt output.js output.minified.js
Nếu bạn muốn một tên cụ thể cho tệp thu nhỏ của mình có tên output.minified.js
Tôi thấy nó thực sự hữu ích cho một trang web đơn giản.
Nhóm tập lệnh là phản tác dụng, bạn nên tải chúng song song bằng cách sử dụng một cái gì đó như http://yepnopejs.com/ hoặc http://headjs.com
Sao chép tập lệnh này vào notepad và lưu dưới dạng tệp .vbs. Kéo và thả các tệp .js trên tập lệnh này.
ps. Điều này sẽ chỉ hoạt động trên cửa sổ.
set objArgs = Wscript.Arguments
set objFso = CreateObject("Scripting.FileSystemObject")
content = ""
'Iterate through all the arguments passed
for i = 0 to objArgs.count
on error resume next
'Try and treat the argument like a folder
Set folder = objFso.GetFolder(objArgs(i))
'If we get an error, we know it is a file
if err.number <> 0 then
'This is not a folder, treat as file
content = content & ReadFile(objArgs(i))
else
'No error? This is a folder, process accordingly
for each file in folder.Files
content = content & ReadFile(file.path)
next
end if
on error goto 0
next
'Get system Temp folder path
set tempFolderPath = objFso.GetSpecialFolder(2)
'Generate a random filename to use for a temporary file
strTempFileName = objFso.GetTempName
'Create temporary file in Temp folder
set objTempFile = tempFolderPath.CreateTextFile(strTempFileName)
'Write content from JavaScript files to temporary file
objTempFile.WriteLine(content)
objTempFile.Close
'Open temporary file in Notepad
set objShell = CreateObject("WScript.Shell")
objShell.Run("Notepad.exe " & tempFolderPath & "\" & strTempFileName)
function ReadFile(strFilePath)
'If file path ends with ".js", we know it is JavaScript file
if Right(strFilePath, 3) = ".js" then
set objFile = objFso.OpenTextFile(strFilePath, 1, false)
'Read entire contents of a JavaScript file and returns it as a string
ReadFile = objFile.ReadAll & vbNewLine
objFile.Close
else
'Return empty string
ReadFile = ""
end if
end function
Bạn có thể sử dụng trình biên dịch đóng cửa như orangutancloud gợi ý. Cần chỉ ra rằng bạn không thực sự cần phải biên dịch / rút gọn JavaScript mà chỉ cần nối các tệp văn bản JavaScript thành một tệp văn bản. Chỉ cần nối chúng theo thứ tự mà chúng thường được đưa vào trang.
Nếu bạn đang chạy PHP, tôi khuyên bạn nên Minify vì nó kết hợp và thu nhỏ nhanh chóng cho cả CSS và JS. Sau khi bạn đã cấu hình nó, chỉ cần hoạt động như bình thường và nó sẽ xử lý mọi thứ.
Bạn có thể sử dụng KjsCompiler: https://github.com/knyga/kjscompiler Quản lý phụ thuộc mát mẻ
Bạn có thể sử dụng một kịch bản mà tôi đã tạo. Bạn cần JRuby để chạy nó. https://bitbucket.org/ardee_aram/jscombiner (JSCombiner).
Điều làm cho điều này trở nên khác biệt là nó theo dõi các thay đổi của tệp trong javascript và tự động kết hợp nó với tập lệnh bạn chọn. Vì vậy, không cần phải tự "xây dựng" javascript của bạn mỗi khi bạn kiểm tra nó. Hy vọng nó sẽ giúp bạn ra ngoài, tôi hiện đang sử dụng cái này.
Điều này có thể hơi tốn công sức nhưng bạn có thể tải xuống dự án wiki nguồn mở của tôi từ codeplex:
http://shuttlewiki.codeplex.com
Nó chứa một dự án CompressJavascript (và CompressCSS) sử dụng dự án http://yuicompressor.codeplex.com/ .
Mã phải tự giải thích nhưng nó làm cho việc kết hợp và nén các tệp một simnpler một chút --- đối với tôi dù sao :)
Dự án ShuttleWiki cho biết cách sử dụng nó trong sự kiện sau xây dựng.