网站优化是什么,seo技术是干什么的,网站建设与维护百科,大型网站建设兴田德润专业原理#xff1a;把更新的文件放在服务器上#xff0c;设置一个客户端版本号#xff0c;每次打开客户端的时候#xff0c;通过接口获取服务器上的版本#xff0c;如果高于本地的版本就下载服务器上的代码#xff0c;低于或等于就不更新 1 script2 var htt…原理把更新的文件放在服务器上设置一个客户端版本号每次打开客户端的时候通过接口获取服务器上的版本如果高于本地的版本就下载服务器上的代码低于或等于就不更新 1 script2 var http require(http);3 var fs require(fs);4 var request require(request);5 var unzip require(unzip2);6 var Driver function () {7 this.timer ;8 this.timer2 ;9 };10 Driver.prototype {11 /* 读取本地版本 */12 readFile: function () {13 var self this;14 if (fs.existsSync(src/js/global.js)) { 15 self.case1();16 } else {17 $.ajax({18 type: post,19 url: url(接口地址),20 dataType: jsonp,21 contentType: application/jsonp; charsetutf-8,22 data: {userId: 0,23 },24 success: function (data) {25 console.log(正在下载解压包...);26 if (data.code 0) {27 if (data.result.update 1) {28 var gx document.getElementsByClassName(gx)[0];29 gx.style.display block;30 /* 下载地址 下载到的目录*/31 if (fs.existsSync(nsrc) || fs.existsSync(upload/zip)) {32 self.rmdirFile(upload/zip, function () {33 34 self.rmdirFile(nsrc, function () {35 36 self.createDir(upload/zip, function () {37 console.log(创建下载zip目录成功...);38 //创建下载zip的目录39 self.downFile(data.result.url);40 });41 })42 })43 } else {44 self.createDir(upload/zip, function () {45 console.log(创建下载zip目录成功...);46 //创建下载zip的目录47 self.downFile(data.result.url);48 });49 }50 } else {51 setTimeout(function () {52 window.location.href ../src/Login/login.html;53 }, 2250);54 }55 }56 },57 error: function () {58 59 alert(data.msg);60 61 }62 63 });64 65 }66 },67 /* 如果global没有被删除*/68 case1: function () {69 var self this;70 global.post(/system/checkVersion, {}, function (data) {71 console.log(正在下载解压包...);72 if (data.code 0) {73 if (data.result.update 1) {74 var gx document.getElementsByClassName(gx)[0];75 gx.style.display block;76 /* 下载地址 下载到的目录*/77 if (fs.existsSync(nsrc) || fs.existsSync(upload/zip)) {78 self.rmdirFile(upload/zip, function () {79 80 self.rmdirFile(nsrc, function () {81 82 self.createDir(upload/zip, function () {83 console.log(创建下载zip目录成功...);84 //创建下载zip的目录85 self.downFile(data.result.url);86 });87 })88 })89 } else {90 self.createDir(upload/zip, function () {91 console.log(创建下载zip目录成功...);92 //创建下载zip的目录93 self.downFile(data.result.url);94 });95 }96 } else {97 setTimeout(function () {98 window.location.href ../src/Login/login.html;99 }, 2250);
100 }
101 } else {
102 alert(data.msg);
103 }
104 });
105 },
106 /* 下载解压包 */
107 downFile: function (url) {
108 var self this;
109 self.download(url, upload/zip/nsrc.zip, function () {
110 /* 下载完成创建解压目录 */
111 clearInterval(self.timer);
112 sc.style.width 0;
113 sj.innerHTML 正在解压安装 2/2
114 console.log(正在创建临时目录);
115 self.createDir(nsrc, function () {
116 self.unZip();
117 console.log(正在解压...);
118 /* 前端做的假进程 */
119 setTimeout(function () {
120 var startC parseInt(Math.floor(Math.random() * 3 1) * 10);
121 sc.style.width startC %;
122 self.timer2 setInterval(function () {
123 startC startC Math.floor(Math.random() * 3 1) * 0.2;
124 console.log(aaa);
125 if (startC 90) {
126 clearInterval(self.timer2);
127 startC 90;
128 }
129 sc.style.width startC %;
130 }, 500);
131 }, 1000);
132
133
134 });
135 /*self.unZip();*/
136 });
137 },
138 /* 下载完成创建交换目录 */
139 createDir: function (v, callback) {
140 var slef this;
141 /* 创建的新目录名是nsrc*/
142 fs.mkdir(v, function (err) {
143 if (!err) {
144 console.log(创建目录成功...);
145 callback callback(err);
146 } else {
147 console.log(创建目录失败...);
148 }
149 })
150 },
151 /* 解压zip */
152 unZip: function () {
153 var self this;
154 /* 解压到nsrc中*/
155 var extract unzip.Extract({
156 path: nsrc //process.cwd()
157 }); //获取根目录
158 fs.createReadStream(upload/zip/nsrc.zip).pipe(extract);
159 extract.on(error, function (err) {
160 console.log(err);
161
162 console.log(解压失败);
163 });
164 extract.on(finish, function () {
165 /* argv[1] 主模板的绝对路径 第一个命令行从 argv[2]这个位置开始 */
166 /* 在此之前删除之前的src文件夹 */
167 /* self.rmdirFile(process.cwd()\\src, function () {
168 console.log(1);
169 /* 重命名文件夹 */
170 /*self.reName(fs.readdirSync(process.cwd()\\nsrc)[0]);*/
171
172 /*console.log(success)
173 });*/
174
175 });
176
177 extract.on(close, function () {
178 /* */
179 console.log(解压成功);
180 self.rmdirFile(src, function () {
181 /*删除掉之前的src文件夹 解压 重命名新的文件夹*/
182 self.copy();
183 })
184
185
186 });
187 extract.on(end, function () {});
188 },
189 copy: function () {
190 var self this;
191 fs.rename(nsrc/src, src, function (err) {
192 /* 删除 nsrc 如果能删除 说明压缩的 还未压缩完 再次压缩*/
193 if (fs.existsSync(nsrc)) {
194 fs.rmdir(nsrc, function (err) {
195 if (err) {
196 console.log(err);
197 console.log(删除失败....);
198 } else {
199 console.log(删除成功...);
200 self.copy();
201 }
202 });
203 } else {
204 self.rmdirFile(upload/zip, function () {
205 console.log(删除缓存成功...);
206 console.log(更新完成启动客户端...);
207 sc.style.width 100 %;
208 setTimeout(function () {
209 window.location.href ../src/Login/login.html;
210 }, 2250);
211 });
212 }
213
214 })
215 },
216 /* 重命名 */
217 reName: function (filename) {
218 var self this;
219 /* 在此之前删除之前的src文件夹 */
220 fs.rename(nsrc, src, function (err) {
221 if (err) {
222 console.log(重命名失败...);
223 } else {
224 console.log(重命名成功...);
225 self.rmdirFile(upload/zip, function () {
226 console.log(删除缓存成功...);
227 console.log(更新完成启动客户端...);
228 });
229 }
230 });
231 },
232 /* 删除文件夹 */
233 rmdirFile: function (paths, callback) {
234 var self this;
235 var files [];
236 /* 判断目录存在 */
237 /* d递归遍历*/
238 if (fs.existsSync(paths)) {
239 files fs.readdirSync(paths); //同步请求
240 files.forEach(function (files, index) {
241 var curPath paths / files; //遍历出每个一个目录
242 //如果当前目录也是目录
243 if (fs.statSync(curPath).isDirectory()) { //recurse
244 /* 递归遍历 */
245 self.rmdirFile(curPath);
246 } else {
247 fs.unlinkSync(curPath); //删除文件
248 }
249 });
250 fs.rmdirSync(paths); //删除空文件夹
251 console.log(删除成功...);
252 }
253 callback callback();
254
255 },
256 /*---- 下载解压包 ----*/
257 download: function (uri, filename, callback) {
258 var self this;
259 request.head(uri, function (err, res, body) {
260 console.log(content-type:, res.headers[content-type]);
261 console.log(content-length:, res.headers[content-length]);
262 self.timer setInterval(function () {
263 sc.style.width (fs.statSync(filename).size / res.headers[content-length]) * 100 %;
264 }, 500);
265 request(uri).pipe(fs.createWriteStream(filename)).on(close, callback);
266 });
267 },
268 },
269 console.log(执行结束);
270 /script 下面改变我本地的 版本号此时服务器上版本是1.1.1 打开后客户端 下载完之后看下global.js里面的源代码 版本号发生了改变此次更新成功 注我并非是将所要代码重新打包放到服务器而是只把自己修改的部分打成zip代码里可以看到我读取的是zip 放在服务器上面里面一定要包含存放版本号的文件否则无法判断是否该更新