vue3的配置和踩坑(安装、配置vue-router、px转rem、热更新、less、axios)
一:安装
1.vue create 工程名(注vue3: build没了、config没了,3.0的安装项目时自动下载node-model。)
2.在根目录下创建一个vue.config.js
function getIPAdress(){var interfaces = require('os').networkInterfaces();
for(var devName in interfaces){
var iface = interfaces[devName];
for(var i=0;i<iface.length;i++){
var alias = iface[i];
if(alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal){
return alias.address;
}
}
}
}
module.exports = {
// baseUrl: process.env.NODE_ENV === 'production' ? '/online/' : '/',
publicPath:'./',//vue-cli3.3+新版本使用
// eslint-loader 是否在保存的时候检查
lintOnSave: true,
//放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
assetsDir: 'static',
// outputDir: 在npm run build时 生成文件的目录 type:string, default:'dist'
// outputDir: 'dist',
// pages:{ type:Object,Default:undfind }
//生产环境是否生成 sourceMap 文件,一般情况不建议打开
productionSourceMap: false,
css:{
// 是否使用css分离插件
extract: true,
// 开启 CSS source maps,一般不建议开启
sourceMap: false,
},
devServer: {
port: 1818, // 端口号
host: getIPAdress(),
https: false, // https:{type:Boolean}
open: true, //配置自动启动浏览器
compress: true,//配置热更新
proxy: {
'/api': {
target: 'http://image.hn8718.com:8777', //API服务器的地址
ws: true, //代理websockets
changeOrigin: true, // 虚拟的站点需要更管origin
pathRewrite: { //重写路径 比如'/api/aaa/ccc'重写为'/aaa/ccc'
'^/api': ''
}
}
},//跨域
},
}
或者:
module.exports = {
baseUrl: process.env.NODE_ENV ===
'production'
?
'/online/'
:
'/'
,
// outputDir: 在npm run build时 生成文件的目录 type:string, default:'dist'
// outputDir: 'dist',
// pages:{ type:Object,Default:undfind }
devServer: {
port: 8888,
// 端口号
host:
'localhost'
,
https:
false
,
// https:{type:Boolean}
open:
true
,
//配置自动启动浏览器
// proxy: 'http://localhost:4000' // 配置跨域处理,只有一个代理
proxy: {
'/api'
: {
target:
'<url>'
,
ws:
true
,
changeOrigin:
true
},
'/foo'
: {
target:
'<other_url>'
}
},
// 配置多个代理
}
}
二、配置vue-router
cnpm install vue-router --save
1.在src增加router文件加入js
2.进行路由配置(图+代码)
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const Routes = [
{ path: '*', redirect: '/welcome' },
{
path: '/welcome',
name: '欢迎页面',
component:() => import('@/views/demo/pages/welcome')
},
{
path: '/page1',
name: 'page1',
component: () => import('@/views/demo/pages/page1')
},
]
const createRouter = () => new Router({
routes: Routes
})
const router = createRouter()
export default router;
3.在main.js中引入
4.修改app.vue
<template><div >
<router-view></router-view>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
}
}
</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>
三、px转rem
1.cnpm install postcss-px2rem
2.在public中添加rem.js
// 基准大小const baseSize = 32
// 设置 rem 函数
function setRem() {
// 当前页面宽度相对于 750 宽的缩放比例,可根据自己需要修改。
const scale = document.documentElement.clientWidth / 750
// 设置页面根节点字体大小
document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function() {
setRem()
}
3.在vue.config.js中添加(图加代码)
const px2rem = require('postcss-px2rem')const postcss = px2rem({
remUnit: 32 //基准大小 baseSize,需要和rem.js中相同
})
module.exports = {
css: {
loaderOptions: {
postcss: {
plugins: [
postcss
]
}
}
}
}
4.在main.js中添加
;(function(){
var rem = document.createElement('script');
rem.src = './rem.js';
document.body.appendChild(rem)
})()
四、热更新
五、配置less
1.cnpm install less less-loader --save-dev
六、配置axios
1.cnpm install axios --save
2.为了解决跨域问题,我配置了withCredential。
import axios from 'axios'
import {Message} from 'element-ui'
axios.defaults.withCredentials=true; //请求携带cookie
var baseURL='http://192.168.0.169:8080/api';//王帅
const instance = axios.create({
baseURL
})
instance.interceptors.response.use(response => {
if(response.data.code==401){
// toLogin();
return;
}
return response;
})
export let myAxiosGet = (url, params)=>{
return new Promise((resolve, reject) => {
instance.get(url, {params,withCredentials:true}).then(function (response) {
resolve(response.data)
if(!response.data.success){
Message({
message: response.data.message,
type: 'error'
});
}
})
.catch(function (err) {
Message({
message: '获取信息失败',
type: 'error'
});
reject(err);
})
})
}
export let myAxios = (method,url, params)=>{
return new Promise((resolve, reject) => {
instance({
method: method,
url,
data: params,
},{
withCredentials:true
})
.then(function (response) {
resolve(response.data);
if(!response.data.success){
Message({
message: response.data.message,
type: 'error'
});
}
})
.catch(function (err) {
Message({
message: '获取信息失败',
type: 'error'
});
reject(err);
});
})
}
以上是 vue3的配置和踩坑(安装、配置vue-router、px转rem、热更新、less、axios) 的全部内容, 来源链接: utcz.com/z/379691.html