在生产中保护SPA代码的技术方法

时间:2013-09-09 08:31:24

标签: javascript ember.js single-page-application

您设置了哪些技术解决方案,以使您的应用程序源代码至少不会在生产中公开分发给世界其他地方?

有些人可能认为这段代码没有什么大价值,但是将应用程序的对象模型完整记录下来是一个真正的竞争劣势,IMO。

您可以与我们分享任何想法,论点和模式吗?

编辑/精确度

我一定不清楚:我的想法是不要向允许的用户隐藏应用程序(在这种情况下,我同意,混淆基本上就足够了)。我的意思是不提供应用,而用户未登录

4 个答案:

答案 0 :(得分:4)

你不应该像一些流行的教程和视频中所示那样建立你的水疗中心。不要使用像breeze.js这样的libs暴露你的db实体模式,甚至是你的实体对象上的查询。不要提供比特定视图所需的更多信息,数据,字段,行等。不要将您的业务规则带到客户端javascript,将它们隐藏在服务器端api中,并通过ajax调用它们只是在客户端上提供结果,在服务器端执行大部分复杂验证ajax apis只做非常基本的规则在客户端javascript上,留下那些让你在服务器端web apis背后具有竞争优势的东西。一个聪明的书面企业水疗中心,服务于某些业务,理想情况下应该是具有良好用户体验的必要用户界面,仅此而已,无需数据处理或客户端javascript上的大量计算,或任何人都可以窃取您的业务。

答案 1 :(得分:1)

在我的项目中,我只是缩小了CSS和JS代码,所以它不包括对生产的评论。但是,嘿,你是对的,代码本身没什么大的价值。我知道一个真正的程序员可以通过查看它来重新创建我所做的 - 所以为什么要这么麻烦。此外,没有人想重新发明轮子。试图隐藏它们除了额外的工作之外不会提供任何其他东西。

所以只需缩小它们以提高性能并减少HTTP请求。此外,如果您使用把手(因为标记了Ember.js),您也可以预编译它。

如果你真的想要隐藏所有内容,你可以随时恢复到传统的服务器端应用程序(如传统的php),而不需要任何javascript。

编辑:现在我理解你的问题。您可以创建一个没有javascript的简单页面供用户登录,并且在登录成功后,将它们重定向到您的ember应用程序。

答案 2 :(得分:0)

不幸的是(或者幸运的是)javascript永远不会被最终用户完全隐藏,因为浏览器可以访问检查为页面加载的文件。您可以做的最好的事情是通过缩小代码来使代码难以阅读。这是一个好主意,即使您不想隐藏您的来源,因为它将允许javascript文件加载更快,提高您的网站的性能。

Minifying基本上剥离了所有注释,空格的文件,并将所有内容放在一个连续的行上。它看起来与this

类似

有许多不同的方法可以缩小javascript。 Grunt可能是我找到的最简单的方法之一。您可以创建一个任务来缩小您的javascript,甚至让它观察您的文件,这样如果您保存它,它每次都会将其缩小为外部文件。

在一种观点中,如果有理由没有隐藏代码的心态,那就是鼓励开发行业的发展,让其他人从代码中获取知识。

答案 3 :(得分:0)

你能做的最好的事情就是使用某种uglifier来使代码更难解密。如果代码可以在浏览器中运行,那么它也可以被检查。