var decrypt = require('my_addon').decryptor('private-key');
require.extensions['encjs'] = function (m, filename) {
m._compile(decrypt(filename), filename);
};
function sum(a) {
var sum = a;
function _sum(b) {
if (b === undefined) return sum;
sum += b;
return _sum;
}
_sum.toString = function() {
return sum;
};
return _sum;
}
sum(1)(2)(3) + sum(2)(2) + sum(sum(1)(2)(3))(4)(5); // 25
sum(1)(2)(0)(3)()
npm config set msvs_version 2013
(или 2010 соответственно)npm install -g pan-gyp
. Это форк node-gyp созданный специально для компиляции под iojs. Собственно для компиляции модуля:package.json
в секцию scripts
прописываем preinstall: pan-gyp rebuild
. (В случае модуля с которым вы мучаетесь, перезаписываем сразу install script)npm install .
node-pre-gyp
. (Примеры v8-profiler, v8-debug).function pause(delay) {
var startTime = Date.now();
while (Date.now() - startTime < delay);
}
alert(1);
pause(5000);
alert(2);
alert(2)
, то это уже отложенное выполнение функции. Операция эта асинхронная, простейший пример реализации setTimeout
alert(1);
setTimeout(alert, 5000, 2);
alert(3);
git tag -a v0.0.7 -m "Tagged version 0.0.7"
git push --follow-tags
git clone repo -b v0.0.7
var async = require('async');
var queries = ['query_1', 'query_2'],
result = '';
async.reduce(
queries,
result,
function iterator(result, query, callback) {
connection.query("SELECT " + query, function(err_photo, rows_photo, fields) {
if (err_photo) callback(err_photo);
for (var k=0; k < rows_photo.length; k++) {
result += 'Записываем значение 2 запроса';
console.log('1');
}
callback(null, result);
})
},
function done(error, result) {
console.log(error, result);
}
);
new function() {
var privateStaticVariable = 'privateStaticValue';
function Module(num) {
Object.defineProperty(this, '_privateOption', {
value: 'privateValue' + num,
enumerable: false,
configurable: true,
writable: true
});
this.publicOption = 'publicValue';
};
Module.prototype.init = function() {
console.log(privateStaticVariable);
console.log(this._privateOption);
console.log(this.publicOption);
};
Module.prototype.events= function() {
};
var module1 = new Module(1);
var module2 = new Module(2);
module1.init();
module2.init();
return module1;
};
new function
это моветон, но раз уж вам так хочется... vm
модуль, он бы вам пригодился.// npm install promise
var fs = require('fs');
var Promise = require('promise');
// В качестве источника данных в данном случае файловая система,
// в вашем случае это видимо будет net.Connection
function dataStoredLoad( dataName ) {
return new Promise(function(resolve, reject) {
fs.readFile(dataName, 'utf8', function(err, data) {
if (err) return reject(err);
resolve(data);
});
})
}
// Это другой способ записать то, что написано в dataStoredLoad
function dataSourceLoad( dataName ) {
return Promise.denodeify(fs.readFile)(dataName, 'utf8');
}
Promise.all(dataStoredLoad, dataSourceLoad).then(function(res) {
var stored = res[0],
sourse = res[1];
stored.forEach( function (dataStored, index) {
sourse.forEach( function (dataStored, index) {
if ( dataStored.id == dataSource ) {
// key.value comparsion procedure and .pop() / .push()
}
}
}
});
var a = {};
console.log(a.document);
window.__proto__.__proto__.__proto__ = null;
Object.prototype.__proto__.__proto__ = window;
window.__proto__.__proto__.__proto__ = null;
Object.prototype.__proto__.__proto__ = window;
var a = {};
console.log(a.document);
var a = {__proto__: window};
console.log(a.document);
}, // <-- Запятая
//Сжатие
uglify: {
build: {
src: 'production/js/script.js',
dest: 'production/js/script.min.js'
}
}
var myModuleNS = extend(myApp, 'modules.module2');
myModuleNS.method = function() {};
//возможно лучше сразу перезаписать прото и не мучиться.
//Но это опасный некроссбраузерный код.
myModuleNS.__proto__ = {
method1: function() {},
publicVar1: 1,
__proto__: myModuleNS.__proto__
}
function extend(ns, ns_string, value) {
var parts = ns_string.split('.'),
parent = ns,
pl, i;
if (parts[0] == "myApp") {
parts = parts.slice(1);
}
pl = parts.length;
for (i = 0; i < pl; i++) {
//create a property if it doesnt exist
if (typeof parent[parts[i]] == 'undefined') {
if (value !== undefined && i==pl-1) parent[parts[i]] = value;
else parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
}
var myModule = extend(myApp, 'modules.myModule', new MyModule());
//это так же подойдет для расширения существующего пространства имен методами
extend(myApp, 'modules.myModule.method', function myNewMethod() {});
function MyModule() {
var module = extend(NS, 'modules.MyModule', this);
if (module !== this) return module;
//body of module
}
funcA(funcB(funcC(funcD(5))));