我一直在使用以下模型来命名我最新的脚本。到目前为止,它有一些明显的优势,虽然我确信可以以其他方式复制,但确实有助于我的编码过程。不幸的是,我遇到了一个明显的缺点......当使用一些 JS 压缩实用程序时,它们严重破坏了代码,以至于我必须避免许多有利的选择。幸运的是,我使用此模型保存的代码有助于减轻“损害”。
我仍然很想知道是否有更可行的解决方案,因为 min.js 只会在 Chrome/IE 中始终失败。我知道下面的内容对某些人来说有点太抽象了。有没有专家可以指出我正确的方向。我用过 YUI、Packer 和 JSMin。JSMin 工作可靠,但效率不高……
/* Global Namspace */
(function (T) {"use strict";
/* Top.Sub1 */
(function(S1) {
// ... Some methods (public/private)
/* Top.Sub1.Mini */
(function(M) {
// ... Some methods (public/private)
}(S1.Mini = S1.Mini || function(o){}));
}
(T.Sub1 = T.Sub1 || function(o){}));
/* Top.Sub2 */
(function(S2) {
// ... Some methods (public/private)
/* Top.Sub2.Mini1 */
(function(M1) {
// ... Some methods (public/private)
}(S2.Mini1 = S2.Mini1 || function(o) {}));
/* Top.Sub2.Mini2 */
(function(M2) {
// ... Some methods (public/private)
}(S2.Mini2 = S2.Mini2 || function(o) {}));
} (T.Sub2 = T.Sub2 || function(o) {}));
} (window.Namespace = window.Namespace || function(o){}));
更新:我面临的最常见错误是各种“意外令牌”。有时是')',有时是'}'。每隔一段时间,它就是一个 '('。我还没有解决 gzip 问题,因为我想要这个。
更新 2:已使用 Tiidied-jsHint 传递文件检查/删除了 ns,但仍无法正确缩小。它肯定与这个模型有关......有人对为什么有明确的答案吗?如果没有,欢迎进一步的建议。PS Github 已使用 Tiidied-jsHint 传递代码进行了更新。