• 【Vue】从零搭建一个Vue项目


    一、项目创建

    1、打开命令行窗口Cd /d进入想要创建项目的位置,输入vue create 项目名

    2、选择Vue2

    3、运行该项目

    4、创建成功

     在浏览器中输入以上网址:localhost:8080,来到一下界面,说明成功

     二、路由的配置

    1、安装路由(vue2 只能安装3版本的vue-router)

    看一下这个文件有vue-router代表安装成功

    2、配置路由

    (1、创建router文件夹

     (2、创建index.js,配置路由

    重定向的解释:当网址下(如localhost:8080/xxx)匹配不到相应的路由的时候,则跳转到重定向所设置的路径

    路由组件与非路由组件的归类:compoents文件夹一般放置非路由组件
    pages文件夹一般放置路由组件

    路由还有很多没写:(

            1、路由守卫:解决在某些条件下不能跳转到其他路由

            2、二级路由

            3、路由组件在某些地方不展示,可以增加一个属性

            4、路由的传参和跳转

    meta:可以配置一些参数,作用其实是让一些非路由组件展示与不展示

    1. //引入Vue
    2. import Vue from "vue";
    3. //引入Vue-router
    4. import VueRouter from "vue-router";
    5. //使用VueRouter
    6. Vue.use(VueRouter);
    7. //引入路由组件
    8. import Home from "@/components/Home"
    9. import Search from "@/components/Search"
    10. //对外暴露一个Vue实例
    11. export default new VueRouter({
    12. //配置路由
    13. routes:[
    14. {
    15. path:'/Home',
    16. component:Home,
    17. name:"Home",
    18. meta:{isshow:true}
    19. },
    20. {
    21. path:'/Search',
    22. component:Search,
    23. name:"Search",
    24. meta:{isshow:false}
    25. },
    26. //重定向
    27. {
    28. path:'*',
    29. redirect:"/Home"
    30. }
    31. ]
    32. })

    在main.js出口文件中注册路由

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. Vue.config.productionTip = false
    4. //引入路由
    5. import router from './router'
    6. new Vue({
    7. render: h => h(App),
    8. //配置路由,KV一致,省略V
    9. //这里使用router之后,组件身上都有$router,$route属性
    10. //$router最常用来跳转push跳转 $route最常用来获取参数
    11. router
    12. }).$mount('#app')

    Vue中配置一个出口 <router-viwe><router-view/>

    1. <template>
    2. <div id="app">
    3. <Header/>
    4. <!-- 路由的出口 -->
    5. <router-view></router-view>
    6. <Footer/>
    7. </div>
    8. </template>
    9. <script>
    10. import Header from './components/Header'
    11. import Footer from "@/components/Footer"
    12. export default {
    13. name: 'App',
    14. components: {
    15. Header,
    16. Footer
    17. }
    18. }
    19. </script>
    20. <style>
    21. </style>

     三、API接口配置

    1、安装axios axios帮助文档 配置的时候可以跟着来,不用死记硬背

     这里面有代表安装成功

    2、axios的二次封装

    (1、创建api文件夹,创建resquest.js文件(其实该文件就是axios)

     (2、axios的二次封装 看着文档来

    1. //引用axios
    2. import axios from "axios";
    3. const requests = axios.create({
    4. // baseURL的作用 例如我有一个接口的网址为www.baidu/api/love
    5. // 如果很多接口都是www.baidu/api/xxx
    6. //我可以省略/api,因为axios会自动帮你添上,这就是baseUrl的作用
    7. baseURL: '/api',
    8. //请求超时的时间为5s
    9. timeout: 5000,
    10. });
    11. //请求拦截器,发请求之前可以做一些事情
    12. requests.interceptors.request((config)=>{
    13. //config配置对象,有一个属性 请求头headers
    14. return config;
    15. })
    16. //相应拦截器
    17. requests.interceptors.response((res)=>{
    18. // 服务器成功返回
    19. //简化返回的数据,只返回data
    20. return res.data;
    21. },(error)=>{
    22. //失败
    23. //静态函数Promise.reject返回一个被拒绝的Promise对象。通过使用 Error的实例 获取错误原因(reason)对调试和选择性错误 捕捉很有帮助。
    24. Promise.reject(new Error("faile"));
    25. })

    在API文件下创建一index.js文件,用来统一管理接口请求 

    1. //结构统一管理
    2. import requests from "./request"
    3. //method 有get 和 post两种方式
    4. // 有参数的需要些模板字符串``
    5. export const reqGetSomeInfo = (p)=>requests({url:`"/baidu/${p}"`,method:"get"});
    6. // 无参数直接写
    7. export const reqGetSomeInfo2 = ()=>requests({url:"/baidu",method:"get"});
    8. //需要传对象的可以用data属性
    9. export const reqGetSomeInfo3 = (p,data)=>requests({url:`"/baidu"/${p}`,data:data,method:"get"});

    3、跨域问题

    跨域:如果多次请求协议、域名、端口号有不同的地方,称之为跨域

    传统的解决方式:JSONP、CROS、代理

    代理:

    在vue.config.js里添加一下代码

    1. //配置代理跨域
    2. devServer: {
    3. // /api的作用是:当地址中,出现api时,浏览器会自动向target请求数据
    4. //注意配置这个,需要重新启动一下项目
    5. proxy: {
    6. "/api": {
    7. target: "http://39.98.123.211",
    8. },
    9. },
    10. },

    四、Vuex

    以前写的Vuex详解 不赘叙了

    1、安装vuex

     同样这个json文件里面有,就是安装成功了

     

     2、配置仓库

    创建store文件夹,是为大仓库。Home文件夹是Home小仓库

    Home仓库(在此处调用api接口)

    1. import { reqGetSomeInfo } from "@/api"
    2. const state = {
    3. someInfo:[]//此处是空对象 还是 空数组要看接口返回的值
    4. }
    5. const mutations = {
    6. GETSUM(state,someInfo)
    7. {
    8. state.someInfo = someInfo;
    9. }
    10. }
    11. const actions = {
    12. //params是携带的参数
    13. async getsum({commit},params)
    14. {
    15. let result = await reqGetSomeInfo;
    16. if(result.code == 200)//请求成功会返回code = 200
    17. {
    18. commit("GETSUM",result.data)
    19. }
    20. }
    21. }
    22. //getter是为了简化操作
    23. const getters = {}
    24. export default{
    25. state,
    26. actions,
    27. getters,
    28. mutations
    29. }

    小仓库需要在大仓库注册 Store.js

    1. import Vue from "vue";
    2. import Vuex from "vuex"
    3. Vue.use(Vuex);
    4. import Home from "./Home"
    5. export default new Vuex.Store({
    6. modules:{
    7. Home,//Home小仓库在大仓库里注册
    8. }
    9. })

    入口文件引入store main.js

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. Vue.config.productionTip = false
    4. //引入路由
    5. import router from './router'
    6. //引入仓库
    7. import store from './store'
    8. new Vue({
    9. render: h => h(App),
    10. //配置路由,KV一致,省略V
    11. //这里使用router之后,组件身上都有$router,$route属性
    12. //$router最常用来跳转push跳转 $route最常用来获取参数
    13. router,
    14. //这里使用store后,组件身上都有了$store属性
    15. store,
    16. }).$mount('#app')

    整个流程走一遍,发现vue也没有那么难,真的把这四个组件搞明白,会很轻松。

    前路漫漫,切不可放松。加油,努力

  • 相关阅读:
    Springboot 集成 Ehcache操作数据库显示SQL语句设置
    Redis的BitMap使用
    双十一特辑-北汇在C站的两周年打卡纪念:)
    你的关联申请已发起,请等待企业微信的管理员确认你的申请
    SAP ABAP基础语法-日期函数(九)
    PHP将pdf转为图片后用OCR识别
    CKA真题分析-2023年度
    AWS SAA-C03 #113
    024-从零搭建微服务-系统服务(六)
    K8s部署SpringBoot项目简单例子
  • 原文地址:https://blog.csdn.net/m0_59792745/article/details/124764228