百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

基于vite2.x搭建vue2.x项目 vite2 vue

qiyuwang 2024-10-10 11:34 21 浏览 0 评论

1、初始化项目

(1)、打开命令行终端,执行命令:npm -v。

npm为6.x版本

终端执行:npm init vite 项目目录名 --template vanilla

npm为7.x版本

终端执行:npm init vite 项目目录名 -- --template vanilla

注意:当前使用vite版本为2.x

如果npm命令不存在,请先安装node,下载安装地址:http://nodejs.cn/download/

(2)、cd 项目目录名

(3)、npm i


2、安装依赖包/插件

(1)、包:vue@2.6.14,vue2最高版本,生产依赖。通过终端输入:npm view vue versions 命令查询,地址:https://cn.vuejs.org/v2/guide/


(2)、包:vue-router@3.5.3,vue-router3最高版本,兼容vue2.x,生产依赖。通过终端输入:npm view vue-router versions 命令查询,地址:https://v3.router.vuejs.org/zh/installation.html

(3)、包:vuex@3.6.2,vuex3最高版本,兼容vue2.x,生产依赖。通过终端输入:npm view vuex versions 命令查询,地址:https://v3.vuex.vuejs.org/zh/


(4)、UI包:element-ui,兼容vue2.x,生产依赖。通过终端输入:npm view element-ui versions 命令查询,地址:https://element.eleme.cn/#/zh-CN/component/installation


(5)、工具包:dayjs,比 moment 轻量n级的日期格式库,生产依赖,地址:https://dayjs.fenxianglu.cn/category/


(6)、包:whatwg-fetch,兼容旧版浏览器IE10+,生产依赖,地址:https://github.com/github/fetch


(6)、插件:vite-plugin-vue2,提供 vue2.x 单文件组件支持的插件,开发依赖,地址:https://www.npmjs.com/package/vite-plugin-vue2


(7)、插件:@vitejs/plugin-legacy,打包出兼容传统浏览器的代码,开发依赖,地址:https://github.com/vitejs/vite/tree/main/packages/plugin-legacy


(8)、插件:unplugin-vue-components,按需导入组件,开发依赖,地址:https://github.com/antfu/unplugin-vue-components


(9)、插件:vite-plugin-pages,自动生成路由列表,开发依赖,地址:https://www.npmjs.com/package/vite-plugin-pages


(10)、包:@vue/compiler-sfc,编译 vue2.x | vue3.x 单文件组件,开发依赖,自动生成路由在配置meta时,需要依赖此包,地址:https://www.npmjs.com/package/@vue/compiler-sfc


(11)、包:vue-template-compiler@2.6.14,将 vue2.x 模板预编译为渲染函数,版本跟vue2.x版本保持一致,vite-plugin-vue2 插件依赖次包开发依赖,地址:https://www.npmjs.com/package/vue-template-compiler


(12)、插件:vite-plugin-html,(HTML 压缩能力,EJS 模板能力,多页应用支持,支持自定义输入,支持自定义模板),开发依赖,地址:https://github.com/vbenjs/vite-plugin-html


(13)、包:sass, CSS预处理器,开发依赖,地址:https://www.sass.hk/


生产依赖安装命令:

npm i vue@2.6.14 vue-router@3.5.3 vuex@3.6.2 element-ui dayjs whatwg-fetch


开发依赖安装命令:

npm i vite-plugin-vue2 @vitejs/plugin-legacy unplugin-vue-components vite-plugin-pages @vue/compiler-sfc vue-template-compiler@2.6.14 vite-plugin-html sass -D


3、配置vite

(1)、在项目的根目录下新建vite.config.js 文件,代码如下:

import { defineConfig } from 'vite'
import path from 'path'
import {createVuePlugin} from 'vite-plugin-vue2'
import legacyPlugin from '@vitejs/plugin-legacy'
//按需导入组件 start
import Components from 'unplugin-vue-components/vite'
import { ElementUiResolver } from 'unplugin-vue-components/resolvers'
//按需导入组件 end
import Pages from "vite-plugin-pages"
// 定义index.html文件
import { createHtmlPlugin } from 'vite-plugin-html'
const resolve = dir => path.resolve(__dirname,dir)

