一、Vue使用Less的寫入方式
Vue使用Less進行開發可以按需引入Less文件,不需要全部引入。使用vue-loader的resolve屬性可以自動查找@import和url(),並用Webpack處理它們。在Vue CLI創建的項目中,可以在vue.config.js中增加代碼:
module.exports = {
css: {
loaderOptions: {
less: {
//引入全局less樣式
data: '@import "@/assets/css/common.less";'
}
}
}
}
在data選項中引入@import “路徑+文件名”,就可以在.vue文件中使用樣式了。
二、Vue使用v
Vue中各類指令,例如:v-bind、v-model、 v-show、v-if等指令都能夠結合Less進行開發,提高編寫效率。
例如:
<template>
<div :class="{ lessClassName: isActive }">Hello World!</div>
</template>
<script>
export default {
data() {
return {
isActive: true
}
}
}
</script>
<style lang="less">
// 定義類名
.lessClassName {
font-size: 20px;
color: #333;
}
</style>
在Vue中使用v-bind指令能夠動態綁定class、style等屬性:
<template>
<div :class="{ lessClassName: isActive }">Hello World!</div>
</template>
<script>
export default {
data() {
return {
isActive: true
}
}
}
</script>
<style lang="less">
// 定義類名
.lessClassName {
font-size: 20px;
color: #333;
&:hover {
color: red;
}
}
</style>
三、Vue使用require
Vue使用require引入其他文件,例如圖片、字體等,這樣項目就不需要在HTML中添加static目錄的前綴了:
<template>
<img :src="imagePath">
</template>
<script>
export default {
computed: {
imagePath() {
return require("@/assets/image/vue.png");
}
}
}
</script>
<style lang="less">
// 自定義iconfont
@iconfont-path: "~@/assets/font/iconfont";
@import "@{iconfont-path}/iconfont.css";
.iconfont {
font-family: "iconfont";
font-size: 16px;
}
</style>
四、Vue使用Axios
Vue使用Axios進行數據請求,可以快速、高效地獲取數據。
<template>
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
message: ''
}
},
created() {
axios.get('api/message').then(res => {
this.message = res.data;
});
}
}
</script>
<style lang="less">
// 樣式定義
</style>
五、Vuex使用
Vue使用Vuex進行狀態管理,在多個組件之間進行數據共享,提高開發效率。
// store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment(context) {
context.commit('increment');
}
}
});
export default store;
// App.vue
<template>
<div @click="add">{{ message }}</div>
</template>
<script>
import { mapState, mapMutations, mapActions } from 'vuex'
export default {
computed: {
...mapState({
message: state => state.count
})
},
methods: {
...mapMutations(['increment']),
...mapActions(['increment'])
}
}
</script>
<style lang="less">
// 樣式定義
</style>
六、使用Vue
Vue.js是一套用於構建用戶界面的漸進式框架,使用Vue可以快速構建互動式界面、組件化應用,並且具有更好的可維護性。
<template>
<div v-on:click="flag = !flag">Hello {{name}}</div>
</template>
<script>
export default {
name: 'HelloWorld',
data() {
return {
name: 'Vue.js',
flag: false
}
}
}
</script>
<style lang="less">
// 樣式定義
</style>
七、Vuex的使用方式
Vuex是一個狀態管理庫,提供了解決不同組件間狀態共享的問題。Vuex的核心概念包括:state、getters、mutations、actions和modules。
// store.js 聲明狀態以及相關邏輯
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
},
decrement(state) {
state.count--;
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment')
}, 1000)
}
},
getters: {
count(state) {
return state.count;
}
}
});
export default store;
// App.vue 使用store中的狀態以及相關邏輯
<template>
<div>
{{ $store.getters.count }}
<button @click="$store.commit('increment')">+</button>
<button @click="$store.commit('decrement')">-</button>
<button @click="$store.dispatch('incrementAsync')">非同步加1</button>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style lang="less">
// 樣式定義
</style>
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/277038.html