最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0 項(xiàng)目搭建和使用流程

 更新時(shí)間:2021年11月22日 16:33:35   作者:梳碧湖的砍柴人  
這篇文章主要介紹了vue3.0 項(xiàng)目搭建和使用流程,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下

最近在重構(gòu)一個(gè)老項(xiàng)目,領(lǐng)導(dǎo)要求使用新的技術(shù)棧。好吧,是時(shí)候秀一波我新學(xué)的vue3.0了。

不多bb,開(kāi)始我的表演。。。(以下只是我自己個(gè)人的理解和使用習(xí)慣,僅供參考哦)

一:項(xiàng)目搭建

1. 可以自己配置vite,但是為了節(jié)省時(shí)間,我就使用腳手架直接搭建。(有興趣可以研究一下vite,還是很香的)

2. 項(xiàng)目生成:iTerm下: vue create myproject

之后根據(jù)自己的要求選擇不同的配置

選擇我們需要的3.x

之后按照要求配置一下router,已經(jīng)pack.json 。。。 然后npm run serve

ok。一個(gè)基本的3.0項(xiàng)目搭建完成,結(jié)束。(那是不可能的)

二: 目錄結(jié)構(gòu)

原始的目錄結(jié)構(gòu)如下所示:

為了方便數(shù)據(jù)管理,我們需要自定義一些其他的文件。下面是一個(gè)簡(jiǎn)單的demo結(jié)構(gòu):

hooks用來(lái)定義一些公共組件的方法,可以在多個(gè)組件里面復(fù)用,也可以和vuex聯(lián)用。

typing定義一些你需要使用的ts類型。比如:

根據(jù)不同的組件拆分不同的類型,然后統(tǒng)一在index中導(dǎo)出。index中可以定義一些公共的類型。

request定義一些http請(qǐng)求。

base.ts基本路徑

api.ts合集api??

http.ts 可以做一下axios請(qǐng)求攔截和配置一下環(huán)境。(development, product)

整體配置大致就是這樣,把a(bǔ)pi,以及ts類型集中起來(lái),更方便之后的管理。

在組件內(nèi)部也需要拆分:

這是一個(gè)about頁(yè)面。分為.vue文件和一個(gè)內(nèi)部Hooks的文件夾。.vue文件是基本demo結(jié)構(gòu)。hooks里面根據(jù)不同的功能拆分不同的文件。比如:listDownHooks.ts文件就是用來(lái)出來(lái)下拉菜單的方法集合。還可以單獨(dú)拆分一個(gè)樣式文件,(我覺(jué)得有點(diǎn)麻煩就沒(méi)做..)

目錄結(jié)構(gòu)就是這樣。先在typing定義基本的數(shù)據(jù)類型,然后再每個(gè)組件下的Hooks里面的方法中引入之后在.vue文件里面使用對(duì)應(yīng)的方法。

三: Composition Api

Composition Api是一組基于功能的附加API,可以靈活地組合組件邏輯。配合ts食用更佳~~~

1. defineComponent

從Composition Api中解構(gòu)出來(lái),配合ts。 定義一個(gè)組件:

export default?defineComponent({});

如果你不使用ts,也可以使用export default {} 的寫法。

2. setup

Composition Api核心的部分,是vue3.0的亮點(diǎn)。替代之前beforeCreate和created生命周期。

可以在setup中初始化一些響應(yīng)式數(shù)據(jù)。

setup(props, ctx) 接受兩個(gè)參數(shù),props和ctx(上下文).

props是傳統(tǒng)的父?jìng)髯訑?shù)據(jù)。不建議在setup中解構(gòu)props,這樣會(huì)使props失去響應(yīng)。

ctx中可以解構(gòu)出,slots,attrs, emit,用法類同于2.0。

3. ref和reactive

用來(lái)創(chuàng)建響應(yīng)式數(shù)據(jù)的方法。從vue中解構(gòu)出來(lái)? =>? ??import {ref, reactive} from 'vue';

ref使用:

import {ref, defineComponent} from 'vue';
export default defineComponent({
 setup() {
  const number = ref(0);
  console.log(number); 
  return {
   number
  }
 }
})

