当前位置: 首页 > article >正文

vue 学习笔记 - 2、简单的一个例子

工程结构

在这里插入图片描述

主要文件内容

注意事项
1、vue、vue-router 版本兼容,如不兼容会出现各种问题

  • package.json
{
  "name": "vue-demo-project",
  "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.6.5",
    "vue": "2.6.10",
    "vue-count-to": "1.0.13",
    "vue-router": "3.0.2",
    "vuex": "3.1.0"
  },
  "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",
    "vue-template-compiler": "2.6.10"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "parserOptions": {
      "parser": "@babel/eslint-parser"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

})
  • main.js
import Vue from 'vue';
import App from './App.vue';
## 导入js资源时,必须指定到js文件,指定到文件夹没有用
import router from "./router/index";

Vue.config.productionTip = false;

new Vue({
  el: '#app',
  router,
  render: h => h(App)
  • App.vue
<template>
  <div id="app">
    <router-view />
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

  • /router/index.js 路由
import Vue from 'vue'
import VueRouter from 'vue-router';
Vue.use(VueRouter);

import LoginPage from '@/view/login/login.vue';
import IndexPage from '@/view/index.vue';

export const constantRoutes = [
    {
        path: '/',
        name: 'LoginPage',
        component: LoginPage
    },
    {
        path: '/index',
        name: 'IndexPage',
        component: IndexPage
    }
]

const createRouter = () => new VueRouter({
    scrollBehavior: () => ({ y:0 }),
    routes: constantRoutes
})

const router = createRouter();

export default router;
  • /view/index.vue 主页面
<template>
  <div>
    <h1 align="center">欢迎来到首页</h1>
    <div class="userName">{{userName}}</div>
    <router-view></router-view>
  </div>
</template>
<script>
export default {
  name: 'IndexPage',
  data(){
    return {
      userName: localStorage.getItem("userName")
    }
  }
}

</script>
<style lang="css" scoped>
.userName{
  align-content: center;
  width: 100%;
}
</style>
  • /view/login/login.vue 登录页面
<template>
  <div id="app">
    <div class="login"  >
      <h3>demo演示系统</h3>
      <div class="userName">
        <span>账号:</span><input type="text" v-model="userName"/>
      </div>
      <div class="password">
        <span>密码:</span><input type="text" v-model="password" />
      </div>
      <div class="btn">
        <button @click="login">登录</button>
      </div>
    </div>
    <router-view></router-view>
  </div>
</template>
<script >
import router from "@/router/index"
export default {
  name: 'LoginPage',
  data() {
    return {
      userName: '',
      password: ''
    }
  },
  methods:{
    login(){
      localStorage.setItem("userName",this.userName);
      router.push("/index");
    }
  }
};

</script>
<style lang="css" scoped>
.login {
  background-color: #a6f9bb;
  border: 1px solid #ccc;
  width: 400px;
  height: 230px;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 0 10px #ff000080;
  padding: 20px;
  box-sizing: border-box;
}
.input {
  border-radius: 10px;
}
.userName {
  margin-bottom: 20px;
  display: flex;
  align-items: center;
}
.user span {
  width: 50px;
}
.user input {
  flex: 1;
  font-size: 20px;
  padding: 3px 10px;
}
.password {
  display: flex;
  align-items: center;
  margin-bottom: 10px;
}
.pwd span {
  width: 50px;
}

.pwd input {
  flex: 1;
  font-size: 20px;
  padding: 3px 10px;
}

button {
  display: block;
  width: 80%;
  margin: 0 auto;
  padding: 5px 0;
  background-color: #009688;
  border: none;
  border-radius: 20px;
  cursor: pointer;
}
h3 {
  margin-bottom: 20px;
  text-align: center;
}
</style>


http://www.kler.cn/a/534097.html

相关文章:

  • ollama部署deepseek实操记录
  • C++ Primer 算术运算符
  • MyBatis XML文件配置
  • QT:信号和槽
  • Spring AI 智能体通过 MCP 集成本地文件数据
  • idea分析sql性能
  • vscode修改自定义模板
  • DeepSeek图解,10页小册子,PDF开放下载!
  • STM32-启动文件
  • Java进阶文件输入输出实操(图片拷贝)
  • 安装mindspore_rl踩坑
  • 【深度学习】Java DL4J基于 RNN 构建智能停车管理模型
  • 华为OD最新机试真题-狼羊过河-Java-OD统一考试(E卷)
  • 大语言模型极速部署:Ollama 、 One-API、OpenWebUi 完美搭建教程
  • 大语言模型的「幻觉」(Hallucination)是指模型在生成内容时
  • 玩转goroutine:Golang中对goroutine的应用
  • js的 encodeURI() encodeURIComponent() decodeURI() decodeURIComponent() 笔记250205
  • 解决python写入csv时如000111样式的字符串前面的0被忽略掉的问题
  • DeepSeek-R1:开源机器人智能控制系统的革命性突破
  • Linux中安装rabbitMQ
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • .net framework 4.5 的项目,用Mono 部署在linux
  • 【算法篇】选择排序
  • Mysql:数据库
  • docker单机运行环境的zabbix升级实战(从6.2.6升级到7.2.3)
  • Centos 8 离线升级openssh 9.9