亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解如何在nodejs項目中使用Vue的響應(yīng)式API

 更新時間:2024年11月26日 14:31:29   作者:前端歐陽  
vue3的響應(yīng)式API大家應(yīng)該都特別熟悉,平時大家都是在vue-cli或者vite創(chuàng)建的vue項目里面使用的這些響應(yīng)式API,今天小編來和大家聊聊如何在node.js項目中使用vue的響應(yīng)式API吧

前言

vue3的響應(yīng)式API大家應(yīng)該都特別熟悉,比如refwatchwatchEffect等。平時大家都是在vue-cli或者vite創(chuàng)建的vue項目里面使用的這些響應(yīng)式API,今天歐陽給大家?guī)硪恍┎灰粯拥?。脫離vue項目,在node.js項目中使用vue的響應(yīng)式API。

直接上代碼

話不多說,直接上代碼。這個是我在本地新建的一個最簡單的node.js項目,如下圖:

從上圖可以看到我們的node.js項目依賴只有一個:vue。并且提供了一個名為dev的腳本命令,這個腳本命令實際是在node環(huán)境內(nèi)執(zhí)行index.js文件。

我們來看index.js文件,代碼如下:

const { ref, watch, watchEffect } = require("vue");

const count = ref(0);

// 模擬count變量的值修改
setInterval(() => {
  count.value++;
}, 1000);

watch(count, (newVal) => {
  console.log("觸發(fā)watch", newVal);
});

watchEffect(
  () => {
    console.log("觸發(fā)watchEffect", count.value);
  },
  {
    flush: "sync",
  }
);

為了標(biāo)明index.js文件是在node.js環(huán)境中運行的,所以這里我特地使用require去導(dǎo)入vue導(dǎo)出的ref、watch、watchEffect這三個響應(yīng)式API。

并且我們還模擬了修改count響應(yīng)式變量值的操作,使用setInterval每隔一秒讓count的值+1。

在vue項目中一樣使用watchwatchEffect去監(jiān)聽count變量的值。

在終端執(zhí)行yarn dev,也就是執(zhí)行node index.js,如下圖:

從上圖中可以看到在node.js中的執(zhí)行結(jié)果和預(yù)期是一模一樣的。

為什么可以這樣寫呢

前面的那個例子是一個node.js項目,項目中我們并沒有像vue項目那樣去創(chuàng)建一個vue組件,然后在組件里面去使用響應(yīng)式API。而是直接在一個普通的node.js文件中使用vue暴露出來的響應(yīng)式API,并且watchwatchEffect在監(jiān)聽的值改變后同樣觸發(fā)了對應(yīng)的watch回調(diào),那么這個又是怎么做到的呢?

這得益于vue3優(yōu)秀的模塊化設(shè)計,他將核心功能拆分為多個獨立的模塊,如下圖:

比如reactivity模塊中就是響應(yīng)式的核心代碼、compiler-core模塊就是編譯相關(guān)的核心代碼。

并且這些模塊還被單獨當(dāng)作npm包進(jìn)行發(fā)布,命名規(guī)則是@vue+模塊名。比如reactivity模塊對應(yīng)的npm包就是@vue/reactivity。如下圖:

得益于模塊化的設(shè)計,響應(yīng)式相關(guān)的API和vue組件并沒有強關(guān)聯(lián)的關(guān)系,所以我們可以在node.js應(yīng)用中去直接使用響應(yīng)式API。

這里使用到了三個響應(yīng)式API,分別是:refwatchwatchEffect。在vue組件中的響應(yīng)式的實現(xiàn)原理大家多多少少都有所聽聞,其實在node.js項目中實現(xiàn)原理也是一樣的,接下來我們講講是如何實現(xiàn)響應(yīng)式的。

在我們這個demo中count是一個ref的響應(yīng)式變量,當(dāng)我們對count變量進(jìn)行讀操作時會觸發(fā)get攔截。當(dāng)我們對count變量進(jìn)行寫操作時會觸發(fā)set攔截。

在我們這里使用watchwatchEffect的代碼是下面這樣的:

watch(count, (newVal) => {
  console.log("觸發(fā)watch", newVal);
});

watchEffect(
  () => {
    console.log("觸發(fā)watchEffect", count.value);
  },
  {
    flush: "sync",
  }
);

當(dāng)代碼首次執(zhí)行到watchwatchEffect時都會對count變量進(jìn)行讀操作,并且watchwatchEffect都傳入了一個回調(diào)函數(shù)。

由于對count變量進(jìn)行讀操作了,所以就會觸發(fā)get攔截。在get攔截中會將當(dāng)前watch的回調(diào)函數(shù)作為依賴收集到count變量中。收集的方式也很簡單,因為count變量是一個對象,所以使用對象的dep屬性進(jìn)行依賴收集。因為dep屬性是一個集合,所以可以收集多個依賴。

在我們這里watchwatchEffect都觸發(fā)了count變量的get攔截,所以watchwatchEffect的回調(diào)函數(shù)都被count變量進(jìn)行了依賴收集。

