项目【官网】第三天----前端框架搭建

项目【官网】第三天----前端框架搭建

总目录 :项目【官网】的诞生

项目【官网】第一天----后端整体框架搭建

项目【官网】第二天----后端C端接口的编写

项目【官网】第三天----前端框架搭建


前端使用的是VUE,所以一开始用VUE的脚手架来创建一个新的项目

项目【官网】第三天----前端框架搭建

包引入

修改package.json,将dependencies修改成下载这样,然后控制台输入npm install

"dependencies": {
    "axios": "^0.21.4",
    "core-js": "^3.6.5",
    "element-ui": "^2.15.6",
    "vue": "^2.6.11",
    "vue-router": "^3.2.0",
    "vuex": "^3.4.0"
  },

清理不需要的东西

  • public里面
    • favicon.ico 网页图标
    • index.html
  • src
    • App.vue
    • main.js
  1. favicon.ico可以换成自己想要的图标,然后在index.html里面修改

  2. index.html修改成官网

  3. APP.vue 修改

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
  1. 修改App.vue
<template>
  <div id="app" style="overflow: auto;height: 100%;">
    <router-view/>
  </div>
</template>

<style lang="less">

</style>

注册Element组件库

src下新建plugin文件夹,然后新建index.js文件,我是用来自定义主题,这东西可以自行去玩玩

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import '../../theme/index.css'
Vue.use(ElementUI)

路由

src下新建router文件夹,然后新建index.js,Main.vue是后面建立用来展示的第一个页面

后面每次新建一个页面都要在这注册

import Vue from 'vue'
import VueRouter from 'vue-router'
import Main from '@/views/Main'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Main',
    component: Main
  }
]

const router = new VueRouter({
  mode: 'history',
  routes
})

export default router

状态

src下新建store文件夹,然后新建index.js,

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

清理样式

因为VUE之前的样式有部分不适合,会有一些小bug,先提前改好,后面不用改半天

src下新建style包,然后新建index.less,注意是less文件,这是需要编译的文件,具体我也不懂(前端就是半吊子水)

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

封装请求

src下新建utils文件夹

封装请求可以让我们在发送请求时更加方便,还有可能请求拦截等问题

新建http.js文件

import request from './request'

//  封装请求

const http = {
  get (url, params) {
    const config = {
      method: 'get',
      url: url
    }
    if (params) config.params = params
    return request(config)
  },
  post (url, params) {
    const config = {
      method: 'post',
      url: url
    }
    if (params) config.data = params
    return request(config)
  },
  put (url, params) {
    const config = {
      method: 'put',
      url: url
    }
    if (params) config.params = params
    return request(config)
  },
  delete (url, params) {
    const config = {
      method: 'delete',
      url: url
    }
    if (params) config.params = params
    return request(config)
  }
}
//  导出
export default http

新建request.js文件

import axios from 'axios'
import { Message } from 'element-ui'

// 封装axios 配置拦截器

const instance = axios.create({
  baseURL: 'http://120.78.204.20:3060',
  timeout: 3000
})



//  响应拦截器
instance.interceptors.response.use(res => {
  return res.data
}, error => {
  if (error && error.response) {
    switch (error.response.status) {
      case 400:
        error.message = '错误请求'
        break
      case 401:
        error.message = '未授权,请重新登录'
        break
      case 403:
        error.message = '拒绝访问'
        break
      case 404:
        error.message = '请求错误,未找到该资源'
        window.location.href = '/NotFound'
        break
      case 405:
        error.message = '请求方法未允许'
        break
      case 408:
        error.message = '请求超时'
        break
      case 500:
        error.message = '服务器端出错'
        break
      case 501:
        error.message = '网络未实现'
        break
      case 502:
        error.message = '网络错误'
        break
      case 503:
        error.message = '服务不可用'
        break
      case 504:
        error.message = '网络超时'
        break
      case 505:
        error.message = 'http版本不支持该请求'
        break
      default:
        error.message = `连接错误${error.response.status}`
    }
  } else {
    // 超时处理
    if (JSON.stringify(error).includes('timeout')) {
      Message.error('服务器响应超时,请刷新当前页')
    }
    error.message = '连接服务器失败'
  }

  Message.error(error.message)
  return Promise.resolve(error.response)
})

export default instance

展示页

views文件夹下新建Main.vue,这是第一个展示页面,这是router有关,path是 / 的就是第一个页面,

<template>
  <div>
    main
  </div>
</template>

<script>
export default {
  name: 'Main',
  
}
</script>

<style scoped lang="less">

</style>

设置端口

在项目文件夹下新建vue.config.js ,这个文件可以修改端口,也可以写代理进行转发

module.exports = {
  lintOnSave: false,
  devServer: {
    host: 'localhost',
    port: 3020,
    hotOnly: true,
  }
}

启动

终端输入npm serve

浏览器输入localhsot:3020

项目【官网】第三天----前端框架搭建

代码目录

有些生成的可能没用,没删,theme是自定义主题的包,dist是build生成的,node_modules是包

其它的都是上面有说到过的

项目【官网】第三天----前端框架搭建

详细代码

gitee 官网V0.0.0

上一篇:es6模板字符串拼接只输出一个的小问题


下一篇:Django: request.query_params取值