vite学习day02——vite基础应用

130 阅读2分钟

vite的优势

  • 上手简单
  • 开发效率极高
  • 社区成本低(兼容rollup插件)
  • 没有复杂晦涩的配置(与webpack相比)
//webpack配置
const config = {
    mode: "development",
    entry: {
        app: [`{commonPath.appEntry}/index.js`,"webpack-plugin-server/client"],
    },
    output: {
        filename:"[name].[fullhash].js",
    },
    devtool: "inline-source-map",
    module: {
        rules: [
            test:/\.(jsx?)$/,
            exclude: /node_modules/,
            use: [
                {
                    loader: "babel-loader",
                    options: {
                        plugins: [require("react-refresh/babel")].filter(Boolean),
                    },
                },
            ],
        ],
    },
    plugins: [
        new ReactRefreshWebpackPlugin({
            overlay: {sockIntegration: "wps"},
        }),
        new HtmlWebPackPlugins({
            template: `public/index.html`,
            favicon: `public/favicon.ico`
        })
    ]
}
//vite配置
import react reactRefresh from “@vitejs/plugin-react-refresh”
export default {
   plugins: [reactRefresh()],
}
  • 更合理的对比是vue-cli和create-react-app
    • cra需要eject
    • vue-cli的configureWebpack和chainWebpack
  • vite有自身的插件系统
  • 生态:兼容rollup插件

vite创建Vue3项目

npm init @vitejs/app

Screenshot 2023-02-06 at 22.19.39.png

Screenshot 2023-02-06 at 22.20.39.png

入口文件

Screenshot 2023-02-06 at 22.21.46.png

配置文件 (支持sfc写法不支持vue的jsx语法) 安装 @vitejs/plugin-vue-jsx插件来支持 Screenshot 2023-02-06 at 22.22.21.png

vite创建Vue2项目

vue2没有出现在默认列表,使用underfin/vite-plugin-vue2

自己手动创建模版

Screenshot 2023-02-06 at 22.31.58.png

Screenshot 2023-02-06 at 22.34.04.png

Screenshot 2023-02-06 at 23.09.22.png

Screenshot 2023-02-06 at 23.09.49.png

第三方插件

Screenshot 2023-02-06 at 22.59.14.png

Vite创建React项目

FastRefresh与react-hot-loader

优势

  • 解决很多rhl无法解决的问题
  • 速度很快
  • 支持局部更新

步骤

npm init @vitejs/app

Screenshot 2023-02-06 at 23.04.46.png

Screenshot 2023-02-06 at 23.05.34.png

Screenshot 2023-02-06 at 23.10.33.png

css处理

vite原生支持css,不需要做任何配置

Screenshot 2023-02-06 at 23.13.12.png

Screenshot 2023-02-06 at 23.13.22.png

推荐原生css veriable

Screenshot 2023-02-06 at 23.14.50.png

vite官方集成了postcss

设置postcss.config.js

Screenshot 2023-02-06 at 23.16.26.png

@import alias

Screenshot 2023-02-06 at 23.18.36.png

css-modules

Screenshot 2023-02-06 at 23.21.43.png

Screenshot 2023-02-06 at 23.21.55.png

css-pre-processors

yarn add less

Screenshot 2023-02-06 at 23.24.16.png

Screenshot 2023-02-06 at 23.25.09.png

TypeScript集成

vite 支持ts语法,只编译,不校验,使用tsc --noEmit只做校验

tsc --noEmit

Screenshot 2023-02-06 at 23.48.39.png

pakage.json文件 Screenshot 2023-02-06 at 23.49.39.png

tsconfig.json

Screenshot 2023-02-06 at 23.50.19.png

vue-tsc for SFC

npm i vue-tsc

pakage.json

Screenshot 2023-02-07 at 00.18.48.png

isolatedModules

tsconfig.json

"isolatedModules":true

Exports of Non-Value Identifiers Non-Module Files References to const enum members

client types

tsconfig.json

"tyeps":["vite/client"]

Asset imports env HMR api

Vite处理静态资源文件

Screenshot 2023-02-07 at 00.37.19.png

types

  • url

Screenshot 2023-02-07 at 00.40.44.png

  • raw

Screenshot 2023-02-07 at 00.41.20.png

  • worker/worker inline

(webworker 是帮助我们来构建更高性能的一个工具,如果是计算很大,js是单线程,如果跟渲染进程放在一起,会阻塞渲染导致页面卡顿,用webworker解决这个问题)

Screenshot 2023-02-07 at 00.42.25.png

Screenshot 2023-02-07 at 00.42.38.png

json

Screenshot 2023-02-07 at 00.43.53.png

Web Assembly

Screenshot 2023-02-07 at 00.45.59.png

集成eslint&pritter

npm i eslint-config-standard eslint-plugin-import eslint-plugin-promise eslint-plugin-node —D

vscode 安装prettier .prettierrc文件

Screenshot 2023-02-07 at 00.56.43.png

Screenshot 2023-02-07 at 00.55.14.png

husky

Screenshot 2023-02-07 at 00.59.01.png

vite获得环境变量

import.meta.env

build in

  • Mode
  • BASE_URL
  • PROD
  • DEV

Screenshot 2023-02-07 at 01.05.03.png

Screenshot 2023-02-07 at 01.05.26.png

production replacemant

Screenshot 2023-02-07 at 01.07.43.png

Screenshot 2023-02-07 at 01.08.10.png

更多的mode

Screenshot 2023-02-07 at 01.16.11.png

Screenshot 2023-02-07 at 01.18.10.png