摘要:適用于主要入口頁(yè)面生成多頁(yè),子頁(yè)面和次要頁(yè)面使用單頁(yè)形式的項(xiàng)目。文件用來存放固定的數(shù)據(jù),而文件可更加自由的處理并返回?cái)?shù)據(jù)。
VUE2的單頁(yè)應(yīng)用框架有人分享了,多頁(yè)應(yīng)用框架也有人分享了,這里分享一個(gè)單頁(yè)+多頁(yè)的混合應(yīng)用框架吧,node.js寫了一個(gè)簡(jiǎn)單的mock服務(wù)也集成在里面,整體初現(xiàn)雛形,還有很多需要優(yōu)化和改善的地方。。。
項(xiàng)目結(jié)構(gòu)│ ├─build /* webpack的配置目錄 */ │ ├─config.js /* 公共常量,用于配置文件 */ │ ├─utils.js /* 工具函數(shù),用于配置文件 */ │ ├─webpack.base.conf.js /* 公共配置文件 */ │ ├─webpack.dev.conf.js /* 開發(fā)環(huán)境配置文件 */ │ └─webpack.prod.conf.js /* 生產(chǎn)環(huán)境配置文件 */ │ ├──mock /* mock服務(wù)和mock數(shù)據(jù) */ │ ├─api /* 存放mock數(shù)據(jù) */ │ └─mock-server.js /* mock服務(wù) */ │ ├──src /* 項(xiàng)目源碼 */ │ │ │ ├─api /* 所有后端接口 */ │ │ ├──index.js │ │ └──product.js │ │ │ ├─assets /* 公共的靜態(tài)文件 */ │ │ ├─fonts │ │ ├─img │ │ └─style │ │ │ ├─utils /* 業(yè)務(wù)無關(guān)的工具函數(shù) */ │ │ │ ├─common /* 業(yè)務(wù)相關(guān)的公共函數(shù) */ │ │ config.js │ │ http.js │ │ │ ├─components /* 公共組件, 如Dialog、Loading等 */ │ │ └─navbar │ │ │ ├─pages /* 頁(yè)面 │ │ │ │ │ ├─index/ 每個(gè)頁(yè)面一個(gè)文件夾,當(dāng)前頁(yè)面的樣式、圖片、子組件都存放在自已的文件夾下。 │ │ │ 為了項(xiàng)目結(jié)構(gòu)清晰,一級(jí)目錄以模塊劃分,二級(jí)目錄則為頁(yè)面目錄。 │ │ ├─my/ */ │ │ │ └─order/ │ │ │ │ │ ├─product/ │ │ │ └─list/ │ │ │ │ │ ├─App.vue /* 多頁(yè)應(yīng)用的公共入口頁(yè)面 */ │ │ │ │ │ └─main.js /* 多頁(yè)應(yīng)用的公共入口函數(shù) */ │ │ │ ├─router /* 路由配置 */ │ │ router.js │ │ │ └─store /* 狀態(tài)管理 */ │ │ actions.js │ │ getters.js │ │ index.js │ │ mutation-types.js │ │ mutations.js │ │ │ └─modules │ ├─── .babelrc /* babel配置 */ ├─── .editorconfig /* 開發(fā)工具配置 */ ├─── index.html /* 公共模板文件 */ ├─── package.json /* 包描述文件 */ └─── postcss.config.js /* postcss相關(guān)插件配置 */項(xiàng)目簡(jiǎn)介
一個(gè)集 多頁(yè)應(yīng)用 + 單頁(yè)應(yīng)用 的混合項(xiàng)目框架。
適用于主要入口頁(yè)面生成多頁(yè),子頁(yè)面和次要頁(yè)面使用單頁(yè)形式的項(xiàng)目。
技術(shù)棧ES6+
Vue2.0
Vuex
Vue-Router
Axios
Webpack4
?
項(xiàng)目打包說明npm模塊(vue、vuex之類)打包成一個(gè)多帶帶的js文件
公共組件和公共函數(shù)打包成一個(gè)多帶帶的js文件
單頁(yè)和多頁(yè),都按頁(yè)面打包,即每個(gè)頁(yè)面組件都打包成多帶帶的js文件,按需加載
公共樣式和各頁(yè)面樣式均各自打包成多帶帶的css文件
如何配置多頁(yè)?"多頁(yè)面"根據(jù)添加一個(gè)簡(jiǎn)單的入口文件(entry.js)即可自動(dòng)生成html頁(yè)面。
打包時(shí),自動(dòng)遍歷"/src/pages/"目錄,查找所有目錄下的"entry.js"文件,
每個(gè)"entry.js"文件都作為一個(gè)多帶帶的打包入口,每個(gè)入口生成多帶帶的.html文件
多入口配置在需要生成多帶帶html頁(yè)面的目錄下新建一個(gè)entry.js文件,并引入一個(gè)公共的入口js文件 /src/pages/main.js,
給公共入口函數(shù)傳遞一個(gè)當(dāng)前html頁(yè)面默認(rèn)要展示的頁(yè)面組件。
入口示例entry.js 入口文件,只需要修改要加載的頁(yè)面組件即可,比如此例中的 ./list.vue
//導(dǎo)入公共入口文件 (必須) import main from "@/pages/main" //默認(rèn)加載的頁(yè)面組件 (必須) import List from "./list.vue" //傳遞一個(gè)要展示的頁(yè)面組件給公共入口函數(shù) (必須) main.init(List)
?
html模板一個(gè)打包入口對(duì)應(yīng)一個(gè)html模板。
所有頁(yè)面默認(rèn)使用項(xiàng)目根目錄下的 /index.html 作為模板。
如果某個(gè)頁(yè)面需要多帶帶的html模板,可在其目錄下新建名為 entry.html 的文件,打包時(shí)會(huì)自動(dòng)將其識(shí)別為當(dāng)前頁(yè)面的模板。
注:只有在有入口文件(entry.js)的目錄下添加多帶帶的html模板,才有效。
?
單頁(yè)配置根據(jù) vue-router 插件的路由配置 (./router/router.js) 來生成單頁(yè)js文件。
每個(gè)html頁(yè)面都是共用的同一個(gè)路由配置 (router.js文件) ,因此單頁(yè)的頁(yè)面組件可渲染在任意一個(gè)html中。
?
插件說明此示例中沒有使用 Generator函數(shù) 和 async/await,所以排除了對(duì)應(yīng)的babel插件,打包文件也小了20幾Kb,
如果你需要它們,可以在 .babelrc 文件中去掉排除項(xiàng)。
所用插件在package.json文件中可查看,具體插件功能及配置可到插件的npm包主頁(yè)查看
?
安裝插件npm install or yarn install開發(fā)&打包
執(zhí)行以下命令預(yù)覽非常簡(jiǎn)單的demo
//啟動(dòng) Web 開發(fā)服務(wù)器與 Mock 服務(wù)器 npm start //構(gòu)建生產(chǎn)文件 npm run build
?
mock數(shù)據(jù)服務(wù) 概述所有mock文件直接放在 ./api 目錄的根目錄下。(不支持子目錄,可自行修改mock-server.js來實(shí)現(xiàn))
mock文件名必須和接口文件名一致,才能將請(qǐng)求接口匹配上mock文件。
mock文件可以是 .js 文件或 .jso 文件,如果對(duì)同一接口分別創(chuàng)建了js和json兩個(gè)mock文件,會(huì)優(yōu)先取js文件的數(shù)據(jù)。
json文件用來存放固定的mock數(shù)據(jù),而js文件可更加自由的處理并返回mock數(shù)據(jù)。
修改api目錄下的mock文件后,無需重啟node服務(wù),重新調(diào)用接口會(huì)返回新的數(shù)據(jù)。
啟動(dòng)mock服務(wù)有兩種方式:
1、執(zhí)行命令 npm start 啟動(dòng)當(dāng)前項(xiàng)目時(shí),會(huì)自動(dòng)啟動(dòng)mock服務(wù)(此為默認(rèn)方式,在package.json中配置)。
$ npm start
2、手動(dòng)執(zhí)行node服務(wù)文件 ./mock/mock-server.js
$ node ./mock/mock-server.js項(xiàng)目中使用mock接口
在配置文件 /build/webpack.dev.conf 中,使用webpack插件 webpack-dev-server 的代理屬性 (proxy) ,將接口服務(wù)器轉(zhuǎn)發(fā)到mock服務(wù)器。
mock服務(wù)器接收到轉(zhuǎn)發(fā)過來的請(qǐng)求后,截取URL請(qǐng)求路徑中的接口名,再用API接口的名字去匹配 ./mock/api 目錄下的mock文件名,
最終返回mock文件中的數(shù)據(jù)。
mock文件名必須和接口文件名一致
例1:mock文件編寫規(guī)則如果接口為 "/service/user/getUserInfo"
則mock數(shù)據(jù)文件名為 "getUserInfo.js" 或者 "getUserInfo.json"
例2:
如果接口為 "/service/user/getUserInfo.do"
則mock數(shù)據(jù)文件名為 "getUserInfo.do.js" 或者 "getUserInfo.do.json"
API接口名.json 文件只支持json格式的數(shù)據(jù),例:
{ "code": 1, "msg": "失敗", "data":{ "age": 520, "card": 10099 }, "servertime": 1534835882204 }
API接口名.js 文件必須導(dǎo)出一個(gè)函數(shù),函數(shù)接收兩個(gè)參數(shù),需在函數(shù)中返回mock數(shù)據(jù),例:
/* 返回mock數(shù)據(jù) @param {object} getData 接口的GET數(shù)據(jù) @param {object} postData 接口的POST數(shù)據(jù) */ module.exports = function(getData, postData) { //to do something... return { code: 0, msg: "成功" data: {} } }
?
最后,框架源碼地址:https://github.com/ahbool/vue-mix-pages,歡迎 +Star
demo很爛,將就著看吧 !-_-
在使用過程中如果發(fā)現(xiàn)有待優(yōu)化的地方或者好的建議,歡迎提出。。。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/97389.html
摘要:哪吒別人的看法都是狗屁,你是誰只有你自己說了才算,這是爹教我的道理。哪吒去他個(gè)鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰和你做朋友太乙真人人是否能夠改變命運(yùn),我不曉得。我只曉得,不認(rèn)命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:無需使用服務(wù)器實(shí)時(shí)動(dòng)態(tài)編譯,而是使用預(yù)渲染方式,在構(gòu)建時(shí)簡(jiǎn)單地生成針對(duì)特定路由的靜態(tài)文件。與可以部署在任何靜態(tài)文件服務(wù)器上的完全靜態(tài)單頁(yè)面應(yīng)用程序不同,服務(wù)器渲染應(yīng)用程序,需要處于運(yùn)行環(huán)境。更多的服務(wù)器端負(fù)載。 目錄結(jié)構(gòu) -no-ssr-demo 未做ssr之前的項(xiàng)目代碼用于對(duì)比 -vuecli2ssr 將vuecli生成的項(xiàng)目轉(zhuǎn)為ssr -prerender-demo 使用prer...
閱讀 4307·2021-09-24 09:47
閱讀 1187·2021-09-03 10:33
閱讀 2068·2019-08-30 11:13
閱讀 1034·2019-08-30 10:49
閱讀 1756·2019-08-29 16:13
閱讀 2049·2019-08-29 11:28
閱讀 3096·2019-08-26 13:31
閱讀 3636·2019-08-23 17:14