国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue.js設(shè)計與實現(xiàn)

這篇具有很好參考價值的文章主要介紹了Vue.js設(shè)計與實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

第一章 權(quán)衡藝術(shù)

1.1 命令式和聲明式

從范式上看,視圖層框架分為命令式和聲明式。
命令式:

一大特點是:關(guān)注過程

聲明式:

一大特點是:關(guān)注結(jié)果

1.2 性能與可維護性

聲明式代碼的性能不優(yōu)于命令式代碼的性能

框架本身就是封裝了命令式代碼才實現(xiàn)了面向用戶的聲明式

聲明式代碼的可維護性強

1.3 虛擬DOM的性能

為了使聲明式的性能更接近命令式的性能,這就是虛擬DOM的作用

通過innerHTML創(chuàng)建頁面的性能:HTML字符串拼接的計算量+innerHTML的DOM計算量

虛擬DOM創(chuàng)建頁面的性能:創(chuàng)建JavaScript對象的計算量+創(chuàng)建真實DOM的計算量

innerHTML更新頁面的時候:要重新構(gòu)建HTML字符串,再重新設(shè)置DOM元素的innerHTML屬性。其實就是要銷毀所有舊的DOM元素,再全量的創(chuàng)建新的DOM元素。

虛擬DOM更新頁面的時候:比較新舊虛擬DOM,找到變化的元素更新它

性能:原生JavaScript > 虛擬DOM > innerHTML(模板)

1.4 運行時和編譯時

純運行時:

編寫一個Render函數(shù)

提供一個樹型結(jié)構(gòu)的數(shù)據(jù)對象:

01 const obj = {
02   tag: 'div',
03   children: [
04     { tag: 'span', children: 'hello world' }
05   ]
06 }

Render函數(shù):

01 function Render(obj, root) {
02   const el = document.createElement(obj.tag)
03   if (typeof obj.children === 'string') {
04     const text = document.createTextNode(obj.children)
05     el.appendChild(text)
06   } else if (obj.children) {
07     // 數(shù)組,遞歸調(diào)用 Render,使用 el 作為 root 參數(shù)
08     obj.children.forEach((child) => Render(child, el))
09   }
10
11   // 將元素添加到 root
12   root.appendChild(el)
13 }

使用:

01 const obj = {
02   tag: 'div',
03   children: [
04     { tag: 'span', children: 'hello world' }
05   ]
06 }
07 // 渲染到 body 下
08 Render(obj, document.body)
運行時+編譯時

編寫Compiler的程序,作用是把HTML字符串編譯成樹型結(jié)構(gòu)的數(shù)據(jù)對象

使用:

01 const html = `
02 <div>
03   <span>hello world</span>
04 </div>
05 `
06 // 調(diào)用 Compiler 編譯得到樹型結(jié)構(gòu)的數(shù)據(jù)對象
07 const obj = Compiler(html)
08 // 再調(diào)用 Render 進行渲染
09 Render(obj, document.body)
純編譯時:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wBZ0pbQQ-1686448242740)(C:\Users\virtue\AppData\Roaming\Typora\typora-user-images\image-20230213173530302.png)]

這個時候只需要Compiler函數(shù)就可以了,只通過編譯器編譯就可以了。

第二章 框架設(shè)計的核心要素

一. 提升用戶的開發(fā)體驗
二. 控制框架代碼的體積
三. 框架要做到良好的Tree-Shaking

Tree-Shaking 指的是消除哪些永遠不會被執(zhí)行的代碼,排除dead code

實現(xiàn)Tree-Shaking必須滿足模板是ESM(ES Module)依賴ESM的靜態(tài)結(jié)構(gòu)

Tree-Shaking工作原理:
目錄結(jié)構(gòu)
01 ├── demo
02 │   └── package.json
03 │   └── input.js
04 │   └── utils.js

首先安裝rollup.js

01 yarn add rollup -D
02 # 或者 npm install rollup -D

