帶你一步步從零搭建一個(gè)Vue項(xiàng)目
一、項(xiàng)目創(chuàng)建
1、打開(kāi)命令行窗口Cd /d進(jìn)入想要?jiǎng)?chuàng)建項(xiàng)目的位置,輸入vue create 項(xiàng)目名
2、選擇Vue2
3、運(yùn)行該項(xiàng)目
4、創(chuàng)建成功
在瀏覽器中輸入以上網(wǎng)址:localhost:8080,來(lái)到一下界面,說(shuō)明成功
二、路由的配置
1、安裝路由(vue2 只能安裝3版本的vue-router)
看一下這個(gè)文件有vue-router代表安裝成功
2、配置路由
(1、創(chuàng)建router文件夾
(2、創(chuàng)建index.js,配置路由
重定向的解釋:當(dāng)網(wǎng)址下(如localhost:8080/xxx)匹配不到相應(yīng)的路由的時(shí)候,則跳轉(zhuǎn)到重定向所設(shè)置的路徑
路由組件與非路由組件的歸類:compoents文件夾一般放置非路由組件
pages文件夾一般放置路由組件
路由還有很多沒(méi)寫(xiě):(
1、路由守衛(wèi):解決在某些條件下不能跳轉(zhuǎn)到其他路由
2、二級(jí)路由
3、路由組件在某些地方不展示,可以增加一個(gè)屬性
4、路由的傳參和跳轉(zhuǎn)
)
meta:可以配置一些參數(shù),作用其實(shí)是讓一些非路由組件展示與不展示
//引入Vue import Vue from "vue"; //引入Vue-router import VueRouter from "vue-router"; //使用VueRouter Vue.use(VueRouter); //引入路由組件 import Home from "@/components/Home" import Search from "@/components/Search" //對(duì)外暴露一個(gè)Vue實(shí)例 export default new VueRouter({ //配置路由 routes:[ { path:'/Home', component:Home, name:"Home", meta:{isshow:true} }, { path:'/Search', component:Search, name:"Search", meta:{isshow:false} }, //重定向 { path:'*', redirect:"/Home" } ] })
在main.js出口文件中注冊(cè)路由
import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false //引入路由 import router from './router' new Vue({ render: h => h(App), //配置路由,KV一致,省略V //這里使用router之后,組件身上都有$router,$route屬性 //$router最常用來(lái)跳轉(zhuǎn)push跳轉(zhuǎn) $route最常用來(lái)獲取參數(shù) router }).$mount('#app')
Vue中配置一個(gè)出口 <router-viwe><router-view/>
<template> <div id="app"> <Header/> <!-- 路由的出口 --> <router-view></router-view> <Footer/> </div> </template> <script> import Header from './components/Header' import Footer from "@/components/Footer" export default { name: 'App', components: { Header, Footer } } </script> <style> </style>
三、API接口配置
1、安裝axios
axios幫助文檔 配置的時(shí)候可以跟著來(lái),不用死記硬背
這里面有代表安裝成功
2、axios的二次封裝
(1、創(chuàng)建api文件夾,創(chuàng)建resquest.js文件(其實(shí)該文件就是axios)
(2、axios的二次封裝 看著文檔來(lái)
//引用axios import axios from "axios"; const requests = axios.create({ // baseURL的作用 例如我有一個(gè)接口的網(wǎng)址為www.baidu/api/love // 如果很多接口都是www.baidu/api/xxx //我可以省略/api,因?yàn)閍xios會(huì)自動(dòng)幫你添上,這就是baseUrl的作用 baseURL: '/api', //請(qǐng)求超時(shí)的時(shí)間為5s timeout: 5000, }); //請(qǐng)求攔截器,發(fā)請(qǐng)求之前可以做一些事情 requests.interceptors.request((config)=>{ //config配置對(duì)象,有一個(gè)屬性 請(qǐng)求頭headers return config; }) //相應(yīng)攔截器 requests.interceptors.response((res)=>{ // 服務(wù)器成功返回 //簡(jiǎn)化返回的數(shù)據(jù),只返回data return res.data; },(error)=>{ //失敗 //靜態(tài)函數(shù)Promise.reject返回一個(gè)被拒絕的Promise對(duì)象。通過(guò)使用 Error的實(shí)例 獲取錯(cuò)誤原因(reason)對(duì)調(diào)試和選擇性錯(cuò)誤 捕捉很有幫助。 Promise.reject(new Error("faile")); })
在API文件下創(chuàng)建一index.js文件,用來(lái)統(tǒng)一管理接口請(qǐng)求
//結(jié)構(gòu)統(tǒng)一管理 import requests from "./request" //method 有g(shù)et 和 post兩種方式 // 有參數(shù)的需要些模板字符串`` export const reqGetSomeInfo = (p)=>requests({url:`"/baidu/${p}"`,method:"get"}); // 無(wú)參數(shù)直接寫(xiě) export const reqGetSomeInfo2 = ()=>requests({url:"/baidu",method:"get"}); //需要傳對(duì)象的可以用data屬性 export const reqGetSomeInfo3 = (p,data)=>requests({url:`"/baidu"/${p}`,data:data,method:"get"});
3、跨域問(wèn)題
跨域:如果多次請(qǐng)求協(xié)議、域名、端口號(hào)有不同的地方,稱之為跨域
傳統(tǒng)的解決方式:JSONP、CROS、代理
代理:
在vue.config.js里添加一下代碼
//配置代理跨域 devServer: { // /api的作用是:當(dāng)?shù)刂分校霈F(xiàn)api時(shí),瀏覽器會(huì)自動(dòng)向target請(qǐng)求數(shù)據(jù) //注意配置這個(gè),需要重新啟動(dòng)一下項(xiàng)目 proxy: { "/api": { target: "http://39.98.123.211", }, }, },
四、Vuex
以前寫(xiě)的Vuex詳解 不贅敘了
1、安裝vuex
同樣這個(gè)json文件里面有,就是安裝成功了
2、配置倉(cāng)庫(kù) 創(chuàng)建store文件夾,是為大倉(cāng)庫(kù)。Home文件夾是Home小倉(cāng)庫(kù)
Home倉(cāng)庫(kù)(在此處調(diào)用api接口)
import { reqGetSomeInfo } from "@/api" const state = { someInfo:[]//此處是空對(duì)象 還是 空數(shù)組要看接口返回的值 } const mutations = { GETSUM(state,someInfo) { state.someInfo = someInfo; } } const actions = { //params是攜帶的參數(shù) async getsum({commit},params) { let result = await reqGetSomeInfo; if(result.code == 200)//請(qǐng)求成功會(huì)返回code = 200 { commit("GETSUM",result.data) } } } //getter是為了簡(jiǎn)化操作 const getters = {} export default{ state, actions, getters, mutations }
小倉(cāng)庫(kù)需要在大倉(cāng)庫(kù)注冊(cè) Store.js
import Vue from "vue"; import Vuex from "vuex" Vue.use(Vuex); import Home from "./Home" export default new Vuex.Store({ modules:{ Home,//Home小倉(cāng)庫(kù)在大倉(cāng)庫(kù)里注冊(cè) } })
入口文件引入store main.js
import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false //引入路由 import router from './router' //引入倉(cāng)庫(kù) import store from './store' new Vue({ render: h => h(App), //配置路由,KV一致,省略V //這里使用router之后,組件身上都有$router,$route屬性 //$router最常用來(lái)跳轉(zhuǎn)push跳轉(zhuǎn) $route最常用來(lái)獲取參數(shù) router, //這里使用store后,組件身上都有了$store屬性 store, }).$mount('#app')
整個(gè)流程走一遍,發(fā)現(xiàn)vue也沒(méi)有那么難,真的把這四個(gè)組件搞明白,會(huì)很輕松。 前路漫漫,切不可放松。加油,努力
總結(jié)
到此這篇關(guān)于從零搭建一個(gè)Vue項(xiàng)目的文章就介紹到這了,更多相關(guān)Vue項(xiàng)目搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3全局組件注冊(cè)的實(shí)現(xiàn)代碼
在這篇文章中,我們將學(xué)習(xí)一下 Vue3 的全局組件注冊(cè)是如何實(shí)現(xiàn)的,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12Vue實(shí)現(xiàn)刷新當(dāng)前頁(yè)面的三種方式總結(jié)
項(xiàng)目當(dāng)中如果做新增/修改/刪除等等操作通常情況下都需要刷新數(shù)據(jù)或者刷新當(dāng)前頁(yè)面。本文為大家整理了三種不同的實(shí)現(xiàn)方法,需要的可以參考一下2023-01-01vue3使用useMouseInElement實(shí)現(xiàn)圖片局部放大預(yù)覽效果實(shí)例代碼
現(xiàn)在很多的項(xiàng)目里面圖片展示縮略圖,然后點(diǎn)擊實(shí)現(xiàn)圖片預(yù)覽,放大的功能,下面這篇文章主要給大家介紹了關(guān)于vue3使用useMouseInElement實(shí)現(xiàn)圖片局部放大預(yù)覽效果的相關(guān)資料,需要的朋友可以參考下2023-03-03vue跳轉(zhuǎn)頁(yè)面并且實(shí)現(xiàn)參數(shù)傳遞接受示例
這篇文章主要為大家介紹了vue跳轉(zhuǎn)頁(yè)面并且實(shí)現(xiàn)參數(shù)傳遞接受示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Jeeplus-vue?實(shí)現(xiàn)文件的上傳功能
這篇文章主要介紹了Jeeplus-vue?實(shí)現(xiàn)文件的上傳,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09electron+vue?實(shí)現(xiàn)靜默打印功能
這篇文章主要介紹了electron+vue?實(shí)現(xiàn)靜默打印功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06Vue+Typescript中在Vue上掛載axios使用時(shí)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了Vue+Typescript中在Vue上掛載axios使用時(shí)報(bào)錯(cuò)問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08vue填坑之webpack run build 靜態(tài)資源找不到的解決方法
今天小編就為大家分享一篇vue填坑之webpack run build 靜態(tài)資源找不到的解決方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)2
這篇文章主要介紹了Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)的相關(guān)資料,實(shí)現(xiàn)Observer構(gòu)造函數(shù),監(jiān)聽(tīng)已有數(shù)據(jù)data中的所有屬性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01