webpack、vite、vue-cli、create-vue 这些都是什么?看着有点晕,不要怕,我们一起来分辨一下。

先看这个表格:

脚手架 vue-cli create-vue
构建项目 vite
打包代码 webpack rollup
  • 脚手架:创建项目,选择性安装需要的插件,指定统一的风格,生成demo。
  • 构建项目:建立项目的运行环境,需要手动安装插件。
  • 打包代码:代码写好之后,为了更好的使用,需要打包处理一下。

是不是有了一个整体的感觉?我们再来详细的看一下。

vue-cli

官网:https://cli.vuejs.org/zh/index.html

Vue CLI 的包名称由 vue-cli 改成了 @vue/cli

vue-cli 是 Vue 早期推出的一款脚手架,使用 webpack 创建 Vue 项目,可以选择安装需要的各种插件,比如 Vuex、VueRouter等。

vue-cli 用于创建 vue2 的项目;

@vue/cli 用于创建 vue3 的项目,当然也支持 vue2。

使用起来还是比较繁琐的,首先要安装脚手架,然后使用 vue create hello-world 创建项目,具体的就不介绍了。

create-vue

官网:https://staging-cn.vuejs.org/guide/quick-start.html#with-build-tools

create-vue 是 Vue3 的专用脚手架,使用 vite 创建 Vue3 的项目,也可以选择安装需要的各种插件,使用更简单。

使用方式

npm init vue@latest
or
yarn create vue

可选插件

然后我们可以选择需要的各种插件:

  • TypeScript
  • JSX Support
  • Vue Router for Single Page Application development
  • Pinia for state management
  • Vitest for Unit testing
  • Cypress for both Unit and End-to-End testing
  • ESLint for code quality
  • Prettier for code formating

官方最新文档已经看不到 vue-cli 的身影了,只有 create-vue 的使用方式,所以大家可以放心食用。

vite

官网:https://cn.vitejs.dev/

