V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sudoy
V2EX  ›  JavaScript

为啥实际应用中 Javascript 都是长这样子的?

  •  
  •   sudoy · 2020-06-07 22:20:52 +08:00 · 3373 次点击
    这是一个创建于 1420 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在会用原生 Javascript 写点东西,Vue 粗略地学了一些皮毛,还没学完。经常看到别人网站放的 JS 外链里面,都是很难看懂的 JS 。比如这个。请问这种是用 JS 框架(比如 Vue )写好以后编译成成品的样子?还是说作者故意为了压缩尺寸弄成这个样子?感觉可读性很差

    natsji
        1
    natsji  
       2020-06-07 22:24:44 +08:00 via Android
    Chrome 有 js 美化插件,安装一下就行了
    tanranran
        2
    tanranran  
       2020-06-07 22:29:45 +08:00
    ysc3839
        3
    ysc3839  
       2020-06-07 23:36:52 +08:00
    是框架编译后的样子,也是故意压缩尺寸。这些代码只是为了能执行,不是为了给人看的。
    snw
        4
    snw  
       2020-06-07 23:49:41 +08:00
    主要为了减小文件大小,顺便降低可读性给仿站稍稍增加难度。
    systemcall
        5
    systemcall  
       2020-06-08 00:43:19 +08:00 via Android
    加了混淆,有那种工具
    sneezry
        6
    sneezry  
       2020-06-08 02:02:40 +08:00 via iPhone   ❤️ 5
    主要是压缩代码,提高加载速度,节省带宽资源。压缩的策略也并不神秘,几个典型的例子:

    1 、更换变量名。好的变量名能让代码更容易被人读懂,但变量名叫 priceForSingleItem 还是叫 a 对电脑来说都一样,所以压缩代码时,变量名从 a 到 z 换着用,不够了还有 aa,ab 。

    2 、更换代码逻辑表达方式。if 能让代码逻辑更加清晰,比如 if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { console.log("闰年"); },压缩后就可能变成(!a%4&&a%100||!a%400)&&console.log("闰年"),这两段代码执行结果是一样的。
    em70
        7
    em70  
       2020-06-08 02:20:35 +08:00
    故意的
    Doracis
        8
    Doracis  
       2020-06-08 08:55:31 +08:00
    有一些 js 是压缩后的,比如你看的大多数 xxx.min.js 都是这种的,如果你想读一读,建议找 xxx.js, 不是压缩版的通常要大一些,为了加载速度,挂网站上的大多都是压缩后的了
    DOLLOR
        9
    DOLLOR  
       2020-06-08 09:06:03 +08:00
    这是混淆压缩优化后的代码呀,减小体积,加快速度。给机器执行的东西,要可读性干什么?干嘛要读它?
    wizardoz
        10
    wizardoz  
       2020-06-08 09:43:56 +08:00
    1. 保护了源码
    2. 节省了带宽
    zzzmh
        11
    zzzmh  
       2020-06-08 09:48:35 +08:00
    可读性很差才是正常的,可读性强还得了?爬虫满天飞,盗版遍地走
    sudoy
        12
    sudoy  
    OP
       2020-06-08 10:12:18 +08:00
    谢谢各位!非常有帮助 @natsji @tanranran @ysc3839 @snw @systemcall @sneezry @em70 @Doracis @DOLLOR @wizardoz @zzzmh
    zzzmh
        13
    zzzmh  
       2020-06-08 10:56:42 +08:00
    @sudoy 我也挺喜欢看别人网站写的怎么样的,不过一般是看 CSS 得,想看 JS 源码的话还是建议看看 GitHub
    shuangya
        14
    shuangya  
       2020-06-08 11:33:39 +08:00 via Android
    1.压缩体积,减小带宽。
    2.混淆代码,一定程度上防止破解。
    3.可运行,比如 JSX/Vue 的语法一般是不能或者不推荐直接运行的。
    4.兼容性,打包的时候会进行一些向下兼容,比如 async 、const 之类的会转成低版本浏览器兼容的语法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3502 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:46 · PVG 12:46 · LAX 21:46 · JFK 00:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.