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

vuejs源碼閱讀之代碼生成器

這篇具有很好參考價(jià)值的文章主要介紹了vuejs源碼閱讀之代碼生成器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

vuejs源碼閱讀之代碼生成器,vue.js,前端,javascript

代碼生成器是模版編譯的最后以后,它的作用是將AST轉(zhuǎn)換成渲染函數(shù)中的內(nèi)容,這個(gè)內(nèi)容可以稱(chēng)為代碼字符串。

代碼字符串可以被包裝在函數(shù)中執(zhí)行,這個(gè)函數(shù)就是我們通常說(shuō)的渲染函數(shù)。

渲染函數(shù)被執(zhí)行之后,可以生成一份VNode,而虛擬DOM可以通過(guò)這個(gè)VNode來(lái)渲染視圖。

AST生成代碼字符串

比如下面這個(gè)代碼。

<div id="el">
    hello {{name}}
</div>

它轉(zhuǎn)換成AST并且經(jīng)過(guò)優(yōu)化器的優(yōu)化之后是下面這個(gè)樣子。

{
    "type": 1,
    "tag": "div",
    "attrsList": [
        {
            "name": "id",
            "value": "el",
            "start": 5,
            "end": 12
        }
    ],
    "attrsMap": {
        "id": "el"
    },
    "rawAttrsMap": {
        "id": {
            "name": "id",
            "value": "el",
            "start": 5,
            "end": 12
        }
    },
    "children": [
        {
            "type": 2,
            "expression": "\"\\n        hello \"+_s(name)+\"\\n    \"",
            "tokens": [
                "\n        hello ",
                {
                    "@binding": "name"
                },
                "\n    "
            ],
            "text": "\n        hello {{name}}\n    ",
            "start": 13,
            "end": 41,
            "static": false
        }
    ],
    "start": 0,
    "end": 47,
    "plain": false,
    "attrs": [
        {
            "name": "id",
            "value": "\"el\"",
            "start": 5,
            "end": 12
        }
    ],
    "static": false,
    "staticRoot": false
}

代碼生成器可以通過(guò)上面這個(gè)AST來(lái)生成代碼字符串,生成后的代碼字符串。

with (this) {
  return _c('div',
    { attrs: { "id": "el" } },
    [_v("\n        hello " + _s(name) + "\n    ")]
  )
}

仔細(xì)觀察生成后的代碼字符串,這是一個(gè)嵌套的函數(shù)調(diào)用。函數(shù)_c的參數(shù)中執(zhí)行了函數(shù)_v,而_v的參數(shù)中又執(zhí)行了_s。

這個(gè)字符串中_c其實(shí)是createElement的別名。createElement是虛擬DOM中所提供的方法,它的作用是創(chuàng)建虛擬節(jié)點(diǎn),有三個(gè)參數(shù),分別是:

  • 標(biāo)簽名
  • 一個(gè)包含模版相關(guān)屬性的數(shù)據(jù)對(duì)象
  • 子節(jié)點(diǎn)列表
    調(diào)用createElement方法,我們可以得到一個(gè)VNode。

這也就是是渲染函數(shù)可以生成VNode的原因:渲染函數(shù)其實(shí)是執(zhí)行了createElement,而createElement可以創(chuàng)建一個(gè)VNode。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-619885.html