當(dāng)修改count變量的值時會觸發(fā)set攔截,在set攔截中做的事情也很簡單。將count變量收集到的依賴全部取出來,然后執(zhí)行一遍。這里收集的依賴是watchwatchEffect的回調(diào)函數(shù),所以當(dāng)count變量的值改變時會導(dǎo)致watchwatchEffect的回調(diào)函數(shù)重新執(zhí)行。

這個是整個流程圖:

從流程圖可以看到響應(yīng)式的實現(xiàn)原來完全不依賴vue組件,所以我們可以在node.js項目中使用vue的響應(yīng)式API,這也是vue的設(shè)計奇妙之處。

總結(jié)

這篇文章講了我們可以脫離vue項目,直接在node.js項目中使用vue的響應(yīng)式API。接著講了響應(yīng)式的實現(xiàn)原理其實就是依靠get攔截進(jìn)行依賴收集,set攔截進(jìn)行依賴觸發(fā)。

搞清楚響應(yīng)式原理后,我們發(fā)現(xiàn)響應(yīng)式完全不依賴vue組件,所以我們可以在node.js項目中使用vue的響應(yīng)式API,這也是vue的設(shè)計奇妙之處。

到此這篇關(guān)于詳解如何在nodejs項目中使用Vue的響應(yīng)式API的文章就介紹到這了,更多相關(guān)nodejs使用Vue響應(yīng)式API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • node.js基于socket.io快速實現(xiàn)一個實時通訊應(yīng)用

    node.js基于socket.io快速實現(xiàn)一個實時通訊應(yīng)用

    這篇文章主要介紹了node.js基于socket.io快速實現(xiàn)一個實時通訊應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Pycharm配置Node.js運行js代碼詳細(xì)過程

    Pycharm配置Node.js運行js代碼詳細(xì)過程

    在PyCharm中寫JavaScript代碼并進(jìn)行調(diào)試是非常方便的,但是有些用戶可能對如何在PyCharm中準(zhǔn)確地運行JavaScript代碼感到困惑,這篇文章主要給大家介紹了關(guān)于Pycharm配置Node.js運行js代碼的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • nodejs+express+multer搭建文件上傳文件預(yù)覽功能

    nodejs+express+multer搭建文件上傳文件預(yù)覽功能

    Express 是一個簡潔而靈活的 node.js Web應(yīng)用框架, 提供了一系列強大特性幫助你創(chuàng)建各種 Web 應(yīng)用,和豐富的 HTTP 工具,今天給大家分享nodejs+express+multer搭建文件上傳文件預(yù)覽功能,感興趣的朋友一起看看吧
    2025-03-03
  • 微信小程序搭載node.js服務(wù)器的簡單教程

    微信小程序搭載node.js服務(wù)器的簡單教程

    小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗,下面這篇文章主要給大家介紹了關(guān)于微信小程序搭載node.js服務(wù)器的簡單教程,需要的朋友可以參考下
    2022-12-12
  • Node.js API詳解之 vm模塊用法實例分析

    Node.js API詳解之 vm模塊用法實例分析

    這篇文章主要介紹了Node.js API詳解之 vm模塊用法,結(jié)合實例形式分析了Node.js API中vm模塊基本功能、函數(shù)、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-05-05
  • 淺析node中間件及實現(xiàn)一個簡單的node中間件

    淺析node中間件及實現(xiàn)一個簡單的node中間件

    這篇文章主要介紹了淺析node中間件及實現(xiàn)一個簡單的node中間件,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 史上無敵詳細(xì)的Node.Js環(huán)境搭建步驟記錄

    史上無敵詳細(xì)的Node.Js環(huán)境搭建步驟記錄

    Node.js是一個事件驅(qū)動I/O服務(wù)端JavaScript環(huán)境,由于其擁有異步非阻塞、環(huán)境搭建簡單、實踐應(yīng)用快等特性,使得其在新一代編程開發(fā)中更為流行,下面這篇文章主要給大家介紹了關(guān)于Node.Js環(huán)境搭建步驟記錄的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • mongoose中利用populate處理嵌套的方法

    mongoose中利用populate處理嵌套的方法

    這篇文章主要給大家介紹了關(guān)于mongoose中利用populate處理嵌套的方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 解決修復(fù)npm安裝全局模塊權(quán)限的問題

    解決修復(fù)npm安裝全局模塊權(quán)限的問題

    今天小編就為大家分享一篇解決修復(fù)npm安裝全局模塊權(quán)限的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 利用node.js實現(xiàn)反向代理的方法詳解

    利用node.js實現(xiàn)反向代理的方法詳解

    在實際工程開發(fā)中,會有前后端分離的需求。為了平滑的完成前端請求到后端各個獨立服務(wù),需要一個中間件實現(xiàn)請求轉(zhuǎn)發(fā)的功能,利用Nginx可以實現(xiàn),在這里使用nodejs實現(xiàn)一個反向代理服務(wù)器。本文主要介紹了關(guān)于利用node.js實現(xiàn)反向代理的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07

最新評論