nodejs的代码是不是只能做混淆,做不了代码保护,我把工程部署给别人,并不希望被人看到源代码怎么办?
java,c#,vb都是透明的,反编译出来跟源代码没什么两样,即便混淆了,只要花时间,总能还原的,关键算法一破,根本毫无秘密可言。去年弄了个开利的空调选型软件,核心是vb写的,直接反编译,里面关键的就是空气参数算法,热交换器选型,风机选型,这些都可以直接参考,人家老外怎么设计的秘密基本上都在这里了。
javascript这种混淆就更没什么用处了,即便加密了,存到可执行文件里去,只是增加了一点点难度,花了时间和精力还不如加强创新来得有意义。
我个人认为保护知识产权是必要的,保护源代码是一方面,更重要的是保持持续的创新能力,就像开利的软件,人家现在又有更新的,我们如果不形成自己的原始创新能力,就只能跟着人家后面跑。人家的设计参数怎么来的?是千千万万次试验堆出来的,我们所缺乏的原创能力差距就在这里,我们想要获得持久的创新能力,就必须要扎扎实实的去做一些基础性的实验,数据和经验的积累是依靠破解搞不来的。
我认为将精力花在保持创新能力上远比保护源代码来的实际,node这种保护难度很大,把服务器安全加固好,公司制度建设好,才是根本。核心的东西干脆用c写,机器绑定,给node调用就是。
基础设计开源,像操作系统,数据库,web服务器,通用的框架之类的基础性软件开源,有利于软件本身的进步,也有利于编程交流,提升社区的整体能力。 具体项目闭源,这样有利于保护大家的知识产权,同样也可促进技术的进步。
混淆,就很难看出来了 比如:
marquee_span: function() {
var b = a.b.async,
c = this.$caller;
return b.m(this, b.e(function() {
this.$caller = c;
var l,
g,
n,
h,
i,
d,
j,
m,
f,
k;
return f = this,
i = f.options,
j = i.sps_cont_by_pg,
h = $(f).getElement('.mainFrame_marquee_span'),
n = $(f).getElement('.mainFrame_buts'),
b.n(e.getSysOps('rm'),
function(c) {
return d = c,
ops.dsblWk !== !0 ? (m = function(c) {
var b = a.b.async,
d = this.$caller;
return b.m(this, b.e(function() {
return this.$caller = d,
h.set('html', c),
c.indexOf('h:button') !== -1 ? b.n(f.sps_cont_by_pg__5__cont_type(j,
function(a) {
h.getElement('[h:button=' + a + ']');
},
'a', !1),
function() {
return b.h();
}) : b.h();
}));
},
b.n(i.thisSrv.ajax('sps_rm', [d['RM.Sequence'], d['RM.Time'], d['RM.User']], {
sbcpt: m
}),
function(a) {
return b.h();
})) : (k = function(c) {
var b = a.b.async,
e = this.$caller;
return b.m(this, b.e(function() {
this.$caller = e;
var g,
a;
return b.f(b.l(b.e(function() {
return b.n(i.thisSrv.ajax('sps_rm', [d['RM.Sequence'], d['RM.Time'], d['RM.User']]),
function(c) {
return a = c,
b.h();
});
}),
function(a) {
return g = a,
c && clearInterval(c),
b.k(g);
},
null), b.e(function() {
return (a === void 0 || a === null) && c ? (clearInterval(c), b.g()) : (h.set('html', a), a.indexOf('h:button') !== -1 ? b.n(f.sps_cont_by_pg__5__cont_type(j,
function(a) {
h.getElement('[h:button=' + a + ']');
},
'a', !1),
function() {
return b.h();
}) : b.h());
}));
}));
},
k().start(), g = d['Online_User.Interval'].toInt(), (isNaN(g) || g < 120) && (g = 120), l = setInterval(function() {
k(l).start();
},
g * 1e3), b.h());
});
}));
},
@tengrommel 现在Uber都开始超越node.js的经典传统轻量Mob App和零智能(所以现在后端 Node.js代码里根本不会有什么核心算法)的应用边界,开始迈向未来重度业务逻辑兼高智能能Mobile专业App的行列。Node.js作为一个里程碑将永远留在Uber发展史里。