通過(guò)ref創(chuàng)建一個(gè)響應(yīng)式數(shù)據(jù),console看一下。

這是一個(gè)ref式響應(yīng)數(shù)據(jù),我們?cè)诓僮鞯臅r(shí)候通過(guò)number.value來(lái)操作數(shù)據(jù),然后把結(jié)果return回去。

ref 聲明基本類型和引用類型的區(qū)別?

ref聲明基本類型,是創(chuàng)建了一個(gè)ref的響應(yīng)式對(duì)象

ref聲明引用類型,也是創(chuàng)建了一個(gè)ref的對(duì)象,但是內(nèi)部是用reactive方法包裝的響應(yīng)式對(duì)象

如果你的ref對(duì)象被更改在一個(gè)reactive里面,可以直接通過(guò)key,value方法獲取

reactive使用:

import {reactive, defineComponent, toRefs} from 'vue';
export default defineComponent({
 setup() {
  const obj = reactive({   
    menuList: [] as Array<T>
   });
  console.log(number); 
  return {
    ...toRefs(obj);
  }
 }
})

創(chuàng)建一個(gè)proxy式的響應(yīng)數(shù)據(jù)。通過(guò)toRefs將數(shù)據(jù)return回去。內(nèi)部是這樣的:

個(gè)人覺(jué)得:一些基本類型可以多使用ref定義,對(duì)于一個(gè)整體的定義,可以使用reactive。

其他:

其他的一些常用的方法比如:computed, watch,等其實(shí)用法和2.0差不多。這里不多描述。

四: 基本使用:

用一個(gè)基本的新聞列表為例。

主要就是在mounted階段調(diào)取數(shù)據(jù),在翻頁(yè)的時(shí)候刷新數(shù)據(jù)。

目錄:

src -> views -> News -> Hook ->newsListHook.ts (用來(lái)處理列表數(shù)據(jù))

在文件中定義一下原始數(shù)據(jù)。

let dataSource = reactive({
 list: [] as Array<InewsList> // InewsList是數(shù)據(jù)類型 
});

定義一個(gè)newsList() 方法,內(nèi)部包含一個(gè)getList方法用來(lái)獲取接口數(shù)據(jù)。一個(gè)方法分頁(yè)請(qǐng)求時(shí)候觸發(fā),把getList在mounted掛載。之后將數(shù)據(jù)和方法return出去。代碼如下:

/** * 1. 列表請(qǐng)求數(shù)據(jù) */import api from '../../../request/api';
import {reactive, onMounted} from 'vue';
import {InewsList} from '../../../typing';
export function newsList(): object { 
 let dataSource = reactive({list: [] as Array<InewsList>});
 function getList(obj: object): void {
  api.newsList(obj).then(res => {
   dataSource.list = res.data.data; })
 };
 function onChange(e: any): void {
  let start = e || 10;
  const obj = {start,num: 10};
  getList(obj);
 }; 
 onMounted(() => {
  const startObj = {start: 1, num: 10};
  getList(startObj);
 }); 
 return {
  dataSource,
  getList,
  onChange
}}

之后src -> views -> News ->News.vue文件中使用。

import {newsList} from './Hook/newslistHook';
export default defineComponent({ 
  name: 'news',
  setup() { 
  const list = newsList();
  return {
   ...list // list中包含著所有定義的數(shù)據(jù)和方法。
  } 
}})

console一下list:

這樣就可以直接在vue文件中渲染使用了。

總結(jié)一下:把需要用的方還有一些事件(click, mousedown, keyup...)可以放在hook中執(zhí)行,vue文件就是用來(lái)數(shù)據(jù)渲染。

項(xiàng)目中使用到了antd的Vue框架,大家在使用的時(shí)候最好按需加載。畢竟antd太大啦。

import Menu from 'ant-design-vue/es/menu/index'
import Select from 'ant-design-vue/es/select/index'
createApp(App).use(store).use(router).use(Menu).use(Select)

好啦,就到這里啦。新人嘗試寫vue3.0,不足地方多多指出哦。

