# vue框架
npm install axios --save
npm install mockjs --save
npm install vue-lazyload --save
cnpm i element-ui -S
//新版本有bug 写死版本号 3.1.3
cnpm install vue-awesome-swiper --save
main
// 全局引入axios 配合mock
import Axios from 'axios';
Vue.prototype.$axios = Axios;
import './mock/index'; //引入mock数据,关闭则注释该行
# v-lazy图片懒加载
npm install vue-lazyload --save
main
//图片懒加载
import VueLazyLoad from 'vue-lazyload'
Vue.use(VueLazyLoad, {
loading: '/imgs/loading-svg/loading-bars.svg'
})
http://www.jerrybro.cn:90/imgs/logo-footer.png
<img v-lazy="$target+'/imgs/nav-img/nav-3-3.png'">
<img :src="`${$target}/imgs/nav-img/nav-3-1.jpg`">
# element模块
cnpm i element-ui -S
//全局载入Element 框架 饿了吗
import 'element-ui/lib/theme-chalk/index.css';
import ElementUI from 'element-ui';
Vue.use(ElementUI);
# vue-awesome-swiper 轮播图
//新版本有bug 写死版本号 3.1.3
cnpm install vue-awesome-swiper --save
全局挂载
import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper'
// require styles
import 'swiper/dist/css/swiper.css'
Vue.use(VueAwesomeSwiper, /* { default global options } */)
局部挂载===>组件挂载
// require styles
import 'swiper/dist/css/swiper.css'
import { swiper, swiperSlide } from 'vue-awesome-swiper'
export default {
components: {
swiper,
swiperSlide
}
}
data(){
return{
swiperOption: {
autoplay: true,
loop: true,
effect: 'cube',
cubeEffect: { //阴影效果
shadowOffset: 100,
shadowScale: 0.6
},
pagination: { // 分页器配置
el: '.swiper-pagination',
clickable: true
},
navigation: {// 箭头配置
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
}
}
}
}
# sass 全局引用
npm install sass-resources-loader
可以引用全局变量
官网
// vue.config.js
module.exports = {
chainWebpack: config => {
const oneOfsMap = config.module.rule('scss').oneOfs.store
oneOfsMap.forEach(item => {
item
.use('sass-resources-loader')
.loader('sass-resources-loader')
.options({
// Provide path to the file with resources
// 要公用的scss的路径 但单独文件 多个文件[]
resources: './src/assets/css/base.scss'
})
.end()
})
}
}
局部引入
@import "~@/assets/css/var.scss";
@import './../assets/scss/config.scss';
# mixinx (混合开发)
utils/mixins.js
export default {
data () {
return {
name: 'mixins',
minixName: 'minixObj',
flag: false
}
},
mounted() {
console.log('minixMounted');
},
methods: {
speak() {
console.log('this is minix');
},
getData() {
return '100';
}
}
}
views/page.vue 局部引入mixins
import Minix from '../utils/mixnins';
export default {
data () {
return {
name: 'page',
lists: [1, 2, 3, 4]
}
},
mounted() {
console.log('todoMounted');
},
minixs: [Minix], // page.vue 中声明minix 进行混合
methods: {
speak () {
console.log('this is page');
},
submit() {
console.log('submit');
},
}
}
# 最终编辑后的vue
export default {
data () {
return {
name: 'page', // 共同有的data, 最后保留自己的data
lists: [1, 2, 3, 4], // 自己独有的,保留
minixName: 'minixObj', // todo没有的,会被添加进来
flag: false // todo没有的,会被添加进来
}
},
mounted() {
// 在钩子函数中的, 会被合并到page.vue 的钩子函数中,
// minix中的代码在前,自己的在后
console.log('minixMounted');
console.log('todoMounted');
},
methods: {
// 同时有的方法, 会被封装为一个数组,
// 先执行minix中的,后执行todo自己的
speak () {
[
function() {
console.log('this is minix');
},
function() {
console.log('this is page');
}
].forEach(item => {
item();
})
},
// 自己独有的,保留
submit() {
console.log('submit');
},
// 自己没有的方法会被添加进来
getData() {
return '100';
}
}
}
全局引入 mixins
在src/main.js文件加入以下两行
import Mixin from './mixins';
Vue.mixin(Mixin);