一、安装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、效果演示