到了這里,關(guān)于vuejs源碼閱讀之代碼生成器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • css在線代碼生成器

    css在線代碼生成器

    這里收集了許多有意思的css效果在線代碼生成器適合每一位前端開(kāi)發(fā)者 網(wǎng)格生成器https://cssgrid-generator.netlify.app/ CSS Grid Generator可幫助開(kāi)發(fā)人員使用CSS Grid創(chuàng)建復(fù)雜的網(wǎng)格布局。網(wǎng)格布局是創(chuàng)建Web頁(yè)面的靈活和響應(yīng)式設(shè)計(jì)的強(qiáng)大方式。 布局生成器https://layout.bradwoods.io/ CSS布局生

    2024年02月14日
    瀏覽(100)
  • MyBatisPlus代碼生成器使用

    MyBatisPlus代碼生成器使用

    無(wú)侵入 :只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響,如絲般順滑 損耗小 :?jiǎn)?dòng)即會(huì)自動(dòng)注入基本 CURD,性能基本無(wú)損耗,直接面向?qū)ο蟛僮?強(qiáng)大的 CRUD 操作 :內(nèi)置通用 Mapper、通用 Service,僅僅通過(guò)少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器,

    2024年02月03日
    瀏覽(97)
  • 源生成器:根據(jù)需要自動(dòng)生成機(jī)械重復(fù)代碼

    本文概述了利用.NET Compiler Platform(“Roslyn”)SDK 附帶的 源生成器 (Source Generator)自動(dòng)生成機(jī)械重復(fù)的代碼。關(guān)于這部分的基礎(chǔ)入門(mén)知識(shí)可以在MSDN [1] 學(xué)到。 本文 默認(rèn) 已經(jīng)有一個(gè)解決方案,包含兩個(gè)項(xiàng)目。一個(gè)是普通C#項(xiàng)目,依賴(lài)于另一個(gè)源生成器項(xiàng)目。 此處以 Dependenc

    2024年02月01日
    瀏覽(95)
  • Java-代碼生成器的實(shí)現(xiàn)

    Java-代碼生成器的實(shí)現(xiàn)

    最近看了一個(gè)開(kāi)源的項(xiàng)目, jfinal-layui ,然后這個(gè)項(xiàng)目里面有一個(gè) 代碼生成器 的功能 之前雖然有用過(guò)代碼生成器,但是從來(lái)沒(méi)有看過(guò)相關(guān)的源碼,所以就研究了一下,個(gè)人感覺(jué)這個(gè)項(xiàng)目的代碼生成器還是蠻好的,能夠根據(jù)指定的數(shù)據(jù)庫(kù)和表生成前后端的代碼,不過(guò)這個(gè)項(xiàng)目

    2024年02月02日
    瀏覽(94)
  • C# 源代碼生成器

    C# 源代碼生成器

    源生成器 是由 .NET Compiler Platform(“Roslyn”) SDK 附帶。 通過(guò)源生成器,C# 開(kāi)發(fā)人員可以在編譯用戶代碼時(shí)檢查用戶代碼。 生成器可以動(dòng)態(tài)創(chuàng)建新的 C# 源文件,這些文件將添加到用戶的編譯中。 這樣,代碼可以在編譯期間運(yùn)行。 它會(huì)檢查你的程序以生成與其余代碼一起編譯

    2024年02月04日
    瀏覽(88)
  • 【若依】-代碼生成器-微服務(wù)版本

    【若依】-代碼生成器-微服務(wù)版本

    代碼生成器可以快速的構(gòu)建單表的CRUD操作,甚至提供了前端,可謂良心 說(shuō)明:我默認(rèn)你已經(jīng)部署了微服務(wù)版本的若依項(xiàng)目,并將前后端已經(jīng)運(yùn)行 下面的內(nèi)容是關(guān)于-單表CRUD-的代碼生成器使用步驟 這里的表可以直接從若依的官網(wǎng)拿,改表名就可以,改一下表名,導(dǎo)入數(shù)據(jù)庫(kù)

    2024年02月04日
    瀏覽(94)
  • 若依筆記(四):代碼生成器

    若依筆記(四):代碼生成器

    已知使用MyBatisPlus代碼生成器可以自動(dòng)生成Entity、Mapper、Service、Controller代碼,前提是數(shù)據(jù)庫(kù)中有數(shù)據(jù)表,生成pojo類(lèi)以及對(duì)于該數(shù)據(jù)表的增刪改查命令的代碼,若依更進(jìn)一步能選擇表后生成代碼、預(yù)覽、下載,同時(shí)可以生產(chǎn)前端代碼,與后端一起還能實(shí)現(xiàn)權(quán)限管理和數(shù)據(jù)隔離

    2024年02月06日
    瀏覽(89)
  • 又一款低代碼生成器

    大家好,我是 Java陳序員 。 最近在瀏覽 Github 的時(shí)候,發(fā)現(xiàn)了一款簡(jiǎn)單好用的低代碼生成器 maku-generator 。 無(wú)論是工作,還是接私活,這款低代碼都能快速迭代出一個(gè)項(xiàng)目! 今天,分享給大家,強(qiáng)烈建議私有化部署! 關(guān)注微信公眾號(hào):【Java陳序員】,獲取 開(kāi)源項(xiàng)目分享、

    2024年04月10日
    瀏覽(91)
  • 基于Velocity開(kāi)發(fā)代碼生成器

    基于Velocity開(kāi)發(fā)代碼生成器

    一、引言 在項(xiàng)目開(kāi)發(fā)中,我們有碰到大量的簡(jiǎn)單、重復(fù)的增刪改查需求,通過(guò)閱讀 若依 框架https://github.com/yangzongzhuan/RuoYi?的代碼生成器實(shí)現(xiàn),結(jié)合我項(xiàng)目所用的技術(shù)棧,開(kāi)發(fā)出本項(xiàng)目的代碼生成器。 二、Velocity?簡(jiǎn)單介紹 1、Velocity是一個(gè)基于Java的模板引擎,我們可以往C

    2024年02月15日
    瀏覽(90)
  • 爆款視頻生成器小程序源碼搭建方案

    爆款視頻生成器小程序源碼搭建方案

    爆款視頻生成器是一種可以幫助用戶快速制作出高質(zhì)量視頻的工具。它可以根據(jù)用戶提供的素材、模板和音樂(lè)等要素,自動(dòng)生成一個(gè)精美的視頻。這種工具可以大大節(jié)省用戶的時(shí)間和精力,同時(shí)還能夠提高視頻制作的效率和質(zhì)量,使視頻更易于被觀眾接受和分享。常見(jiàn)的爆款

    2024年02月11日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包