Vue理解01

项目建立流程

  • 项目文件夹终端vue ui可视化新建项目(需要一些时间)
  • vscode打开项目
  • npm run serve运行

架构理解:

  • 首先打开的页面默认是index.html
  • index.html默认引用main.js
  • main.js引用需要的页面,默认App.vue。Vue示例挂载
  • 可以在viewcomponent里创建组件或页面
    • view中文件以.vue结尾,包括三部分:
      • template:写html内容
      • script:控制模板当中数据来源和行为
      • style:略

首先实现在App.vue中引用另一个自建页面(使用element实现)

main.js

复制代码
import Vue from 'vue'
import App from './App.vue'
import router from './router'

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.config.productionTip = false
Vue.use(ElementUI);

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

App.vue

复制代码
<template>
  <div>
    <element-view></element-view>
    <h1>{{message}}</h1>
  </div>
</template>

<script>
  import ElementView from './views/element/ElementView.vue'

  export default {
    components: {ElementView},
    data(){
      return {
        message: "I'm Lzy"
      }
    },
    methods:{

    }
  }
</script>

views/element/ElementView.vue

复制代码
<template>
    <div>
        <el-button type="primary">主要按钮</el-button>
    </div>
</template>

<script>
export default {
    
}
</script>

<style>

</style>

下一步,通过导航栏实现页面切换

路由(router):URL中哈希(#)与组件的对应关系。

步骤1:配置路由router/index.js

复制代码
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [
  {
    path: '/part1',     			  //哈希匹配网址
    name: 'part1',                    //起个名字
    component: () => import('../views/element/ElementView.vue')    //对应页面
  },
  {
    path: '/part2',
    name: 'part2',
    component: () => import('../views/element/PartTwo')
  },
  {                                  //默认第一次访问是'/',需要把这个位置重定向到有效页面。不加这个会出bug。
    path: '/',
    redirect: '/part1'
  }                                
]

const router = new VueRouter({
  routes
})

export default router

同时在对应路径新建对应.vue页面part2

最后修改App.vue(不动的元素放这里,需要切换的部分用标签代替表示即可)

复制代码
<template>
  <div id="app">

    <!-- element布局 -->
    <el-container>     
      <!-- 头部栏  -->
      <el-header style="margin:0px;height: 80px">
        <h1 style="line-height: 40px; font-weight: blod; font-size: 30px; text-align:center">
          {{ message }}
        </h1>
      </el-header>
      <!-- 主体栏 -->
      <el-main>
            <!-- 导航栏 -->
            <el-menu
              router
              :default-active="$route.path"
              class="el-menu-demo"
              mode="horizontal"
              background-color="#545c64"
              text-color="#fff"
              active-text-color="#ffd04b"
            >
              <el-menu-item index="/part1"> 板块一</el-menu-item>
              <el-menu-item index="/part2"> 板块二</el-menu-item>
              <el-menu-item index="/part3"> 板块三</el-menu-item>
            </el-menu>
          
          <router-view></router-view>

      <element-view></element-view>

      </el-main>
    </el-container>
    
  </div>
</template>

<script>
  // import ElementView from './views/element/ElementView.vue'

  export default {
    // components: {ElementView},
    data(){
      return {
        message: "System name"
      }
    },
    methods:{

    }
  }
</script>

<style>
  .el-menu {
    display: flex;
    justify-content: space-evenly;
  }
  .el-menu-item {
    width: 33%;
    text-align: center;
    font-size: 18px !important;
  }
</style>

之后改进:

使用part1完成静态数据的展示

使用part2完成特定种类数据的展示

之后搭建后端,完成数据交换。

展示特定数据

为了异步数据加载:npm install axios

  • 写钩子函数:mounted()
  • 通过axios获取数据
  • 渲染数据

目前需要先完成后端Django的搭建

相关推荐
想吃火锅10053 分钟前
【前端手撕】promise.all
前端
lichenyang4535 分钟前
动态加载 vs 延迟加载:为什么 demo 里「延迟」看起来没效果?
前端
cypking18 分钟前
从零搭建 Claude Code + Chrome MCP 浏览器自动化:前端 E2E 端到端测试完整教程(包含增量测试)
前端·chrome·自动化
Levi_J34 分钟前
Vue2 升级 Vue3 项目实战
前端
前端拷贝猿35 分钟前
扫码领券功能需求分析
前端
英勇无比的消炎药36 分钟前
吃透 Sender 交互逻辑:提交快捷键事件与方法实战运用
vue.js
前端拷贝猿38 分钟前
设备活动弹窗功能需求分析
前端
飞天狗11143 分钟前
零基础JavaWeb入门——第五课第一小节:九大内置对象 · 第1个:request(请求对象)
java·开发语言·前端·后端·servlet
a15108416931 小时前
记一次大模型探索
java·服务器·前端
石山代码1 小时前
变量与解构
开发语言·前端·javascript