input.jsutil.js文件的內(nèi)容

01 // input.js
02 import { foo } from './utils.js'
03 foo()
04 // utils.js
05 export function foo(obj) {
06   obj && obj.foo
07 }
08 export function bar(obj) {
09   obj && obj.bar
10 }

input.js文件為入口,輸出ESM,輸出文件的名字叫作bundle.js

01 npx rollup input.js -f esm -o bundle.js

bundle.js的內(nèi)容

01 // bundle.js
02 function foo(obj) {
03   obj && obj.foo
04 }
05 foo();
Tree-Shaking中的第二個關(guān)鍵點------副作用

如果一個函數(shù)產(chǎn)生了副作用,那么就不會被消除

副作用:當調(diào)用函數(shù)的時候會對外界產(chǎn)生影響

01 //input.js
02 import {foo} from './utils'
03
04 /*#__PURE__*/ foo()

注釋代碼 /#PURE/,其作用就是告訴 rollup.js,對于foo函數(shù)的調(diào)用不會產(chǎn)生副作用

IIFE格式的資源:iife 立刻調(diào)用的函數(shù)表達式

ESM格式的資源:esm

vue.esm-browser.js中的-browser字樣的ESM資源是直接給

cjs格式的資源:cjs 全稱:CommonJS文章來源地址http://www.zghlxwxcb.cn/news/detail-482602.html

