摘要:本文以及后面相應(yīng)文章,主要是相關(guān)技術(shù)棧來快速的實(shí)現(xiàn)單頁應(yīng)用開發(fā)。原文出處其他使用快速開發(fā)單頁應(yīng)用主體結(jié)構(gòu)使用快速開發(fā)單頁應(yīng)用使用快速開發(fā)單頁應(yīng)用登錄頁面使用快速開發(fā)單頁應(yīng)用功能組件與路由組件通信
本文所涉及代碼全在vue-cnode
單頁應(yīng)用,即在一個(gè)頁面集成系統(tǒng)中所有功能,整個(gè)應(yīng)用只有一個(gè)頁面。因?yàn)槁酚傻目刂圃谇岸耍瑔雾撁鎽?yīng)用在頁面切換時(shí)比傳統(tǒng)頁面更快,從而在前端體驗(yàn)更好。
將邏輯從后端轉(zhuǎn)移到前端,提升了性能減少了頁面加載時(shí)間,前后邏輯更扁平。但是當(dāng)頁面復(fù)雜度變高時(shí),你會(huì)發(fā)現(xiàn),數(shù)據(jù)處理,UI交互將變得難以維護(hù),所以應(yīng)運(yùn)而生,出現(xiàn)了很多MV框架和類庫。Vue就是其中之一,個(gè)人覺得(非喜勿噴)Vue類庫相對于其他MV框架上整體的api更為簡潔,提供的api很平衡,解決了問題的同時(shí),沒有增加復(fù)雜度。另外個(gè)人覺得vue在大型應(yīng)用,開發(fā)中使用vue-loader將組件分成template,style,script結(jié)構(gòu)更為清晰。
本文以及后面相應(yīng)文章,主要是vue相關(guān)技術(shù)棧來快速的實(shí)現(xiàn)單頁應(yīng)用開發(fā)。系列文章將以一個(gè)實(shí)際項(xiàng)目進(jìn)行講解,項(xiàng)目的github地址為:
vue-cnode demo
這是一個(gè)以cnodejs.org提供的api來開發(fā)的單頁,主要使用的modules有vue、vue-router、vuex、vue-resource。為了快速開發(fā),我們還使用了vue-cli腳手架工具,下文會(huì)做介紹。
vue-cli自從node的興起,前端項(xiàng)目中就開始出現(xiàn)各種預(yù)處理工具,當(dāng)我們開始一個(gè)新項(xiàng)目時(shí),我們都會(huì)先編寫一些預(yù)處理文件,和構(gòu)建項(xiàng)目目錄。
而vue-cli就是為了做這方面工作的,生成一套提前定義好的構(gòu)建文件,和相應(yīng)的文件。
vue-cli有5個(gè)對應(yīng)的項(xiàng)目結(jié)構(gòu)。我們使用的是vue-webpack-boilerplate。
$ npm install -g vue-cli $ vue init webpack my-project $ cd my-project $ npm install $ npm run dev
執(zhí)行上面命令后,我們將生成下面的文件結(jié)構(gòu),并開一個(gè)服務(wù),你可以打開http://localhost:8080看看。
具體的使用建議看文檔。
項(xiàng)目結(jié)構(gòu)如果你之前就了解vue和vue-router,可以先看這部分。如果你了解vue不了解vue-router,可以先看這篇文章vue-router。如果你連vue都不是很理解我建議,抽5個(gè)小時(shí)左右把文檔教程過一遍。
你可以看到項(xiàng)目根目錄下面有一個(gè)html,僅有的一個(gè)html。
上圖的結(jié)構(gòu)是我自己琢磨的,主要是結(jié)合vue-router、vuex兩使用方法來考慮的。另外對于組件的復(fù)用,將一些功能組件和全局組件都放在根部,通過vuex來控制組件屬性實(shí)現(xiàn)一些功能。
下面我就結(jié)構(gòu)由上至下的介紹。
main.jsmain.js 是我們的入口文件,主要作用是初始化vue實(shí)例并使用需要的插件。
import Vue from "vue" import App from "./App" import VueRouter from "vue-router" import VueResource from "vue-resource" import filter from "./filter" import store from "./vuex/store" import { sync } from "vuex-router-sync" import { configRouter } from "./config_router" import resourceGlobalSet from "./resource_set" Vue.use(VueResource) Vue.use(VueRouter) // 初始化自定義過濾器 Vue.use(filter) const router = new VueRouter({ history: true, saveScrollPosition: true }) configRouter(router) Vue.http.options.emulateJSON = true Vue.http.interceptors.push(resourceGlobalSet) // ajax 攔截 sync(store, router) router.start(App, "app")
就如同上面所示,主要是使用和配置相應(yīng)插件,并初始化一個(gè)vue,上面的初始化在router.start(App, "app"),是以App.vue為組要組件,并以html中的
App.vue是我們的主組件,所有頁面都是在App.vue下進(jìn)行切換的。其實(shí)你也可以理解為所有的路由也是App.vue的子組件。所以我將router標(biāo)示為App.vue的子組件。
下面是App.vue的template
你可以看到route-view和其它全局功能組件,全局組件在一個(gè)層級。
另外由于APP.vue在所有頁面都有,我們將會(huì)在APP.vue上面寫一些初始化全局方法。
routerrouter 是具體的業(yè)務(wù)組件,比如index,login,content等組件都是具體業(yè)務(wù)相關(guān)的。下面就是再和業(yè)務(wù)相關(guān)的組件。
全局組件全局組件是頁面共用的部分,比如header,footer,navbar,你可能在想如果我有一些header是獨(dú)特的怎么辦,這種情況下可以通過路由做判斷,渲染不同的html,如果判斷條件不是路由,也可以在vuex寫一個(gè)store記錄組件的state。
功能組件功能組件是比如dialog,tip等組件,是用來與用戶交互的。
通常情況下,功能組件是各個(gè)組件都需要的一些組件。在一個(gè)頁面里如果有兩個(gè)組件,兩個(gè)組件都同時(shí)引了一個(gè)tip組件作為子組件是純在的。為了避免這種情況,我們將功能組件提到App.vue然后通過vuex進(jìn)行組件交互,從而就講一個(gè)功能組件變成了全局方法。
自定義插件vue還能自己寫插件。對于一些公用的方法和邏輯,我們可以提出來寫在插件里面。
小節(jié)可以看到,我們項(xiàng)目整體結(jié)構(gòu)非常清晰。入口加載初始化,主組件掛載路由全局控制,然后全局組件、功能組件借助vuex進(jìn)行數(shù)據(jù)控制。
原文出處: http://hiluluke.cn/2016/08/04...
其他
使用Vue快速開發(fā)單頁應(yīng)用-主體結(jié)構(gòu)
使用Vue快速開發(fā)單頁應(yīng)用-vue-router
使用Vue快速開發(fā)單頁應(yīng)用-登錄頁面
使用Vue快速開發(fā)單頁應(yīng)用-功能組件與路由組件通信
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80174.html
摘要:展示信息展示時(shí)間結(jié)束后,執(zhí)行回調(diào)函數(shù)如果有上面就完成了組件的整套邏輯,最后我們還需要把組件掛在。原文鏈接其他使用快速開發(fā)單頁應(yīng)用主體結(jié)構(gòu)使用快速開發(fā)單頁應(yīng)用使用快速開發(fā)單頁應(yīng)用登錄頁面使用快速開發(fā)單頁應(yīng)用功能組件與路由組件通信 本文所涉及代碼全在vue-cnode showImg(https://segmentfault.com/image?src=http://7fvhwe.com1...
摘要:當(dāng)前路由對象調(diào)用此函數(shù)處理切換過程的下一步終止切換重定向到另一個(gè)路由由于是路由切換后,只有上面的兩個(gè)屬性。原文地址其他使用快速開發(fā)單頁應(yīng)用主體結(jié)構(gòu)使用快速開發(fā)單頁應(yīng)用使用快速開發(fā)單頁應(yīng)用登錄頁面使用快速開發(fā)單頁應(yīng)用功能組件與路由組件通信 本文所涉及代碼全在vue-cnode vue-router主要作用是將路由控制,轉(zhuǎn)移到前端。我們將會(huì)在vue-router里面保存一個(gè)路由表,在vue...
摘要:首先我們從登錄頁面以及開始,因?yàn)楹罄m(xù)很多其它的頁面都需要登錄信息。大家還是看看我這做個(gè)指引,具體還是看代碼原文地址其他使用快速開發(fā)單頁應(yīng)用主體結(jié)構(gòu)使用快速開發(fā)單頁應(yīng)用使用快速開發(fā)單頁應(yīng)用登錄頁面使用快速開發(fā)單頁應(yīng)用功能組件與路由組件通信 本文所涉及代碼全在vue-cnode 前面兩篇都是介紹組織結(jié)構(gòu)和vue-router,從本文開始我們將講一些如何優(yōu)雅的用vue編寫單頁應(yīng)用。首先我們從...
摘要:趁著周末偷來一點(diǎn)閑,總結(jié)近期的工作和學(xué)習(xí),想著該花點(diǎn)心思把這套基于的單頁應(yīng)用模板簡單的給介紹一下。同時(shí)也是一套可擴(kuò)展的單頁應(yīng)用開發(fā)模板。 趁著周末偷來一點(diǎn)閑,總結(jié)近期的工作和學(xué)習(xí),想著該花點(diǎn)心思把N3-admin這套基于N3-components的單頁應(yīng)用模板簡單的給介紹一下。 首發(fā)于個(gè)人博客;blog.lxstart.net項(xiàng)目路徑: https://github.com/N3-co...
摘要:趁著周末偷來一點(diǎn)閑,總結(jié)近期的工作和學(xué)習(xí),想著該花點(diǎn)心思把這套基于的單頁應(yīng)用模板簡單的給介紹一下。同時(shí)也是一套可擴(kuò)展的單頁應(yīng)用開發(fā)模板。 趁著周末偷來一點(diǎn)閑,總結(jié)近期的工作和學(xué)習(xí),想著該花點(diǎn)心思把N3-admin這套基于N3-components的單頁應(yīng)用模板簡單的給介紹一下。 首發(fā)于個(gè)人博客;blog.lxstart.net項(xiàng)目路徑: https://github.com/N3-co...
閱讀 2376·2021-09-30 09:47
閱讀 1367·2021-09-28 09:35
閱讀 3237·2021-09-22 15:57
閱讀 2485·2021-09-22 14:59
閱讀 3634·2021-09-07 10:25
閱讀 3069·2021-09-03 10:48
閱讀 3035·2021-08-26 14:14
閱讀 933·2019-08-30 15:55