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

詳解如何在nodejs項目中使用Vue的響應式API

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

前言

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

直接上代碼

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

從上圖可以看到我們的node.js項目依賴只有一個:vue。并且提供了一個名為dev的腳本命令,這個腳本命令實際是在node環(huán)境內執(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",
  }
);

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

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

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

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

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

為什么可以這樣寫呢

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

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

比如reactivity模塊中就是響應式的核心代碼、compiler-core模塊就是編譯相關的核心代碼。

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

得益于模塊化的設計,響應式相關的API和vue組件并沒有強關聯的關系,所以我們可以在node.js應用中去直接使用響應式API。

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

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

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

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

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

當代碼首次執(zhí)行到watchwatchEffect時都會對count變量進行讀操作,并且watchwatchEffect都傳入了一個回調函數。

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

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

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

這個是整個流程圖:

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

總結

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

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

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

相關文章

  • 使用nvm安裝node?v12.22.12時遇到的問題解決

    使用nvm安裝node?v12.22.12時遇到的問題解決

    本文介紹了使用nvm安裝node?v12.22.12時遇到的問題解決,解決了上手動下載和安裝npm以解決版本不匹配的問題,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • Node爬取大批量文件的方法示例

    Node爬取大批量文件的方法示例

    這篇文章主要介紹了Node爬取大批量文件的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • node.js實現微信JS-API封裝接口的示例代碼

    node.js實現微信JS-API封裝接口的示例代碼

    這篇文章主要介紹了node.js實現微信JS-API封裝接口的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 如何從0開始用node寫一個自己的命令行程序

    如何從0開始用node寫一個自己的命令行程序

    這篇文章主要介紹了如何從0開始用node寫一個自己的命令行程序,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Centos6.8下Node.js安裝教程

    Centos6.8下Node.js安裝教程

    這篇文章主要為大家詳細介紹了Centos6.8下Node.js安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • node.js中的fs.writeSync方法使用說明

    node.js中的fs.writeSync方法使用說明

    這篇文章主要介紹了node.js中的fs.writeSync方法使用說明,本文介紹了fs.writeSync的方法說明、語法、接收參數、使用實例和實現源碼,需要的朋友可以參考下
    2014-12-12
  • 阿里云ecs服務器中安裝部署node.js的步驟

    阿里云ecs服務器中安裝部署node.js的步驟

    這篇文章給大家介紹了在阿里云ecs服務器中安裝部署node.js的詳細步驟,對大家安裝node.js具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 基于node的cli工具開發(fā)使用詳解

    基于node的cli工具開發(fā)使用詳解

    這篇文章主要為大家介紹了基于node的cli工具開發(fā)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 使用express來代理服務的方法

    使用express來代理服務的方法

    這篇文章主要介紹了使用express來代理服務的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • 詳解用node編寫自己的cli工具

    詳解用node編寫自己的cli工具

    這篇文章主要介紹了詳解用node編寫自己的cli工具,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論

雷波县| 卢龙县| 英吉沙县| 武强县| 拜城县| 博白县| 兴业县| 娄底市| 富源县| 湘潭市| 碌曲县| 山阴县| 宁晋县| 新昌县| 德庆县| 郸城县| 天等县| 永新县| 朔州市| 牟定县| 安仁县| 辽宁省| 西宁市| 体育| 宁阳县| 那坡县| 太仆寺旗| 天等县| 随州市| 龙门县| 灵武市| 台前县| 铅山县| 淮阳县| 罗山县| 阿拉善右旗| 天峨县| 溧水县| 巩留县| 黔江区| 稻城县|