到了這里,關(guān)于Vue.js設(shè)計與實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【Vue】Vue簡介、引入、命令式和聲明式編程

    【Vue】Vue簡介、引入、命令式和聲明式編程

    ???? ?: 開始陸陸續(xù)續(xù)更新vue啦 ? ??:東非不開森的主頁 ? ??:如果有幸和你一起學習一起進步,那就太棒啦,一起學習吧。???? ? 一、初識Vue 1.1.vue簡介 Vue 是一套用于構(gòu)建用戶界面的漸進式 JavaScript框架。 全稱是Vue.js或者Vuejs; 它基于標準 HTML、CSS 和 JavaScript 構(gòu)

    2024年02月01日
    瀏覽(19)
  • 王道第一章:簡單的C程序設(shè)計基礎(chǔ)

    目錄 程序框架: scanf const修飾符 一、C語言詞匯 1.1 二、各數(shù)據(jù)類型的常量與變量 2.1基本類型 2.1.1整型int 2.1.2浮點型(實型)float、double

    2024年02月07日
    瀏覽(82)
  • 《語音識別模式、算法設(shè)計與實踐》——第一章 語音識別概述

    《語音識別模式、算法設(shè)計與實踐》——第一章 語音識別概述

    本專欄僅為本人學習研讀體會分享,以及實際完成的測試代碼。更加詳細內(nèi)容詳見該書。 定義: 語音識別是讓機器具備自動接收和分析人類的語音,并最終輸出對應文本的過程。 目標: 將輸入語音轉(zhuǎn)化為文字的輸出 ???????????????? 目標實現(xiàn)條件: 提前規(guī)定好該系

    2024年04月12日
    瀏覽(91)
  • 【算法】算法設(shè)計與分析 課程筆記 第一章&第二章

    【算法】算法設(shè)計與分析 課程筆記 第一章&第二章

    算法的四個性質(zhì): 輸入、輸出、確定性和有窮性 。 1. 常見的時間復雜度 常數(shù)階 O(1) 對數(shù)階 O(log n) 線性階 O(n) 線性對數(shù)階 O(nlog n) 平方階 O(n^2) 立方階 O(n^3) k 次方階 O(n^k) 指數(shù)階 O(2^n) 注:上面的 log n 均代表 以2為底 的對數(shù)。 2. 時間復雜度排序 常見的算法時間復雜度由小到

    2024年02月09日
    瀏覽(23)
  • 從Vue2到Vue3【一】——Composition API(第一章)

    內(nèi)容 鏈接 從Vue2到Vue3【零】 Vue3簡介 從Vue2到Vue3【一】 Composition API(第一章) 從Vue2到Vue3【二】 Composition API(第二章) 從Vue2到Vue3【三】 Composition API(第三章) 從Vue2到Vue3【四】 Composition API(第四章) Vue3作為Vue.js框架的最新版本,引入了許多令人激動的新特性和改進。其

    2024年02月16日
    瀏覽(21)
  • verilog數(shù)字系統(tǒng)設(shè)計教程(夏聞宇)|第一章-第六章

    verilog數(shù)字系統(tǒng)設(shè)計教程(夏聞宇)|第一章-第六章

    早聽聞此書大名,雖然有些verilog的編程經(jīng)驗,今天來系統(tǒng)的學習下verilog,完善知識體系,提升編程能力。本文章只當自己做筆記使用,記錄自己沒掌握的重難點,和大家一起學習。 目錄 第一章? 第二章 verilog語法 第三章 模塊的結(jié)構(gòu)、數(shù)據(jù)類型、變量和基本運算符號 1.常量

    2024年03月18日
    瀏覽(23)
  • 基于FPGA的UDP協(xié)議棧設(shè)計第一章_MAC層設(shè)計

    基于FPGA的UDP協(xié)議棧設(shè)計第一章_MAC層設(shè)計

    前導碼 :7個0h55和一個起始界定符SFD,0hD5,不過大部分地方好像是7個0hAA,就是bit順序相反,不過我用FPGA接收到的上位機的網(wǎng)口數(shù)據(jù)是55,估計是大小端傳輸問題吧。 注 :有時候有可能是六個55一個D5 類型 :IP:0X0800。ARP:0X0806 發(fā)送模塊按部就班按照協(xié)議格式進行組幀即可

    2024年04月17日
    瀏覽(19)
  • 明德?lián)PFPGA至簡設(shè)計原理與應用 第一篇 FPGA基礎(chǔ)知識 第一章 FPGA簡介

    FPGA 的全稱為 Field-Programmable Gate Array, 即現(xiàn)場可編程門陣列。FPGA 就是一個可以“改變”內(nèi)部結(jié)構(gòu)的芯片,而讓這個芯片來實現(xiàn)怎樣的功能,就需要通過編程即設(shè)計HDL,經(jīng)過 EDA工具編譯、綜合、布局布線成后轉(zhuǎn)換為可燒錄的文件,最終加載到 FPGA 器件中去,改變 FPGA 內(nèi)部的連

    2024年01月16日
    瀏覽(221)
  • [ XJTUSE ]JAVA語言基礎(chǔ)知識——第一章 面向?qū)ο蟪绦蛟O(shè)計思想

    類描述了一組有相同 特性 (屬性)和相同 行為 (方法)的對象,類和對象是面向?qū)ο笏枷氲膬蓚€核心概念 · 人類是一種類,每一個具體的人則是這個類的對象 用面向?qū)ο蟪绦騺砟M真實世界 發(fā)現(xiàn)并創(chuàng)建類 發(fā)現(xiàn)類的特征 發(fā)現(xiàn)類的行為 在面向?qū)ο蟪绦蛑?,對象的特征由各種

    2023年04月13日
    瀏覽(230)
  • vite+vue3+cesium大屏數(shù)據(jù)可視化項目——第一章:搭建項目

    vite+vue3+cesium大屏數(shù)據(jù)可視化項目——第一章:搭建項目

    目錄 系列文章目錄 前言 一、搭建項目 1.檢查node版本號 2.搭建vue3項目 二、配置cesium 1.前期準備 2.安裝cesium 3.引入cesium 4.初始化頁面 總結(jié) ? 這幾年智慧城市、數(shù)字孿生、數(shù)字可視化這些高級詞匯可太多啦,招聘簡介上也有很多要求會webGis等相關(guān)經(jīng)驗,所以我覺得最近來學一

    2024年02月07日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包