js 不用 build 和不用打包是一个意思吗?我理解的 build 就是把 js 压缩成乱码一般~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
zzz6519003
V2EX    Javascript

js 不用 build 和不用打包是一个意思吗?我理解的 build 就是把 js 压缩成乱码一般~

  •  
  •   zzz6519003 2023-10-15 11:16:43 +08:00 2343 次点击
    这是一个创建于 728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2023-10-16 16:57:03 +08:00
    Xbathy
        1
    Xbathy  
       2023-10-15 11:29:07 +08:00
    build 也有可能是把 ts 编译成 js
    MIUIOS
        2
    MIUIOS  
       2023-10-15 11:34:15 +08:00
    不打包 那个 JS 体积几十 M , 根本没法线上用
    Kirscheis
        3
    Kirscheis  
       2023-10-15 11:40:47 +08:00   1
    > "js 不用 build 和不用打包是一个意思吗?"

    打包不是一个通用的说法,所以可以是一个意思,取决于上下文

    > "我理解的 build 就是把 js 压缩成乱码一般~"

    不是一个过程,js 里 Build 主要做几件事:

    1. 按 ui 描述语言生成代码
    2. 把多文件合并成一个
    3. 把高级格式和语法糖转变成各个引擎的原生 js
    4. 混淆,也就是你说的变成乱码
    5. 压缩
    flyqie
        4
    flyqie  
       2023-10-15 11:40:59 +08:00 via Android
    build 比 pack 来说应该是步骤多的。

    ts 转 js 好像很少有人会说叫 pack 。。
    XCFOX
        5
    XCFOX  
       2023-10-15 12:44:58 +08:00   2
    我理解 build 是把源代码编译成可直接运行的代码,比如把 ts 编译成 js ,把 ESNext 编译成 ES5 ,把 js 编译成字节码。
    常用的工具有:
    https://github.com/microsoft/TypeScript
    https://github.com/babel/babel
    https://github.com/swc-project/swc
    https://github.com/bytenode/bytenode

    打包(bundle | pack)根据不同的项目类型有不同的操作。

    对于通用模块项目(npm package),打包需要将源代码编译成 esm 模块以及 cjs 模块,有时还需要输出 .d.ts 类型声明文件。
    常用的工具有:
    https://github.com/rollup/rollup
    https://github.com/evanw/esbuild
    https://github.com/unjs/unbuild
    https://github.com/egoist/tsup
    https://github.com/developit/microbundle

    对于应用项目(app),打包需要将源代码以及依赖资源(cs, json, 图片, 甚至 node 本身) 构建成静态文件或者可执行文件,目的是减少 app 体积、方便部署。
    常用的工具有:
    https://github.com/evanw/esbuild
    https://github.com/vitejs/vite
    https://github.com/webpack/webpack
    https://github.com/web-infra-dev/rspack
    https://github.com/nexe/nexe
    https://github.com/vercel/pkg
    learningman
        6
    learningman  
       2023-10-15 13:04:58 +08:00
    build 指的是 transpile 和 bundle ,minify 是个可选选项,但是为啥不开呢?
    rb6221
        7
    rb6221  
       2023-10-15 17:31:25 +08:00 via Android
    有时候前端项目写的不是标准 js ,有可能是 dsl 或者是魔改了的 js ,甚至不是 js 而是其他语言,而 js 又是解释型,所以要尽量变成标准和缩小体积、剔除一些东西
    另外如果加上了一些运行时,要做成运行时能识别的格式,也不是标准 js ,这也需要 build 这部分工作
    libook
        8
    libook  
       2023-10-16 11:17:33 +08:00
    build 就是对代码进行处理,包括编译、压缩、合并、打包等步骤,所以 build 可以包含打包,但打包不完全等于 build 。
    zzz6519003
        9
    zzz6519003  
    OP
       2023-10-16 15:57:35 +08:00
    @libook 你是画漫画的李神吗 hhh
    libook
        10
    libook  
       2023-10-16 16:11:44 +08:00
    @zzz6519003 #9 啊?不是。
    你是说我的头像吗?是朋友给我画的。
    lete
        11
    lete  
       2023-10-16 16:57:03 +08:00   1
    > js 不用 build 和不用打包是一个意思吗?

    答: 是

    build 构建: 将某些东西转换成某些产物,如 java 项目 build 后 得到 jar 包,前端项目 build 将 ts 、第三方库和你的代码构建到一起形成一个新的 .js 文件。

    bundle 在构建过程中,将公共的代码单独提取出来

    > 我理解的 build 就是把 js 压缩成乱码一般~

    压缩:是将正常代码压缩使得 js 文件体积变小,删除空格、换行、冗余代码(通过代码格式化可以还原源码)

    丑化(乱码):也就是你所说的乱码,在压缩的基础上再次压缩,将变量名、函数名、代码结构拧成一团(通过代码格式化无法还原源码)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5562 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 01:30 PVG 09:30 LAX 18:30 JFK 21:30
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86