Vue做项目必备(节省80%时间,持久更新,不讲武德)

目录

1.iconfont

2. sass版本问题

3.屏幕高宽度自适应

4. 跨域

5. 拦截器

 6.项目插件安装

7.登录鉴权(单路由)

8.插件引入、持久化、字体图标、富文本、时间戳

9. 跳转、返回、前进和后退

10.echarts图表的使用

11. vue组件中引入js文件(放script中)

 12.vue组件中引入css文件(放style中)

 13.插槽

 14.vue六种传值方式(属性传值、$refs、$parent、通知传值(广播传值)、本地传值、路由传值)

 15.增删改查

 16.登录+验证规则+重置

17.模拟数据

 18.电话邮箱正则验证

19.dialog弹框(可用于增删改查)

 20.登录的盒子居中

21.api封装


Vue脚手架中盒子高度设置问题:height:100vh;      //es6语法

0.创建项目准备

检查是否安装成功:如果输出版本号,说明我们安装node环境成功

node -v 

npm -v

全局安装@vue/cli

npm install -g @vue/cli
检查是否安装成功:如果输出版本号,说明我们安装node环境成功

vue --version

创建项目

vue create test_vue

1.iconfont

<template>
	<div>
		<ul>
			<!-- 方法一: -->
			<li><span class="iconfont">&#xe62f;&#xe644;&#xe616;</span></li><br>
			<li><span class="iconfont">&#xe644;</span></li>
			<li><span class="iconfont">&#xe616;</span></li>
			<!-- 方法二 -->
			<i class="iconfont icon-caidan"></i>
			<i class="iconfont icon-jiazai1"></i>
			<i class="iconfont icon-shangchuan"></i>
			
			
		</ul>
	</div>
</template>

<script>
	import iconfont from '../myicon/icon-font/download/font_20dtp1i3pv6/iconfont.css'
	export default {
		
	}
</script>
  
<style scoped>
	li>span{
		width: 50px;height: 50px;
		float: left;
	}
</style>

2. sass版本问题

1、vue中sass安装使用============================================================
方法一:

我本地是将    "sass-loader": "^8.0.0",更换成了 "sass-loader": "^7.3.1",

卸载当前版本   npm uninstall sass-loader
安装     npm install sass-loader@7.3.1 --save-dev

方法二:

如若不行,此时运行按照提示执行  npm rebuild node-sass  命令

(如若还不行,则先运行npm install node-sass命令执行)

3.屏幕高宽度自适应

mounted() {
		// 调用自动调节
		this.fc_height();
	},
	methods: {
		// 获取屏幕宽高自动调节
		fc_height() {
			let html = document.documentElement || document.body;
			let height = html.clientHeight - 60;
			let aside = document.querySelector('.el-aside');
			aside.style.height = height + 'px';
		}
	}

4. 跨域

proxyTable: {
			'/admin': { //代理api
				target: 'http://ceshi5.dishait.cn/admin', //服务器api地址
				ws: true, // proxy websockets
				changeOrigin: true, //是否跨域
				pathRewrite: { //重写路径
					'^/admin': ''
				}
			}
		},

5. 拦截器

//添加请求拦截器
axios.interceptors.request.use(config => {
  console.log(config)
  // 从sessionStorage获取token值,然后设置给请求头
  config.headers.Authorization = window.sessionStorage.getItem('token')
  // 在最后必须 return config
  return config
})

 6.项目插件安装

npm i element-ui -S                
npm install axios --save      
npm install echarts --save        
npm install vant --save   
npm install vuex -s
cnpm install node-sass@4.14.1 sass-loader@7.3.1 -s

7.登录鉴权(单路由)

		beforeEnter(to,from,next){
			if(sessionStorage.getItem("token")){
				next()
			}else {
			   alert("请先登录");
			   next('/')
			}
		},

8.插件引入、持久化、字体图标、富文本、时间戳

// 引入vuex
import Vuex from 'vuex';

// 持久化=====================================================================
import VuexPersistence from 'vuex-persist'         //store中引入
const vuexLocal = new VuexPersistence({            //store中引入
    storage: window.localStorage
})


plugins: [vuexLocal.plugin]                    //store中引入


cnpm install --save vuex-persist               //下载


// 引入vant组件====================================================================
import Vant from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);


// 引入第三方控件[分类参数]===============================================
npm i vue-table-with-tree-grid -S     //下载

import TreeTable from 'vue-table-with-tree-grid'    //在main.js中使用
Vue.config.productionTip = false               //在main.js中使用
//全局注册组件===============================================
Vue.component("tree-table", TreeTable)

// 导入字体图标===============================================
import './assets/fonts/iconfont.css'
// 导入富文本编辑器(用法)===============================================
import VueQuillEditor from 'vue-quill-editor'
// require styles 导入富文本编辑器对应的样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

// 将富文本编辑器,注册为全局可用的组件===============================================
Vue.use(VueQuillEditor)


// 时间戳转换===============================================
Vue.filter('dateFormat', function(originVal) {
	const dt = new Date(originVal)

	const y = dt.getFullYear()
	const m = (dt.getMonth() + 1 + '').padStart(2, '0')
	const d = (dt.getDate() + '').padStart(2, '0')

	const hh = (dt.getHours() + '').padStart(2, '0')
	const mm = (dt.getMinutes() + '').padStart(2, '0')
	const ss = (dt.getSeconds() + '').padStart(2, '0')

	return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})


// 引入ElementUI组件===============================================
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

//Echarts图表引入===============================================
import echarts from 'echarts'
Vue.prototype.$echarts = echarts

//引入axios和配置请求根路径===============================================
import axios from 'axios' 
axios.defaults.baseURL = 'https://www.liulongbin.top:8888/api/private/v1'
// 添加请求拦截器===============================================
axios.interceptors.request.use(config => {
  console.log(config)
  // 从sessionStorage获取token值,然后设置给请求头
  config.headers.Authorization = window.sessionStorage.getItem('token')
  // 在最后必须 return config
  return config
})
Vue.prototype.$http = axios

9. 跳转、返回、前进和后退

编程导航  

我们可以用在渲染完元素不方便添加router-link的使用
编程导航提供的方法:
this.$router.push(路径) 跳转到哪个路由
this.$router.go(-1) 返回上一级
vue还提供一种方式 来实现导航  编程式导航 在事件中通过this.$router的方法来实现
我们主要掌握的方法
push()  进入到哪个页面
想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。
go(-num) 返回哪个页面
这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)
replace()
跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。 没有办法使用go()返回了


this.$route 和this.$router的区别:
this.$route 路由信息对象 可以获取参数列表
this.$router路由实例对象 可以实现页面的转换

10.echarts图表的使用

<template>
    <div class="data_report">
        
        <div id="main" style="width: 600px;height:400px;">
            
            
        </div>
    </div>
    
</template>

<script>
let echarts = require('echarts');
export default {
    mounted() {
        this.fc_echarts();
    },
    methods: {
        fc_echarts() {
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('main'));
            console.log(myChart);
            // 绘制图表
            // 指定图表的配置项和数据
            let option = {
                // title: {
                //     text: '堆叠区域图'
                // },
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
           &nbs
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值