added module is-file-changed

This commit is contained in:
coderaiser 2012-09-12 05:45:25 -04:00
parent 770cd1c9b6
commit 69fa0dbe64
2 changed files with 93 additions and 57 deletions

View file

@ -5,6 +5,17 @@
* - Minify
*/
/* function do safe require of needed module */
var cloudRequire = function(pModule){
try{
return require(pModule);
}
catch(pError){
return false;
}
};
/*
* Обьект для работы с кэшем
* аналог клиентского обьекта
@ -67,12 +78,15 @@ exports.Minify = {
INDEX :'index.html',
/* приватный переключатель минимизации */
_allowed :{
css:true,
js:true,
html:true,
img: true
css : true,
js : true,
html : true,
img : true
},
/* minimize even if file not changed */
forse : false,
/* функция разрешает или
* запрещает минимизировать
* css/js/html
@ -146,14 +160,16 @@ exports.Minify = {
optimize: function(pName, pParams){
var lResult = true;
pParams.force = this.force;
if(this._allowed.css ||
this._allowed.js ||
this._allowed.html){
var lMinify;
try{
lMinify = require('minify');
var lMinify = cloudRequire('minify');
if(lMinify)
lMinify.optimize(pName, pParams);
}catch(pError){
else{
lResult = false;
this._allowed = {js:false,css:false,html:false};
@ -170,4 +186,14 @@ exports.Minify = {
/* minification folder name */
MinFolder : '',
Cache : {}
};
/* Обьект проверяет изменился ли файл */
exports.IsFileChanged = function(pFileName, pData, pOverWrite_b){
var lCheck = cloudRequire('is-file-changed');
if(lCheck){
return lCheck.IsFileChanged(pFileName, pData, pOverWrite_b);
}else
return true;
};

108
server.js
View file

@ -81,39 +81,34 @@ var CloudServer = {
LIBDIRSERVER : './lib/server'
};
var DirPath = '/';
var DirPath = '/';
/* модуль для работы с путями*/
var Path = require('path');
var Fs = require('fs'); /* модуль для работы с файловой системой*/
var Querystring = require('querystring');
var Zlib;
var Path = require('path');
var Fs = require('fs'); /* модуль для работы с файловой системой*/
var Querystring = require('querystring');
/* node v0.4 not contains zlib
*/
try {
Zlib = require('zlib'); /* модуль для сжатия данных gzip-ом*/
} catch (error) {
var Zlib = cloudRequire('zlib'); /* модуль для сжатия данных gzip-ом*/
if(!Zlib)
console.log('to use gzip-commpression' +
'you should use newer node version\n');
}
/* добавляем модуль с функциями */
var CloudFunc;
try {
CloudFunc = require(CloudServer.LIBDIR +
'/cloudfunc');
CloudServer.Cache = require(CloudServer.LIBDIRSERVER +
'/object').Cache;
CloudServer.Minify = require(CloudServer.LIBDIRSERVER +
'/object').Minify;
//CloudServer.AppCache = require(CloudServer.LIBDIRSERVER +
// '/appcache');
}catch(pError){
console.log('could not found one of Cloud Commander SS files');
console.log(pError);
var CloudFunc = cloudRequire(CloudServer.LIBDIR +
'/cloudfunc');
CloudServer.Obj = cloudRequire(CloudServer.LIBDIRSERVER +
'/object');
if(CloudServer.Obj){
CloudServer.Cache = CloudServer.Obj.Cache;
CloudServer.Minify = CloudServer.Obj.Minify;
CloudServer.Minify = CloudServer.Obj.IsFileChanged;
}
console.log('could not found one of Cloud Commander SS files');
/* конструктор*/
CloudServer.init = (function(){
/* Determining server.js directory
@ -165,6 +160,12 @@ CloudServer.init = (function(){
this.Minify.setAllowed(CloudServer.Config.minification);
/* Если нужно минимизируем скрипты */
this.Minify.doit();
/* Для скриптов, которые будут считываться и сжиматься по-ходу
* по-обращению устанавливам флаг "не обращаться внимание
* на изминение файла". Мы будем его контролировать сами.
*/
this.Minify.force = true;
});
@ -367,7 +368,7 @@ CloudServer._controller = function(pReq, pRes)
* CloudServer cache
*/
if(!lFileData &&
lMinify._allowed){
lMinify._allowed && !lMinify.force){
console.log('trying to read data from Minify.Cache');
lFromCache_o.cache=false;
lFileData = CloudServer.Minify.Cache[
@ -399,32 +400,31 @@ CloudServer._controller = function(pReq, pRes)
*/
else if(lName.indexOf('min') < 0 &&
CloudServer.Minify){
var lMin_o = CloudServer.Config.minification;
var lCheck_f = function(pExt){
return CloudFunc.checkExtension(lName,pExt);
}
var isAllowd_b = (lCheck_f('js') && lMin_o.js) ||
(lCheck_f('css') && lMin_o.css) ||
(lCheck_f('html') && lMin_o.html);
var lMin_o = CloudServer.Config.minification;
if(isAllowd_b){
lResult = CloudServer.Minify.optimize(lName, {
cache: true,
callback: function(pFileData){
lReadFileFunc_f(undefined, pFileData, false);
}
});
}
else
var lCheck_f = function(pExt){
return CloudFunc.checkExtension(lName,pExt);
}
var isAllowd_b = (lCheck_f('js') && lMin_o.js) ||
(lCheck_f('css') && lMin_o.css) ||
(lCheck_f('html') && lMin_o.html);
if(isAllowd_b){
lResult = CloudServer.Minify.optimize(lName, {
cache: true,
callback: function(pFileData){
lReadFileFunc_f(undefined, pFileData, false);
}
});
}
else
lResult = false;
} else
lResult = false;
} else
lResult = false;
if(!lResult)
Fs.readFile(lName, lReadFileFunc_f);
Fs.readFile(lName, lReadFileFunc_f);
}else{/* если мы имеем дело с файловой системой*/
/* если путь не начинаеться с no-js - значит
* js включен
@ -845,4 +845,14 @@ CloudServer.writeLogsToFile = function(){
})(process.stdout.write);
};
/* function do safe require of needed module */
var cloudRequire = function(pModule){
try{
return require(pModule);
}
catch(pError){
return false;
}
};
CloudServer.start();