💜 想真正擅长编程? 从一门课程开始,100% 免费

笔记《vue快速入门并实战》

一、安装nodejs

二、安装vue-cli工具

Shell
npm install -g @vue/cli

三、使用vue-cli创建工程

方式一:

vb
vue create tiangou_shop

选项:
1)
Vue CLI v5.0.8
? Please pick a preset: (Use arrow keys)
  Default ([Vue 3] babel, eslint)
> Default ([Vue 2] babel, eslint)
Manually select features

方式二:

vb
vue init webpack tiangou_shop

选项:
? Project name demo1-webpack
? Project description A Vue.js project
? Author
? Vue build runtime
? Install vue-router? Yes
? Use ESLint to lint your code? No
? Set up unit tests Yes
? Pick a test runner noTest
? Setup e2e tests with Nightwatch? No
? Should we run `npm install` for you after the project has been created? (recommended) npm

方式三:(不需要安装路由模块)

vb
vue create tiangou_shop

选项:
1)
Vue CLI v5.0.8
? Please pick a preset: (Use arrow keys)
  Default ([Vue 3] babel, eslint)
  Default ([Vue 2] babel, eslint)
> Manually select features
  
2)
? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection, and
<enter> to proceed)
 (*) Babel
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 (*) Router
 (*) Vuex
>( ) CSS Pre-processors
 ( ) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing

 3)
 ? Choose a version of Vue.js that you want to start the project with
  3.x
> 2.x
      
 4)
 ? Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) n
      
 5)
? Where do you prefer placing config for Babel, ESLint, etc.?
  In dedicated config files
> In package.json
          
 6)
? Save this as a preset for future projects? (y/N) n
  

四、修改架构快速运行

4-1、修改App.vue

打开src目录下的App.vue文件

vue
删除
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
替换成
<router-view></router-view>
删除
import HelloWorld from './components/HelloWorld.vue'
HelloWorld

修改后的代码

vue
<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

<script>

export default {
  name: 'App',
  components: {
  }
}
</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>

4-2、安装路由模块

Shell
npm install vue-router@3.1.3 --save-dev

4-2-1、引入并且使用路由

打开main.js中,在mian.js中引入路由

添加

vue
import router from './router'
router,

修改后的代码

JavaScript
import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

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

4-2-2、在src下创建一个router.js

内容如下

JavaScript
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/HelloWorld'
Vue.use(Router)

// eslint-disable-next-line no-unused-vars
let router;
export default router = new Router({
    routes: [
        {
            path: '/',
            name: 'HelloWorld',
            component: HelloWorld
        },
     
    ]
})

4-2-3、修改根目录下vue.config.js

修改前

JavaScript
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true
})

修改后

JavaScript
module.exports={
    devServer:{
        port: 8888,  //配置前端的端口号
        proxy:{
            '/api':{
                target:'http://127.0.0.1:8087',  //后端的请求的前缀路径
                changeOrigin:'true',
                pathRewrite :{  //把api开发的替换成 / 然后在请求后端
                    '^/api':'/'
                }
            }
        }
    },
    lintOnSave: false
}

4-3、安装axios模块

4-3-1、在项目根目录下运行如下命令

Shell
npm install axios --save

4-3-1、在main.js中引入axios

加入后

JavaScript
import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

// eslint-disable-next-line no-unused-vars
import axios from "axios";
axios.defaults.baseURL="http://localhost:8011/"
Vue.prototype.axios = axios

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

五、运行测试项目

在根目录运行

Shell
npm run serve

六、安装前端框架Elementui

6-1、执行命令安装

JavaScript
npm install element-ui --save

6-2、在main.js中开启

修改后代码

JavaScript
import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

// eslint-disable-next-line no-unused-vars
import axios from "axios";
axios.defaults.baseURL="http://localhost:8011/"
Vue.prototype.axios = axios

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

Vue.use(ElementUI)

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

七、配置request.js及拦截器


在src下创建api目录并在api目录中创建request.js

JavaScript
// file:request.js
// 1、引入axios库
import axios from "axios"

// 2、创建axios实例
const service = axios.create({
    baseURL: '/api',  // api的base_url
    timeout: 5000  // 请求超时时间
})

// 3、请求拦截器
service.interceptors.request.use(
    config => {
        console.log("request url="+config.url)

        // 获取token,如果有token,就放入http的请求头里面
        let token = window.sessionStorage.getItem("token")
        if(token) {
            config.headers = {
                'token': token
            }
        }

        return config
    },
    error => {
        return Promise.reject(error)
    }
)

// 4、响应拦截器
service.interceptors.response.use(
    response => {
        // 定时刷新token
        console.log(response.data)
        return response
    },
    error => {
        return Promise.reject(error)
    }
)

export default service

八、路由篇

8-1、去除路由中的 # 号

说明:在new Router 中配置 mode: 'history',

JavaScript
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'

Vue.use(Router)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

8-2、路由路径设置

在组件或者页面中:

JavaScript
<router-link :to="{path:'/'}">to home</router-link>
<router-link :to="{path:'/two'}">to home</router-link>

8-3、路由参数设置

在路由配置文件中(path后面设置 :code):

在页面中使用(注意页面路径要加参数名称,否则会出错)

可以为:http://localhost:8080/two/common

不能为:http://localhost:8080/two

8.4、路由嵌套

在配置文件中配置:

创建show组件(页面),并且在goods组件(页面)中:

8.5、再看router-link

替代a标签的写法

JavaScript
<router-link to="/goods">跳转到goods</router-link>

默认参数的写法

JavaScript
<router-link :to="{path:'/goods', param:{color:'yellow'}}">跳转到带参数的show</router-link>

九、axios篇

9-1、在项目根目录下运行如下命令

JavaScript
npm install axios --save

9-2、再utils目录下创建一个axios.js包

JavaScript
import Vue from "vue";
import axios from "axios";
import VueAxios from "vue-axios";
 
Vue.use(VueAxios, axios) 

// 设置url地址
axios.defaults.baseURL="http://localhost:8011/"

9-3、把axios加载到main.js中

JavaScript
import './utils/axios'

9-4、post请求

TEXT
this.$http.post( 'http://c.biancheng.net/',
          {
            documentUrl: 12
          }).then(res => {
            this.$router.push("/")
          console.log(res)
        }).catch(res => {
          console.log(res)
        })

十、拦截器

10-1、请求拦截器

JavaScript
//request拦截器 添加一个请求拦截器  
axios.interceptors.request.use(function (config) {
	let token = window.localStorage.getItem("token")
	if (token) {
  	// 设置请求头
	 config.headers.common['Authorization'] = token
	}
	return config
}, function (error) {
	//如果请求出错在此执行某些操作
	return Promise.reject(error);
});

10-2、响应拦截器

JavaScript
// 添加一个响应拦截器
axios.interceptors.response.use(function (response) {
	//登录超时
	if(response.data.code==400){
		this.$router.push('/')
	}
	return response;
}, function (error) {
	return Promise.reject(error);

十一、富文本篇

11-1、先使用npm下editor

vb
npm install vue2-editor

11-2、在main.js中注入组件

JavaScript
import Vue from "vue";
import Vue2Editor from "vue2-editor";

Vue.use(Vue2Editor);

11-3、创建一个组件或者页面

JavaScript
<template>
  <vue-editor v-model="content" />
</template>

<script>
import { VueEditor } from "vue2-editor";

export default {
  components: { VueEditor },

  data: () => ({
    content: "<h1>Some initial content</h1>"
  })
};
</script>

11-4、效果演示

image-20230322175305057