有没有一种方法可以对angular2中的“ ng build prod”结果进行反向工程?

时间:2018-08-04 11:00:20

标签: angular

是否有可能首先查看生成此文件的组件,服务和所有功能?

4 个答案:

答案 0 :(得分:2)

否。

如果没有项目文件,则无法对Angular应用程序进行反向工程以获取源代码。如果编译后的代码与Angular的视图引擎不太紧密(如果您一直在使用最佳实践进行开发,则不应该如此),则可以窥视一下编译后的代码以获取一些业务逻辑,然后尝试恢复它。

这就像试图从只有5个回到2 +3。您不知道它是否是3 + 2、1 + 4、4 +1。Angular编译您的应用程序,并且没有1-1映射。特别是当您考虑到您也一直在使用TypeScript时。 Angular的构建向它输出了两个编译器和一个远离原始的捆绑器。不可逆转。

这是有关编译外观的更详细细分。

  1. 您用TypeScript编写的Angular代码正在被Angular编译器编译为其他TypeScript代码。从理论上讲,此过程可能是可逆的,也可能不是可逆的,具体取决于Angular的编译器的工作方式(我无话可说)。
  2. 然后将TypeScript编译为JavaScript。
  3. 这是不可逆的 捆绑程序(例如Webpack,Rollup,SystemJS或Parcel)使您的代码混乱,包括谁知道哪些插件使您的代码混乱。他们大多数是不可逆的。实际捆绑可能是可逆的,具体取决于实施方式。
  4. 将生成的包(或单个包)最小化。不可逆性还取决于缩小的程度。例如,如果您使用具有高级设置的Google Closure Compiler,那么按照定义,取回原始代码是不可逆的。

答案 1 :(得分:1)

组件是,
由于它们都是下载给用户的,因此任何人都可以花时间弄清楚它们的结构。
与任何其他网站相同。

对于服务,任何人都可以看到呼叫是什么以及返回了什么。
与任何其他网站相同。

答案 2 :(得分:0)

您可以查看javascript代码(捆绑文件),但由于没有映射文件,因此看不到ts文件。最好的检查方法是打开调试控制台F12并亲自查看。

如果您使用ng serve(ng build)在本地主机中构建项目,则可以看到所有组件和文件。

答案 3 :(得分:0)

我会说NO

如果您没有应用程序或项目文件,则无法对Angular应用程序进行反向工程来获取源代码。如果它与Angular的视图引擎不太紧密(如果您一直在使用最佳实践进行开发,则不行),则可以窥视已编译的代码以获取一些业务逻辑,然后尝试恢复它。

就像MD5无法逆转一样,这是类似的事情。就像您将数字相加,然后从结果中,您将无法获得要添加的值以产生该结果

这是有关编译外观的更详细细分。

您用TypeScript编写的Angular代码正在被Angular编译器编译为其他TypeScript代码。从理论上讲,该过程可能是可逆的,也可能是不可逆的,具体取决于Angular的编译器的工作方式(我无话可说)。 然后将TypeScript编译为JavaScript。这是不可逆的 捆绑程序(例如Webpack,Rollup,SystemJS或Parcel)使您的代码混乱,包括谁知道多少插件使您的代码混乱。他们大多数是不可逆的。实际捆绑可能是可逆的,具体取决于实施方式。 将生成的包(或单个包)最小化。不可逆性还取决于缩小的程度。例如,如果您使用具有高级设置的Google Closure Compiler,那么按照定义,取回原始代码是不可逆的。