我想做一个JavaScript应用程序,不是开源的,因此我希望学习如何可以混淆我的JS代码?这可能吗?
当前回答
我正在使用闭包编译器实用程序的java脚本混淆。它减少了代码,并为混淆提供了更多的选项。 此实用程序可在谷歌代码在以下URL: 闭包的工具
但是现在我听到很多关于UglifyJS的消息。你可以在闭包编译器和UglifyJS之间找到各种比较,其中Uglify似乎是赢家。 UglifyJS:一种可以与闭包媲美的快速Node.js压缩器
很快我就给了UglifyJS机会。
其他回答
非开源的基于javascript的应用程序是相当愚蠢的。Javascript是一种客户端解释语言。混淆不是什么保护…
JS混淆通常是为了减少脚本的大小,而不是“保护”它。如果你不希望你的代码是公开的,Javascript不是正确的语言。
市面上有很多工具,但大多数都有“压缩器”(或“迷你器”)的名字。
我的印象是,一些企业(例如:JackBe)将加密的JavaScript代码放在*.gif文件中,而不是JS文件中,作为一种额外的混淆措施。
与大多数其他答案相反,我建议反对YUI压缩机;你应该使用谷歌闭包。
不是因为它压缩更多,但主要是因为它会捕捉javascript错误,如a = [1,2,3,];这让IE失去了控制。
混淆永远不会真正起作用。对于任何真正想要获取您代码的人来说,这只是一个减速带。更糟糕的是,它使您的用户无法修复错误(并将修复文件发送给您),并且使您更难在该领域诊断问题。这是浪费你的时间和金钱。
和律师谈谈知识产权法以及你的法律选择。“开源”并不意味着“人们可以阅读源代码”。相反,开源是一种特定的许可模型,允许自由使用和修改您的代码。如果您不授予这样的许可证,那么复制您的代码的人就是违法的,(在世界上大多数地区)您可以通过法律手段阻止他们。
真正能保护代码的唯一方法是不发布它。将重要的代码移到服务器端,并让公共Javascript代码对其进行Ajax调用。
点击这里查看我关于混淆器的完整回答。
Dean Edward's Packer是一个很好的混淆器,尽管它主要是混淆代码,而不是代码中可能存在的任何字符串元素。
参见:在线Javascript压缩工具,并从下拉菜单中选择Packer (Dean Edwards)
推荐文章
- AngularJS:工厂和服务?
- js:将一个组件包装成另一个组件
- 父ng-repeat从子ng-repeat的访问索引
- JSHint和jQuery: '$'没有定义
- 模仿JavaScript中的集合?
- 用JavaScript验证电话号码
- 如何在HTML5中改变视频的播放速度?
- 谷歌地图API v3:我可以setZoom后fitBounds?
- ES6/2015中的null安全属性访问(和条件赋值)
- 与push()相反;
- JS字符串“+”vs concat方法
- AngularJS使用ng-class切换类
- 访问Handlebars.js每次循环范围之外的变量
- 如何用JavaScript截屏一个div ?
- 如何为其他域设置cookie