export default defineConfig(({command,mode}) => {
  // 开发环境 mode = development command = serve
  // 生产环境 mode = production command = build
  return {
    plugins: [
      //提供 vue2.x 单文件组件支持的插件
      createVuePlugin(),
      //打包出兼容传统浏览器的代码  
      legacyPlugin({
        targets: ['> 1%, last 2 version, ie >= 11'],
        additionalLegacyPolyfills: ['regenerator-runtime/runtime']
      }),
      //按需导入组件
      Components({
        //在此列表中的组件也会按需自动导入和注册
        dirs: ['./src/components'],
        //此UI库的组件也会自动导入和注册(element-ui对应ElementUiResolver,Naive UI对应NaiveUiResolver,vant对应VantResolver,iview对应ViewUiResolver等等)
        // 配置之后,无需在 main.js 引入 element-ui 了,想要使用element-ui 哪个组件,可直接在 template 中引入
        resolvers: [ElementUiResolver()]
      }),
      //自动生成路由列表配置,如果需要配置 name 和 meta 信息,可以在单文件组件中顶部写入 <route>{name:'',meta:{}}</route> 进行配置
      Pages({
        // 自动生成的对应目录,默认就是src/pages,所以这样可以不设置,除非需要使用别的路径
        dirs: ['src/pages'],
        // 是否动态导入组件
        importMode: path => path.includes("_async") ? "async" : "sync"
      }),
      // 定义index.html
      createHtmlPlugin({
        //是否压缩html
        minify:true,
        // 注入index.html的数据,ejs格式
        inject:{
          data:{
            title:'我是标题',
            mode:mode,
            injectScript:`<script></script>`
          }
        }
      })
    ],
    //静态资源路径改为相对路径,默认是绝对路径/
    base: "./",
    server: {
      //自动打开浏览器
      open: true,
      //正常显示当前局域网IP访问地址,如果没有配置此项,执行npm run dev后,会在终端显示:Network: use `--host` to expose
      host: "0.0.0.0",
      // api 代理
      proxy:{
        '/api':{// 将’/api‘请求转到代理请求’http://192.168.3.136:8080/api‘
          target:"http://192.168.3.136:8080",
          changeOrigin:true,
          secure:false,
          //如果不想/api被传递,需要重写路径 /api -> http://192.168.3.136:8080
          rewrite: path => path.replace(/^\/api/, '')
        }
      }
    },
    resolve: {
      // 导入文件时,可以省略文件的后缀,默认支持js后缀,不支持vue后缀。下面配置导入文件时可省略的后缀,此配置是覆盖,非合并
      extensions: ['.vue', '.js', '.json'],
      // 配置路径别名
      alias:{
        '@':resolve('src')
      }
    }
  }
})


4、创建、修改、删除相关的文件和文件夹

(1)、在项目的根目录下创建 src 目录,在 src 目录下面创建 pages、components、router、store、api、utils、assets 等目录(可根据自己需求创建)

根据目录终端执行命令:

md src

然后

cd src

最后

md pages & md components & md router & md store & md api & md utils & md assets

(2)、删除项目根目录下的 style.css。在根目录终端执行命令:

del style.css


(3)、在项目的根目录下创建 public 目录,放置不需要编译的静态资源。根目录终端执行命令:

md public


(4)、修改项目根目录下index.html 文件,代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title><%- title %></title>
    <%- injectScript %>
    <% if (mode !== 'development') { %>
    <script></script>
    <% } %>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>
  </body>
</html>


(5)、在 src 目录下,创建 App.vue 文件,作为根组件。终端进入 src 目录,之后执行:

cd. > App.vue


(6)、将项目的根目录下的main.js放置src目录下,并修改 main.js 文件,代码如下:

// fetch方法兼容IE10+,兼容Safari6.1+,兼容Edge、Chrome、Firefox
// IE浏览器出现“XMLHttpRequest: 网络错误 0x80070005, 拒绝访问” 解决办法:https://blog.csdn.net/bozhu1/article/details/118567244
import 'whatwg-fetch'
import Vue from 'vue'
// 导入绑在vue原型上的插件
import './utils/plugin'
import App from './App.vue'
import router from "./router";
import store from './store'

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app")


(7)、在 utils 目录下新建 plugin.js 文件,代码如下:

import Vue from 'vue'
import Loading from 'element-ui/lib/loading'
import MessageBox from 'element-ui/lib/message-box'
import Notification from 'element-ui/lib/notification'
import Message from 'element-ui/lib/message'
import 'element-ui/lib/theme-chalk/index.css'
import dayjs from 'dayjs'

Vue.prototype.$loading = Loading.service;
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$confirm = MessageBox.confirm;
Vue.prototype.$prompt = MessageBox.prompt;
Vue.prototype.$notify = Notification;
Vue.prototype.$message = Message;
Vue.prototype.$date = dayjs;


