Vue cli
生成項目
- 全局安裝vue-cli:npm install -g vue-cli
- vue -V(檢視vue的版本,看vue腳手架是否安裝成功)
- 安裝成功後,vue init webpack 項目名稱 (建立vue的項目)
- cd 項目名稱
- npm install 安裝依賴
- npm run dev 運作架構項目
- npm uninstall 軟體名稱 解除安裝插件
腳手架結構
- build :(webpack(編譯打包器) 相關的配置檔案)
- config:(webpack(編譯打包器) 相關的配置檔案)
- --index.js :指定背景服務端口和靜态檔案資源
- node_modules:系統資源包
- src:源碼檔案夾(開發的主要目錄)
- main.js入庫js
- static:靜态檔案
- babelrc:babel的配置檔案
- editorconfig:通過編輯器編碼、格式進行一定配置
- eslintignore:eslint監測忽略的配置
- eslintrc.js:檢測的配置
- gitignore:git版本管制忽略的配置
- index.html首頁面檔案(app.vue)
- package.json(檔案配置包)
src 目錄分析
- api :背景互動子產品檔案
- common:通用職員檔案
- components:非路由元件
- pages:路由元件
- filters:自定義過來子產品檔案
- mock:模拟資料接口
- router:路由器檔案
- store:vuex狀态管理
- app.vue 應用元件
- main.js 入口js
運作
- npm run dev(開發運作(在記憶體中進行編譯打包,并且運作起來))
- npm run build(打包釋出)
- npm install -g serve (安裝serve指令)(釋出運作起來)
- serve dist(部署運作dist)
Vue 遇見問題
<template>
<footer class="footer_guide border-1px">
<!-- <a href="javascript:;" class="guide_item on">
<span class="item_icon">
<i class="iconfont icon-food"></i>
</span>
<span>外賣</span>
</a> -->
<div class="guide_item" @click="goto('/Home')" :class="{on: isCurrent('/Home')}">
<span class="item_icon">
<i class="iconfont icon-food"></i>
</span>
<span>首頁</span>
</div>
<div class="guide_item" @click="goto('/Search')" :class="{on: isCurrent('/Search')}">
<span class="item_icon">
<i class="iconfont icon-search"></i>
</span>
<span>搜尋</span>
</div>
<div class="guide_item" @click="goto('/Work')" :class="{on: isCurrent('/Work')}">
<span class="item_icon">
<i class="iconfont icon-single"></i>
</span>
<span>工作台</span>
</div>
<div class="guide_item" @click="goto('/Prosonal')" :class="{on: isCurrent('/Prosonal')}">
<span class="item_icon">
<i class="iconfont icon-user"></i>
</span>
<span>我的</span>
</div>
</footer>
</template>
<script>
export default ({
methods: {
goto (path) {
this.$router.replace(path)
},
isCurrent (path) {
// console.log(this.$route.path)
return this.$route.path === path
}
}
})
</script>
<style>
.footer_guide{
position:fixed;
z-index: 100;
left: 0;
right: 0;
bottom: 0;
background-color: #fff;
width: 100%;
height: 50px;
display: flex;
}
.guide_item{
display:flex;
flex:1;
text-align: center;
flex-direction: column;
align-items: center;
margin: 5px;
color: #999999;
}
.iconfont{
font-size:22px;
}
.on{
color: #02a774;
font-size: 12px;
margin-top: 2px;
margin-bottom: 2px;
}
</style>
- :class="{on: isCurrent('/Home')} 對象綁定文法,判斷是否要加on 這個樣式
font-awesom 圖示庫安裝
1.npm 安裝font-awesome 以及需要的所有依賴
- npm install less less-loader css-loader style-loader file-loader font-awesome --save
2.在main.js裡導入
//導入圖表的樣式
import 'font-awesome/css/font-awesome.min.css';
vuex 安裝(狀态管理)
npm install vuex --save
swiper 安裝(滑動塊)
npm install --save swiper
非路由元件
<template>
<header class="header">
<!-- 插槽是父元件與子元件的通訊方式,子元件中的slot可以顯示父元件傳遞給子元件的内容 -->
<slot name="left"></slot>
<span class="header_title">
<span class="header_title_text ellipsis">{{title}}</span>
</span>
<slot name="right"></slot>
</header>
</template>
1.slot 插槽站位(有的展示有的不展示name屬性識别)
Vue生命周期
beforeCreate( 建立前 )
在執行個體初始化之後,資料觀測和事件配置之前被調用,此時元件的選項對象還未建立,el 和 data 并未初始化,是以無法通路methods, data, computed等上的方法和資料。
created ( 建立後 )
執行個體已經建立完成之後被調用,在這一步,執行個體已完成以下配置:資料觀測、屬性和方法的運算,watch/event事件回調,完成了data 資料的初始化,el沒有。 然而,挂在階段還沒有開始, $el屬性目前不可見,這是一個常用的生命周期,因為你可以調用methods中的方法,改變data中的資料,并且修改可以通過vue的響應式綁定展現在頁面上,,擷取computed中的計算屬性等等,通常我們可以在這裡對執行個體進行預處理,也有一些童鞋喜歡在這裡發ajax請求,值得注意的是,這個周期中是沒有什麼方法來對執行個體化過程進行攔截的,是以假如有某些資料必須擷取才允許進入頁面的話,并不适合在這個方法發請求,建議在元件路由鈎子beforeRouteEnter中完成
beforeMount
挂在開始之前被調用,相關的render函數首次被調用(虛拟DOM),執行個體已完成以下的配置: 編譯模闆,把data裡面的資料和模闆生成html,完成了el和data 初始化,注意此時還沒有挂在html到頁面上。
mounted
挂在完成,也就是模闆中的HTML渲染到HTML頁面中,此時一般可以做一些ajax操作,mounted隻會執行一次。
beforeUpdate
在資料更新之前被調用,發生在虛拟DOM重新渲染和打更新檔之前,可以在該鈎子中進一步地更改狀态,不會觸發附加地重渲染過程
updated(更新後)
beforeDestroy(銷毀前)
- 這一步還可以用this來擷取執行個體,
- 一般在這一步做一些重置的操作,比如清除掉元件中的定時器 和 監聽的dom事件