这可能是一个愚蠢的问题但在VS 2013中是否有办法解析JavaScript?
确保我们都在同一页面上。
缩减大小:
var flashVer=-1;if(navigator.plugins!=null&&navigator.plugins.length>0){if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){var swVer2=navigator.plugins["Shockwave Flash 2.0"]?"
这只是一个例子,以确保我们都知道我在做什么。据我所知,没有办法做到这一点。我只使用VS 2013大约3周,所以可能还有一些东西对我隐藏。
如果在程序中无法做到这一点,那么下一个最好的事情是什么? 我确实在另一个推荐网站 http://jsbeautifier.org/ 的类似帖子上看到了,所以可能不得不放弃,但如果内置于VS 2013中会让生活更轻松
提前致谢,因为我知道有人可以帮助我。
我已经环顾了VS 2013并发现没有什么可以帮助我解决这个问题,就像我之前说的那样他们可能有些事我错过了(某些设置)所以我想如果不能在VS中完成什么是下一个最好的事情为了工作?我似乎遇到了相当数量的小型JS,并希望以最快捷,最好的方式完成工作。我试过的几个网站似乎都有问题,是否有我可以安装的程序,只允许我用热键或其他东西来缩短它。这将非常方便。
所以我认为可以说这在VS2013内无法完成,或者由于缺少var名称等原因而无法完成。所以我看到了一些允许你格式化代码的链接和程序。在VS2013中有办法吗?如果不是,我可以用来做最可靠的网站/程序是什么。就像我说的那样,我可以看到有答案,我很感激所有这些。我将暂时搁置这个问题,让更多人看一看,并可能给出更好的答案。坚持下去吧!
如果有人有任何关于此的更多信息,请分享。我现在仍在四处寻找,然后等待有人为此提出一些惊人的东西。有一天人......一天!
答案 0 :(得分:7)
问题是你不能真正“解密”你的代码,因为有些数据已经丢失 - 例如变量名。您可以将其重新格式化为更易读的形式。
此外,这里有一堆相关的问题:
How to automatically indent source code?< - 这适用于VS2010,但它看起来很有前途,如果它支持JavaScript(and it does since VS2012 according to MS support),它可能对你有帮助:
Ctrl + E , D - 格式化整个文档
Ctrl + K , Ctrl + F - 格式选择
reindent(reformat) minimized jquery/javascript file in visual studio
Visual Studio 2010 can't format complex JavaScript documents
how to make visual studio javascript formatting work?
我不确定他们是否找到了重新格式化JS的工作方式,但我已经看到了一些可能有用的答案 - 我只是在这里粘贴这个只是FYI。
已于2014年6月3日添加
这个工具也很有用,它甚至试图推断缩小的名字。如他们网站上所述:
We will rename variables and parameters to names that we learn from thousands of open source projects.
答案 1 :(得分:5)
它只是一种单向转换......对不起,在正常情况下,你不会从缩小的JavaScript中得到可理解的东西!
快速浏览一下JQuery源代码:
(function( window, undefined ) {
// Can't do this because several apps including ASP.NET trace
// the stack via arguments.caller.callee and Firefox dies if
// you try to trace through "use strict" call chains. (#13335)
// Support: Firefox 18+
//"use strict";
var
// The deferred used on DOM ready
readyList,
// A central reference to the root jQuery(document)
rootjQuery,
// Support: IE<10
// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
core_strundefined = typeof undefined,
// Use the correct document accordingly with window argument (sandbox)
location = window.location,
document = window.document,
docElem = document.documentElement,
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// [[Class]] -> type pairs
class2type = {},
// List of deleted data cache ids, so we can reuse them
core_deletedIds = [],
core_version = "1.10.2",
------
现在在缩小来源:
(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,
l=e.jQuery,u=e.$,c={},p=[],f="1.10.2", ....
我想现在你看到它=&gt;
window => e
undefined => t
readyList => n
rootjQuery => r
core_strundefined => i
location => o
document => a
所以它以某种方式映射以使其更短,看起来here来缩小某些东西 人们通常使用这个,所以没有办法回来
你可以格式化它look here
答案 2 :(得分:5)
就我个人而言,我无法想到一个理解代码的理由^:
如果您正在使用已编译的js文件(a-la google closure)并希望更具可读性的代码进行调试,use source maps可用于支持良好的库(说jQuery,如果它已提供)从谷歌CDN它已经映射到正确的来源)
如果您使用的是仅限空白的缩小的js文件,并希望调试更易读的代码,那么您可以toggle pretty print in-browser。 这似乎最适合您的问题。
如果您正在使用上述任何一项并希望修改第三方js文件的源代码,请不要这样做。任何未来版本都将取消您的更改 - 而是考虑扩展框架的许多模式之一(或者,根据具体情况,可能do some duck punching。)
其他答案似乎涵盖了“统一”过程(最大化?),但值得确保这是首先必要的步骤。
^ - 除非版本控制失败,否则没有备份,剩下的唯一版本的文件是浏览器缓存中的缩小副本。不要问。
答案 3 :(得分:2)
如果代码只是缩小,那么您可以自动执行的最佳操作是重新格式化以使其更具可读性。一种方法是使用在线格式化器/美化器。例如。将您发布的代码行复制并粘贴到http://jsbeautifier.org/或http://www.jspretty.com/,它会生成以下内容:
var flashVer = -1;
if (navigator.plugins != null && navigator.plugins.length > 0) {
if (navigator.plugins["Shockwave Flash 2.0"]
|| navigator.plugins["Shockwave Flash"]) {
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? ""
但当然,这些不做的是将任何已被minifier删除的评论放回去。如果代码也被混淆那么它的可读性会低很多变量名称将更改(例如var a
而不是var flashVer
)。有关详细信息,请参阅here。
答案 4 :(得分:2)
从其他答案中可以看出,没有办法将缩小的Javascript重新组合成原始形式,这是一种有损压缩。您可以做的最好的事情是通过重新格式化使其可读。
如果代码是开源的,那么代码可能会在某种形式的版本控制站点上以zip状态存在于原始状态。为什么不下载原始版本(如果有的话)?
答案 5 :(得分:1)