以上就是vue3.0 項(xiàng)目搭建和使用流程的詳細(xì)內(nèi)容,更多關(guān)于vue3.0 項(xiàng)目搭建和使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue在.js文件中如何進(jìn)行路由跳轉(zhuǎn)

    vue在.js文件中如何進(jìn)行路由跳轉(zhuǎn)

    這篇文章主要介紹了vue在.js文件中如何進(jìn)行路由跳轉(zhuǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 如何解決ElementUI導(dǎo)航欄重復(fù)點(diǎn)菜單報(bào)錯(cuò)問(wèn)題

    如何解決ElementUI導(dǎo)航欄重復(fù)點(diǎn)菜單報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了如何解決ElementUI導(dǎo)航欄重復(fù)點(diǎn)菜單報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 詳解 vue.js用法和特性

    詳解 vue.js用法和特性

    Vue.js目前已經(jīng)更新到2.x,功能和語(yǔ)法上有一定升級(jí)和修改,本文首先介紹基礎(chǔ)內(nèi)容。感興趣的朋友一起看看吧
    2017-10-10
  • 詳解vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案

    詳解vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案

    這篇文章主要介紹了vue 在移動(dòng)端體驗(yàn)上的優(yōu)化解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue項(xiàng)目報(bào)錯(cuò):Missing?script:"serve"的解決辦法

    vue項(xiàng)目報(bào)錯(cuò):Missing?script:"serve"的解決辦法

    這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目報(bào)錯(cuò):Missing?script:"serve"的解決辦法,"missing script: serve"是一個(gè)錯(cuò)誤信息,意味著在執(zhí)行啟動(dòng)腳本時(shí),找不到名為"serve"的腳本,需要的朋友可以參考下
    2023-11-11
  • vue+element-ui表格自定義列模版的實(shí)現(xiàn)

    vue+element-ui表格自定義列模版的實(shí)現(xiàn)

    本文主要介紹了vue+element-ui表格自定義列模版的實(shí)現(xiàn),通過(guò)插槽完美解決了element-ui表格自定義列模版的問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Vue首屏加載過(guò)慢出現(xiàn)長(zhǎng)時(shí)間白屏的實(shí)現(xiàn)

    Vue首屏加載過(guò)慢出現(xiàn)長(zhǎng)時(shí)間白屏的實(shí)現(xiàn)

    本文主要介紹了Vue首屏加載過(guò)慢出現(xiàn)長(zhǎng)時(shí)間白屏的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • vue.js響應(yīng)式原理解析與實(shí)現(xiàn)

    vue.js響應(yīng)式原理解析與實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了vue.js響應(yīng)式原理解析與實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 解決vue過(guò)濾器filters獲取不到this對(duì)象的問(wèn)題

    解決vue過(guò)濾器filters獲取不到this對(duì)象的問(wèn)題

    這篇文章主要介紹了解決vue過(guò)濾器filters獲取不到this對(duì)象的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • vue?路由切換過(guò)渡動(dòng)效滑入滑出效果的實(shí)例代碼

    vue?路由切換過(guò)渡動(dòng)效滑入滑出效果的實(shí)例代碼

    在支付寶賬單頁(yè)面有這樣一個(gè)特效切換過(guò)渡動(dòng)效滑入滑出效果,非常方便實(shí)用,那么這個(gè)功能如何實(shí)現(xiàn)的呢?下面小編通過(guò)vue實(shí)現(xiàn)路由切換過(guò)渡動(dòng)效滑入滑出效果,感興趣的朋友一起看看吧
    2022-03-03

最新評(píng)論

南汇区| 白河县| 滨州市| 和龙市| 博兴县| 辽阳县| 花莲县| 遵义市| 万荣县| 安宁市| 天镇县| 高密市| 大庆市| 西昌市| 榆中县| 休宁县| 洛南县| 左权县| 乌兰察布市| 彰化县| 永川市| 利川市| 得荣县| 汕尾市| 通江县| 娱乐| 九江县| 年辖:市辖区| 青阳县| 浏阳市| 肥东县| 吉水县| 扎鲁特旗| 泰兴市| 乌拉特前旗| 连平县| 郯城县| 龙门县| 托克托县| 绥芬河市| 肥西县|