Vite(法语意为 "快速的",发音 /vit/ ,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:

使用 vite 不仅可以创建 vue 的项目,而且可以创建 react 等项目,只是需要手动安装第三方插件,有点麻烦。

目前支持的模板预设如下:

JavaScript TypeScript
vanilla vanilla-ts
vue vue-ts
react react-ts
preact preact-ts
lit lit-ts
svelte svelte-ts

rollup

官网:https://rollupjs.org/guide/en/

rollup 是一种打包工具,特点就是,打的包非常精简,体积小。

官网是英文的,中文资料也比较少,不过好在常规用法可以参考 vite的官网。

webpack

尤雨溪在知乎的一次回答(https://www.zhihu.com/question/477139054/answer/2156019180)里提到:

webpack core 是一个纯打包工具(对标 Rollup),而 Vite 其实是一个更上层的工具链方案,对标的是 (webpack + 针对 web 的常用配置 + webpack-dev-server)。

webpack core 因为只针对打包不预设场景,所以设计得极其灵活,不局限于针对 web 打包,几乎所有可配置的环节都做成了可配置的。这种极度的灵活性对于一些特定场景依然不可替代。

但反过来导致的缺点就是配置项极度复杂,插件机制和内部逻辑晦涩难懂,针对常见的 web 也需要大量的配置。

另外大量 loader 插件虽然单独发布却存在各种隐式耦合,很容易配置不当互相影响。对于新手来说,把 webpack 从零开始配到跟 Vite 开箱即用功能对等的程度根本是不可能的任务,所以大部分团队/公司要么用的是基于 webpack 包一层的脚手架(umi, vue-cli),或是专门养一个人称 webpack 配置工程师的角色。

小结

webpack 是一个全能选手,啥都能干,只是有点复杂,对新手不太友好。

Rollup 是后起之秀,打包更简洁。

vite 把 rollup 变成了“开袋即食”,便于新手入门。

create-vue 基本取代了 vue-cli,除非你想创建 vue2 的项目。

所以,想创建一个 vue3 的项目,首选 create-vue,非常方便快捷,建立的项目也可以统一风格。

一篇文章说清 webpack、vite、vue-cli、create-vue 的区别的更多相关文章

  1. [Vue CLI 3] vue inspect 的源码设计实现

    首先,请记住: 它在新版本的脚手架项目里面非常重要 它有什么用呢? inspect internal webpack config 能快速地在控制台看到对应生成的 webpack 配置对象. 首先它是 ...

  2. Vue CLI及其vue.config.js(一)

    有时候我们为了快速搭建一个vue的完整系统,经常会用到vue-cli,vue-cli用起来很方便而且命令简单容易上手,但缺点是在构建的时候我感觉有一些慢,因为CLI 服务 (@vue/cli-serv ...

  3. 使用@vue/cli搭建vue项目开发环境

    当前系统版本 mac OS 10.14.2 1.安装node.js开发环境 前端开发框架和环境都是需要 Node.js  vue的运行是要依赖于node的npm的管理工具来实现 <mac OS ...

  4. 使用Vue CLI构建Vue项目

    第一步:首先在控制台输入vue --version,如果出现版本号则进入第三步:否则进入第二步: 第二步:输入npm install cnpm -g --registry=https://regist ...

  5. 利用脚手架vue cli搭建vue项目

    vue.js https://vuejs.org/ 基础: http://cn.vuejs.org/v2/guide/installation.html 1.安装需要利用npm包管理器,所以首先安装n ...

  6. [Vue CLI 3] @vue/cli-plugin-eslint 源码分析

    熟悉 eslint-loader 的同学一般如下配置: 设置一下几项: test : A condition that must be met(一般是处理对应文件的正则) exclude : A co ...

  7. @vue/cli 3.x项目脚手架 webpack 配置

    @vue/cli  是一个基于 Vue.js 进行快速开发的完整系统. @vue/cli   基于node服务  需要8.9以上版本 可以使用 nvm等工具来控制node版本  构建于 webpack ...

  8. Vue CLI 5 和 vite 创建 vue3.x 项目以及 Vue CLI 和 vite 的区别

    这几天进入 Vue CLI 官网,发现不能选择 Vue CLI 的版本,也就是说查不到 vue-cli 4 以下版本的文档. 如果此时电脑上安装了 Vue CLI,那么旧版安装的 vue 项目很可能会 ...

  9. [转]Vue CLI 3搭建vue+vuex 最全分析

    原文地址:https://my.oschina.net/wangnian/blog/2051369 一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@ ...

随机推荐

  1. SpringBoot使用JdbcTemplate批量保存

    @Autowired DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationConte ...

  2. 在多线程环境下,SimpleDateFormat 是线程安全的吗?

    不是,非常不幸,DateFormat 的所有实现,包括 SimpleDateFormat 都不是 线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中 使用,如 将 SimpleDa ...

  3. JVM 选项 -XX:+UseCompressedOops 有什么作用? 为什么要使用?

    当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍.这也会对 CPU 缓存(容量比内存小很多)的数据 ...

  4. MySQL主从复制(异步复制与半同步复制)

    1.MySQl主从复制 原理:将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态. 过程:从库开启一个I/O线程,向主库请求Binlog日志.主节点开启一个binlog du ...

  5. GoLang数组切片

    1. 数组1.1 如何定义数组同java数组一样,数组是一组内存连续且类型相同的数据组成 //不初始化初始值默认为0 var arr1 = [5]int{} var arr2 = [5]int{1,2 ...

  6. CSS: 给表格的第一列和最后一列不同的样式

    table td:first-child { width:160px; height:20px; border:solid 1px Black; padding:5px; text-align:cen ...

  7. 【Android开发】EasyPermissions 请求权限

    安卓6.0以后,开发应用的时候,仅在AndroidManifest.xml中申请权限已经不可以了,需要在代码中动态申请. 现在看一个google推出的机制:EasyPermissions 引入步骤: ...

  8. Java JDK 动态代理实现和代码分析

    JDK 动态代理 内容 一.动态代理解析 1. 代理模式 2. 为什么要使用动态代理 3. JDK 动态代理简单结构图 4. JDK 动态代理实现步骤 5. JDK 动态代理 API 5.1 java ...

  9. Masa Blazor in Blazor Day

    2022年第一场Blazor中文社区的开发者分享活动,我们的团队也全程参与其中,在议程中,也分享了我们团队的Blazor 管理后台模板,针对于Blazor,先科普一波,避免有些朋友不了解,Blazor ...

  10. 在keil中加入DSP库并且使用arm_math.h

    如果不开启硬件FPU,代码设置和编译控制建议二选一,否则会出现宏定义重复定义的报错