vue3在vue2的基础上有所更新,所以从vue3开始学起吧。
参考链接:https://zhidao.baidu.com/question/2275453896941683268.html
一、升级vue
首先,查看当前vue的版本:npm list vue

接下来对npm进行升级:npm install -g npm

接着移除旧版本vue:npm uninstall vue-cli -g

最后安装新版本vue:npm install -g @vue/cli

二、检测是否升级成功
首先,检测npm和vue版本

接着创建一个vue3项目:vue create vue3test

目录结构如下

启动项目试试:npm run serve


成功了。
三、将之前vuetest的内容移植到vue3test里面
第一步:新建一个views文件夹,在里面建一个Login.vue,将vuetest项目中的登录页面HelloWorld.vue内容copy进来
LoginPage.vue
/* eslint-disable */ <template> <div class="login_container"> <div class="login_box"> <div class="wai"> <!-- 头像区域 --> <div class="avatar_box"> <img src="../assets/head.png" alt="" /> </div> <!-- 登录表单区域 --> <el-form ref="loginFormRef" :model="loginForm" :rules="loginFormRules" label-width="0px" class="login_form" > <!-- 用户名--> <el-form-item prop="username"> <el-input v-model="loginForm.username" prefix-icon="el-icon-user" ></el-input> </el-form-item> <!-- 密码--> <el-form-item prop="password"> <el-input v-model="loginForm.password" prefix-icon="el-icon-key" type="password" ></el-input> </el-form-item> <!-- 按钮区域--> <el-form-item class="btns"> <el-button type="primary" @click="Login">登录</el-button> <el-button type="info" @click="resetLoginForm">重置</el-button> </el-form-item> <div style="display:flex; justify-content:flex-start">{{loginForm.message}}</div> </el-form> </div> </div> </div> </template> <style lang="less" scoped> .login_container { background-color: darkcyan; height: 100%; } .login_box { width: 350px; height: 300px; background-color: white; border-radius: 15px; /*容器内居中*/ position: absolute; left: 40%; top: 50%; transform: translate(-50%, -50%); .avatar_box { height: 130px; width: 130px; border: 1px solid #eee; border-radius: 50%; padding: 10px; /*边框阴影*/ box-shadow: 0 0 10px #ddd; position: absolute; left: 50%; transform: translate(-50%, -50%); background-color: #fff; img { width: 100%; height: 100%; border-radius: 50%; background-color: #993d3d; } } .login_form { position: absolute; bottom: 0; width: 100%; padding: 0 20px; box-sizing: border-box; } .btns { display: flex; justify-content: flex-end; } .wai { background-image: url("../assets/back.jpg"); width: 577px; height: 300px; border-radius: 15px; } } </style> <script> import qs from 'qs' export default { data () { return { // 数据绑定对象 loginForm: { username: 'lili', password: '123', message: '' }, loginFormRules: { // 验证用户 username: [ {required: true, message: '请输入用户名', trigger: 'blur'}, { min: 3, max: 10, message: '长度在3到10个字符', trigger: 'blur' } ], password: [ {required: true, message: '请输入登录密码', trigger: 'blur'}, { min: 3, max: 15, message: '长度在3到15个字符', trigger: 'blur' } ] } } }, methods: { Login () { /* http://localhost:8081/api/login */ this.$axios .post('http://localhost:8081/api/login', qs.stringify(this.loginForm)) .then(successResponse => { console.log(successResponse.data) if (successResponse.data.code !== 200) { this.loginForm.message = successResponse.data.message } else { this.$router.push('/jump1test', () => {}, () => {}) } }) .catch(failResponse => {}) }, // 重置登录表单 resetLoginForm () { this.$refs.loginFormRef.resetFields() } } } </script>
将vuetest中assets文件夹的文件拷贝到vue3test,将package.json修改dependencies
{ "name": "vue3test", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "core-js": "^3.8.3", "vue": "^3.2.13", "vue-router": "^3.6.5", "axios": "^1.4.0", "element-plus": "^2.3.7", "less-loader": "^11.1.3", "less": "^4.1.3" }, "devDependencies": { "@babel/core": "^7.12.16", "@babel/eslint-parser": "^7.12.16", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", "@vue/cli-service": "~5.0.0", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/vue3-essential", "eslint:recommended" ], "parserOptions": { "parser": "@babel/eslint-parser" }, "rules": {} }, "browserslist": [ "> 1%", "last 2 versions", "not dead", "not ie 11" ] }
修改App.vue
App.vue
<template> <LoginPage msg="Welcome to Login"/> </template> <script> import LoginPage from './views/LoginPage.vue' export default { name: 'App', components: { LoginPage } } </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
其中有一个问题特别提醒一下,在vue3里面页面取名得组合取名,比如LoginPage,而不能取Login,不然会编译不通过,报错,当然也可以百度一下设置某些属性可以避免这个问题。
好了,现在运行程序,成功是成功了,但不是那么完美,看看样式成啥了

555~,一下子移植过来还是不行,那在调试下。