js壓縮解壓字元串
Ⅰ JS的壓縮其實就是把js定義當中的一些長字元串用短字元串來代替,而達到減少JS文件大小的目的嗎
壓縮的主要目的就是減小文件尺寸從而能夠快速載入,一般手段是去掉注釋、空行、換行等等可有可無的東西,極端情況下才會縮短變數名,因為有可能會產生不可預知的問題。
換變數名一般情況下用一混淆代碼。
Ⅱ 請教各位mvc的js打包壓縮有關的問題
1.引用js文件,如果有.min.js和.js文件 最好只引用.js文件 而不去引用.min.js文件,因為系統在Release之後會自動去查找相應的.min.js文件的 而在debug時會引用.js文件 這樣方便調試
2.確定文件是否存在,如果不存在,知道怎麼改了吧??
3.我發現樓主還不了解BundleConfig的使用方法。
new StyleBundle("綁定實例名") 這里明明是名稱,但為什麼這名稱看起來像路徑
比如你這里的 new StyleBundle("~/Index/css_easyui")
為什麼會像路徑??
這是有原因的
當你在Release之後 BundleConfig會把你這個Include中的所有文件進行壓縮成一個文件,但這個文件的路徑是什麼,就是這個"綁定實例名"
也就是說 在這里,當你Release之後 你的css將會生成 <link type="text/css" rel="stylesheet" href="~/Index/css_easyui?隨機數"/>
接著說:
如果 你的css文件~/Content/Css/themes/icon.css裡面有句話:
.cls
{
background-image:url(../img/xxxx.gif);
}
發現問題沒有呢? 在Release之前
這個背景圖的路徑是:~/Content/Css/img/xxxx.gif
而在Release之後 因為你的css文件已經整合到了~/Index/css_easyui?隨機數這個文件裡面
所以Release之後這個圖片路徑卻變成了:~/img/xxxx.gif
Ⅲ nodejs zlib 怎麼把幾個壓縮過的文件解壓拼接
我請求管用所結束httpvar http = require("http"),
zlib = require("zlib");
function getGzipped(url, callback) {
// buffer to store the streamed decompression
var buffer = [];
http.get(url, function(res) {
// pipe the response into the gunzip to decompress
var gunzip = zlib.createGunzip();
res.pipe(gunzip);
gunzip.on('data', function(data) {
// decompression chunk ready, add it to the buffer
buffer.push(data.toString())
}).on("end", function() {
// response and decompression complete, join the buffer and return
callback(null, buffer.join(""));
}).on("error", function(e) {
callback(e);
})
}).on('error', function(e) {
callback(e)
});
}
getGzipped(url, function(err, data) {
console.log(data);
});
2. 嘗試添加encoding: null給傳遞給選項request避免載體轉換字元串並保持二進制緩沖區
3. 工作示例(使用節點請求模塊)gunzips響應function gunzipJSON(response){
var gunzip = zlib.createGunzip();
var json = "";
gunzip.on('data', function(data){
json += data.toString();
});
gunzip.on('end', function(){
parseJSON(json);
});
response.pipe(gunzip);
}
全碼:
4. 像@Iftah說設置encoding: null 完整例(少錯誤處理):request = require('request');
zlib = require('zlib');
request(url, {encoding: null}, function(err, response, body){
if(response.headers['content-encoding'] == 'gzip'){
zlib.gunzip(body, function(err, dezipped) {
callback(dezipped.toString());
}
} else {
callback(body);
}
});
Ⅳ 如何用js壓縮字元串長度在用php還原
一個超長字元串有由PHP進行壓縮,得到壓縮後字元串,再由瀏覽器的javascript進行解壓縮得到原字元串.
有沒有這樣的插件,或者演算法,函數,方法,類等工具,我還是畢竟推薦你去後盾人看看,裡面有很多關於php的這類視頻,你可以去看看
Ⅳ 如何壓縮js
簡單的壓縮一般是:刪除注釋和空白符,替換變數名。
更激進點的做法還包括:刪除無用代碼,內聯函數,等價語句替換等。
有些開發者出於保護代碼的原因,還可能會對代碼進行混淆處理。
通常深度壓縮JS都必須要做的一步就是盡量地縮短變數名,因為一份體積巨大的JS代碼,其中的變數名會佔去不少空間。
壓縮js必須要注意:
1、壓縮前的代碼格式要標准。因為去掉換行與空格時,所有語句就變成一行,如果你的代碼有瑕疵(比如某行少了個分號),那就會導致整個文件報錯。當然,現在有的壓縮工具已經比較智能了。
2、備份原文件。壓縮很可能不會一次成功,一般要多試,多改。
js壓縮工具:
1. YUI Compressor
2. Google Closure Compiler
Ⅵ js Gzip前台壓縮字元串如何實現
public class Trans {
public void printNum(int num){
System.out.print(Thread.currentThread());//獲取當前運行這個方法的類
for(int i=0;i<25;i++){
System.out.print(i+" ");
}
System.out.println();
}
}
Ⅶ 壓縮後的JS代碼怎樣解壓縮
一般壓縮都經過混淆,如果你看到變數名都是A,B,C,D之類的無規則的命名,那就是被混淆過的,一般來說也很難閱讀,就算你 還原了格式。
如果是沒有混淆的,你可以試試用js的格式化工具來重新格式化一下的,比如:
/* 美化:格式化代碼,使之容易閱讀 */
/* 凈化:去掉代碼中多餘的注釋、換行、空格等 */
/* 壓縮:將代碼壓縮為更小體積,便於傳輸 */
/* 解壓:將壓縮後的代碼轉換為人可以閱讀的格式 */
/* 混淆:將代碼的中變數名簡短化以減小體積,但可讀性差,經混淆後的代碼無法還原 */
/* 如果有用,請別忘了推薦給你的朋友: */
/* javascript在線美化、凈化、壓縮、解壓:http://tool.lu/js */
/* 以下是演示代碼 */
var Inote = {};
Inote.JSTool = function(options) {
this.options = options || {};
};
Inote.JSTool.prototype = {
_name: 'Javascript工具',
_history: {
'v1.0': ['2011-01-18', 'javascript工具上線'],
'v1.1': ['2012-03-23', '增加混淆功能'],
'v1.2': ['2012-07-21', '升級美化功能引擎'],
'v1.3': ['2014-03-01', '升級解密功能,支持eval,window.eval,window["eval"]等的解密'],
'v1.4': ['2014-08-05', '升級混淆功能引擎'],
'v1.5': ['2014-08-09', '升級js壓縮引擎'],
'v1.6': ['2015-04-11', '升級js混淆引擎']
},
options: {},
getName: function() {return this._name;},
getHistory: function() {
return this._history;}
};
var jstool = new Inote.JSTool();
Ⅷ js怎麼讀取zip文件內容
web前端解壓zip文件有什麼用:
只考慮標准瀏覽器的話, 伺服器只要傳輸壓縮包到客戶端, 節約了帶寬, 而且節約了傳輸時間, 聽起來好像很厲害的說;
如果前端的代碼很多, 而且包含大副的圖片,那麼就可以把js和css和jpg和png等各種數據通過服務端打包成zip傳送到瀏覽器, 瀏覽器負責解壓, css實用動態生成插入到dom中,js也用globalEval直接執行, jpg或者png各種圖片文件由blob流轉化為image, 直接插入到瀏覽器中;
html5支持讀取Blob(二進制大對象, file文件也是繼承了Blob), 並轉化為圖片流或者文字流或者其他流格式, 這也是為什麼瀏覽器可以讀取"application/zip"文件的原因;
要在瀏覽器中解壓zip文件的話需要引入四個js , 因為UnZipArchive.js依賴了zip.js, mime-type.js和jquery.js , 測試demo如下:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script> <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script> <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script> <script src="http://files.cnblogs.com/files/diligenceday/UnZipArchive.js"></script></head><body><h2> demo</h2><div> <input type="file" id="file"></div><ul id="dir"> </ul><script> $("#file").change(function (e) { var file = this.files[0]; window.un = new UnZipArchive( file ); un.getData( function() { //獲取所以的文件和文件夾列表; var arr = un.getEntries(); //拼接字元串 var str = ""; for(var i=0; i<arr.length; i++ ) { //點擊li的話直接下載文件; str += "<li onclick=download('"+arr[i]+"')>"+arr[i]+"</li>" }; $("#dir").html( str ); }); }); var download = function ( filename ) { un.download( filename ); };</script></body></html>
UnzioarichiveJS 是自己封裝的, 有任何問題的話請及時反饋
解壓ZIP壓縮包的完整DEMO
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script> <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script> <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script> <style> code{ display: block; padding: 10px; background: #eee; } </style></head><body><div> <h1> 兼容性 </h1> <div> <p> zip.js可以在所有的chrome瀏覽器和firefox瀏覽器中運行, 可以在safari6和IE10,以及IE10以上運行; </p> <p> 如果要在IE9和safari中運行需要兩個設置: </p> <code> 1:zip.useWebWorkers == false </code> <code> 2:並引用這個JS:https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b/js/typedarray.js </code> </div> <h2> demo </h2> <div> <input type="file" id="file"> </div> <ul id="dir"> </ul> <script> $("#file").change(function (e) { var file = this.files[0]; window.un = new UnZipArchive( file ); un.getData( function() { var arr = un.getEntries(); var str = ""; for(var i=0; i<arr.length; i++ ) { str += "<li onclick=download('"+arr[i]+"')>"+arr[i]+"</li>" }; $("#dir").html( str ); }); }); var download = function ( filename ) { un.download( filename ); }; </script></div><script> zip.workerScriptsPath = "http://gildas-lormeau.github.io/zip.js/demos/"; /** * @desc 解壓縮文件的類; * @return UnZipArchive 的實例; * */ var UnZipArchive = function( blob ) { if( !blob ) { alert("參數不正確, 需要一個Blob類型的參數"); return ; }; if( !(blob instanceof Blob) ) { alert("參數不是Blob類型"); return ; }; function noop() {}; this.entries = {}; this.zipReader = {}; var _this = this; this.length = 0; this.onend = noop; this.onerror = noop; this.onprogress = noop; //創建一個延遲對象; var def = this.defer = new $.Deferred(); zip.createReader( new zip.BlobReader( blob ), function(zipReader) { _this.zipReader = zipReader; zipReader.getEntries(function(entries) { _this.entries = entries; //繼續執行隊列; def.resolve(); }); }, this.error.bind(_this) ); }; /** * @desc 把blob文件轉化為dataUrl; * */ UnZipArchive.readBlobAsDataURL = function (blob, callback) { var f = new FileReader(); f.onload = function(e) {callback( e.target.result );}; f.readAsDataURL(blob); }; $.extend( UnZipArchive.prototype, { /** * @desc 獲取壓縮文件的所有入口; * @return ArrayList; * */ "getEntries" : function() { var result = []; for(var i= 0, len = this.entries.length ; i<len; i++ ) { result.push( this.entries[i].filename ); } return result; }, /** * @desc 獲取文件Entry; * @return Entry * */ "getEntry" : function ( filename ) { var entrie; for(var i= 0, len = this.entries.length ; i<len; i++ ) { if( this.entries[i].filename === filename) { return this.entries[i]; }; } }, /** * @desc 下載文件 * @param filename; * @return void; * */ "download" : function ( filename , cb , runoninit) { var _this = this; this.defer = this.defer.then(function() { var def = $.Deferred(); if(!filename) return ; if(runoninit) { return runoninit(); }; var entry = _this.getEntry( filename ); if(!entry)return; entry.getData(new zip.BlobWriter(zip.getMimeType(entry.filename)), function(data) { if( !cb ) { UnZipArchive.readBlobAsDataURL(data, function( dataUrl ) { var downloadButton = document.createElement("a"), URL = window.webkitURL || window.mozURL || window.URL; downloadButton.href = dataUrl; downloadButton.download = filename; downloadButton.click(); def.resolve( dataUrl ); _this.onend(); }); }else{ cb( data ); def.resolve( data ); } }); return def; }); }, /** * @desc 獲取對應的blob數據; * @param filename 文件名; * @param callback回調, 參數為 blob; * @desc 或者可以直接傳一個函數作為zip解壓縮完畢的回調; * */ "getData" : function ( filename, fn ) { if( typeof filename === "string") { this.download(filename, function( blob ) { fn&&fn( blob ); }); }else if( typeof filename === "function") { this.download("test", null, function( blob ) { filename(); }); }; }, "error" : function() { this.onerror( this ); throw new Error("壓縮文件解壓失敗"); } }); </script></body></html>