(8)、在router 目录下新建index.js 文件,代码如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from "~pages";
Vue.use(VueRouter)
const router = new VueRouter({routes})
export default router


(9)、在 store 目录下新建index.js 文件,代码如下:

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
  state:{
    count:0
  },
  getters:{
    
  },
  mutations:{
    add(state,val){
      state.count++
    }
  },
  actions:{
    
  }
})


5、运行项目

(1)、终端命令行执行 :

npm run dev


6、打包项目、预览打包的项目

(1)、终端命令执行:

npm run build

(2)、终端命令执行:

npm run preview


7、vite全局环境变量

内置全局变量

1、import.meta.env.MODE:运行模式,通过--mode来设置

2、import.meta.env.BASE_URL:部署的公共基础路径,由config文件中的base确定

3、import.meta.env.PROD:boolean值,是否运行在生产环境

4、import.meta.env.DEV:boolean值,是否运行在开发环境(永远与import.meta.env.PROD相反)


8、经过测试兼容IE10+

相关推荐

# 安装打开 ubuntu-22.04.3-LTS 报错 解决方案

#安装打开ubuntu-22.04.3-LTS报错解决方案WslRegisterDistributionfailedwitherror:0x800701bcError:0x80070...

利用阿里云镜像在ubuntu上安装Docker

简介:...

如何将Ubuntu Kylin(优麒麟)19.10系统升级到20.04版本

UbuntuKylin系统使用一段时间后,有新的版本发布,如何将现有的UbuntuKylin系统升级到最新版本?可以通过下面的方法进行升级。1.先查看相关的UbuntuKylin系统版本情况。使...

Ubuntu 16.10内部代号确认为Yakkety Yak

在正式宣布Ubuntu16.04LTS(XenialXerus)的当天,Canonical创始人MarkShuttleworth还非常开心的在个人微博上宣布Ubuntu下个版本16.10的内...

如何在win11的wsl上装ubuntu(怎么在windows上安装ubuntu)

在Windows11的WSL(WindowsSubsystemforLinux)上安装Ubuntu非常简单。以下是详细的步骤:---...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

如何查看Linux的IP地址(如何查看Linux的ip地址)

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。...

怎么看电脑系统?(怎么看电脑系统配置)

要查看电脑的操作系统信息,可以按照以下步骤操作,根据不同的操作系统选择对应的方法:一、Windows系统通过系统属性查看右键点击桌面上的“此电脑”(或“我的电脑”)图标,选择“属性”。在打开的...

如何查询 Linux 内核版本?这些命令一定要会!

Linux内核是操作系统的核心,负责管理硬件资源、调度进程、处理系统调用等关键任务。不同的内核版本可能支持不同的硬件特性、提供新的功能,或者修复了已知的安全漏洞。以下是查询内核版本的几个常见场景:...

深度剖析:Linux下查看系统版本与CPU架构

在Linux系统管理、维护以及软件部署的过程中,精准掌握系统版本和CPU架构是极为关键的基础操作。这些信息不仅有助于我们深入了解系统特性、判断软件兼容性,还能为后续的软件安装、性能优化提供重要依据。接...

504 错误代码解析与应对策略(504错误咋解决)

在互联网的使用过程中,用户偶尔会遭遇各种错误提示,其中504错误代码是较为常见的一种。504错误并非意味着网站被屏蔽,它实际上是指服务器在规定时间内未能从上游服务器获取响应,专业术语称为“Ga...

猎聘APP和官网崩了?回应:正对部分职位整改,临时域名可登录

10月12日,有网友反映猎聘网无法打开,猎聘APP无法登录。截至10月14日,仍有网友不断向猎聘官方微博下反映该情况,而猎聘官方微博未发布相关情况说明,只是在微博内对反映该情况的用户进行回复,“抱歉,...

域名解析的原理是什么?域名解析的流程是怎样的?

域名解析是网站正常运行的关键因素,因此网站管理者了解域名解析的原理和流程对于做好域名管理、解决常见解析问题,保障网站的正常运转十分必要。那么域名解析的原理是什么?域名解析的流程是怎样的?接下来,中科三...

Linux无法解析域名的解决办法(linux 不能解析域名)

如果由于误操作,删除了系统原有的dhcp相关设置就无法正常解析域名。  此时,需要手动修改配置文件:  /etc/resolv.conf  将域名解析服务器手动添加到配置文件中  该文件是DNS域名解...

域名劫持是什么?(域名劫持是什么)

域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的。说的直白些,域名劫持,就是把互...

取消回复欢迎 发表评论: