<legend id="5tc48"></legend>

    \n
    <\/div>\n\n \n \n <\/body>\n <\/html><\/pre>\n

    然后,您應(yīng)該創(chuàng)建一個舞臺并在其中繪制一些內(nèi)容,例如矩形、圓形或其他形狀:<\/p>\n

     \/\/ 創(chuàng)建舞臺\n var stage = acgraph.create('stage-container');\n \/\/ 繪制矩形\n var stage.rect(25, 50, 350, 300);<\/pre>\n

    以下是 CodePen 上的示例,我們在其中更進一步并繪制了死亡圣器符號。<\/p>\n

    我們的第一幅杰作<\/h2>\n

    填充、描邊和圖案填充<\/h3>\n

    可以使用填充設(shè)置和描邊設(shè)置對任何形狀或路徑進行著色。所有內(nèi)容都有描邊(邊框),但只有形狀和閉合路徑才有填充。填充和描邊設(shè)置非常豐富,您可以將線性或圓形漸變用于填充和描邊。此外,線條可以是虛線的,并且支持具有多種平鋪模式的圖像填充。但這都是您幾乎可以在任何庫中都能找到的相當(dāng)標(biāo)準(zhǔn)的內(nèi)容。使 GraphicsJS 具有特殊性的是其網(wǎng)格和圖案填充功能,它不僅允許您直接使用 32 種(!) 可用的網(wǎng)格填充圖案,還允許您輕松創(chuàng)建由形狀或文本組成的自定義圖案。<\/p>\n

    現(xiàn)在,讓我們看看究竟可以實現(xiàn)什么!我將繪制一幅男人站在房子附近的簡筆畫,然后用不同的圖案和顏色填充來增強它。為了簡單起見,讓我們把它做成一幅幼稚的藝術(shù)畫(并盡量不要涉及到藝術(shù)粗野)。就是這樣:<\/p>\n

     \/\/ 創(chuàng)建舞臺\n var stage = acgraph.create('stage-container');\n\n \/\/ 繪制框架\n var frame = stage.rect(25, 50, 350, 300);\n\n \/\/ 繪制房子\n var walls = stage.rect(50, 250, 200, 100);\n var roof  = stage.path()\n   .moveTo(50, 250)\n   .lineTo(150, 180)\n   .lineTo(250, 250)\n   .close();\n\n \/\/ 繪制一個人\n var head = stage.circle(330, 280, 10);\n var neck = stage.path().moveTo(330, 290).lineTo(330, 300);\n var kilt = stage.triangleUp(330, 320, 20);\n var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340);\n var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);<\/pre>\n

    查看 CodePen 上的結(jié)果。<\/p>\n

    如您所見,我們現(xiàn)在正在使用變量——所有在舞臺上繪制內(nèi)容的方法都會返回對所創(chuàng)建對象的引用,并且此鏈接可用于更改或刪除對象。<\/p>\n

    還要注意鏈?zhǔn)秸{(diào)用(例如 stage.path().moveTo(320, 330).lineTo(320, 340);<\/code>)如何在 GraphicsJS 中隨處可見,它有助于縮短代碼。鏈?zhǔn)秸{(diào)用應(yīng)謹(jǐn)慎使用,但如果應(yīng)用得當(dāng),它確實使代碼更緊湊且更易于閱讀。<\/p>

    現(xiàn)在,讓我們把這個涂色頁交給一個孩子,讓他們來涂色。因為即使是孩子也能掌握以下技術(shù):<\/p>\n

     \n \n \n   \n   GraphicsJS Basic Example<\/title>    \n <\/head>\n <body>
    <h1><a href="http://ipnx.cn/">亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱</a></h1>\n   <div   class="wjcelcm34c"   id=\"stage-container\" style=\"width: 400px; height: 375px;\"><\/div>\n\n   <??>\n   <??>\n <\/body>\n <\/html><\/pre>\n<p>這就是我們示例現(xiàn)在的外觀。<\/p>\n<p>現(xiàn)在,我們有一幅高地人在蘇格蘭短裙旁邊,他站在他的磚砌城堡附近,屋頂是稻草的圖片。我們甚至可以冒險說這確實是一件我們想要獲得版權(quán)的<em>藝術(shù)品<\/em>。讓我們使用基于自定義文本的圖案填充來做到這一點:<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 創(chuàng)建舞臺\n var stage = acgraph.create('stage-container');\n \/\/ 繪制矩形\n var stage.rect(25, 50, 350, 300);<\/pre>\n<p>如您所見,這很容易做到:您創(chuàng)建一個文本對象的實例,然后在舞臺上形成一個圖案,并將文本放入圖案中。<\/p>\n<p>查看 CodePen 上的彩色版權(quán)房屋\/graphicsjs。<\/p>\n<h2>在不到 50 行代碼中創(chuàng)建一個益智藝術(shù)游戲<\/h2>\n<p>在本文的下一部分,我想向您展示如何在不到 50 行代碼中使用 GraphicsJS 創(chuàng)建一個類似 Cookie Clicker 的游戲。<\/p>\n<p>游戲名稱為<em>“風(fēng)中清掃街道”<\/em>,玩家扮演一名清道夫的角色,在秋天的多風(fēng)下午清掃街道。該游戲使用 GraphicsJS 圖庫中程序生成的葉子示例中的一些代碼。<\/p>\n<p>您可以在 CodePen(或文章結(jié)尾)上查看完成的游戲。<\/p>\n<h3>圖層、zIndex 和虛擬 DOM<\/h3>\n<p>我們首先創(chuàng)建一個舞臺(如前所述),然后聲明一些初始變量:<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 創(chuàng)建舞臺\n var stage = acgraph.create('stage-container');\n\n \/\/ 繪制框架\n var frame = stage.rect(25, 50, 350, 300);\n\n \/\/ 繪制房子\n var walls = stage.rect(50, 250, 200, 100);\n var roof  = stage.path()\n   .moveTo(50, 250)\n   .lineTo(150, 180)\n   .lineTo(250, 250)\n   .close();\n\n \/\/ 繪制一個人\n var head = stage.circle(330, 280, 10);\n var neck = stage.path().moveTo(330, 290).lineTo(330, 300);\n var kilt = stage.triangleUp(330, 320, 20);\n var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340);\n var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);<\/pre>\n<p>對于這個游戲,我們將使用圖層——GraphicsJS 中用于對元素進行分組的對象。如果您想對元素應(yīng)用類似的更改(例如轉(zhuǎn)換),則必須對元素進行分組。您可以在暫停模式下更改圖層(稍后將詳細(xì)介紹),這可以提高性能和用戶體驗。<\/p>\n<p>在此演示中,我們使用圖層功能來幫助我們將葉子組合在一起,并避免它們覆蓋標(biāo)簽(它告訴我們清掃了多少葉子)。為此,我們創(chuàng)建一個標(biāo)簽,然后調(diào)用 <code>stage.layer<\/code> 方法,該方法創(chuàng)建舞臺綁定圖層。我們將此圖層的 <code>zIndex<\/code> 屬性設(shè)置為低于標(biāo)簽的 <code>zIndex<\/code> 屬性。<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 給圖片著色\n \/\/ 精美的框架\n frame.stroke([\"red\", \"green\", \"blue\"], 2, \"2 2 2\");\n \/\/ 磚墻\n walls.fill(acgraph.hatchFill('horizontalbrick'));\n \/\/ 草屋頂\n roof.fill(\"#e4d96f\");\n \/\/ 格子呢裙\n kilt.fill(acgraph.hatchFill('plaid'));<\/pre>\n<p>執(zhí)行此操作后,無論我們在圖層中創(chuàng)建多少葉子,我們都可以確保它們不會覆蓋文本。<\/p>\n<h3>轉(zhuǎn)換<\/h3>\n<p>接下來,讓我們添加一個函數(shù)來繪制我們的葉子。這將使用方便的 GraphicsJS 轉(zhuǎn)換 API,該 API 允許您移動、縮放、旋轉(zhuǎn)和剪切元素和元素組。當(dāng)與圖層和虛擬 DOM 結(jié)合使用時,這是一個非常強大的工具。<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 169 是版權(quán)符號的字符代碼\n var  text = acgraph.text().text(String.fromCharCode(169)).opacity(0.2);\n var  pattern_font = stage.pattern(text.getBounds());\n pattern_font.addChild(text);\n \/\/ 用圖案填充整個圖像\n frame.fill(pattern_font);<\/pre>\n<p>您會看到每個路徑的創(chuàng)建方式相同,但隨后會進行轉(zhuǎn)換。這將產(chǎn)生非常漂亮的隨機葉子圖案。<\/p>\n<h3>處理事件<\/h3>\n<p>GraphicsJS 中的任何對象、舞臺和圖層都可以處理事件。支持的事件的完整列表可在 EventType API 中找到。舞臺有四個特殊的事件來控制渲染。<\/p><p>在這個游戲示例中,我們正在使用附加到葉子對象的事件偵聽器,以便用戶將鼠標(biāo)懸停在它們上時,它們會一個接一個地消失。為此,請將以下代碼添加到 <code>drawLeaves<\/code> 函數(shù)的底部,在 <code>return<\/code> 語句之前:<\/p>\n<pre class='brush:php;toolbar:false;'> <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n   <meta charset=\"utf-8\" \/>\n   <title>GraphicsJS Basic Example<\/title>    \n <\/head>\n <body>\n   <div   class="wjcelcm34c"   id=\"stage-container\" style=\"width: 400px; height: 375px;\"><\/div>\n\n   <??>\n   <??>\n <\/body>\n <\/html><\/pre>\n<p>在這里,我們還可以看到我們正在使用圖層來計算葉子。<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 創(chuàng)建舞臺\n var stage = acgraph.create('stage-container');\n \/\/ 繪制矩形\n var stage.rect(25, 50, 350, 300);<\/pre>\n<p>請注意,我們實際上并沒有在這里存儲葉子的數(shù)量。由于我們將葉子添加到特定圖層并從中刪除葉子,因此這使我們能夠跟蹤我們有多少個子元素(以及因此還剩下多少葉子)。<\/p>\n<p>GraphicsJS 提供了一個虛擬 DOM,它是 HTML DOM 的抽象,輕量級且與瀏覽器特定的 SVG\/VML 實現(xiàn)分離。它對于執(zhí)行許多偉大的事情非常有用,例如跟蹤所有對象和圖層,對組應(yīng)用轉(zhuǎn)換以及在幫助下優(yōu)化渲染允許我們跟蹤和控制渲染過程的方法。<\/p>\n<h3>性能優(yōu)化<\/h3>\n<p>虛擬 DOM 以及事件處理程序允許 GraphicsJS 用戶控制渲染。性能文章可以幫助您了解這些內(nèi)容之間的關(guān)系。<\/p>\n<p>在游戲中生成葉子時,我們需要在添加新葉子時暫停渲染,并且只有在所有更改完成后才恢復(fù)渲染:<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 創(chuàng)建舞臺\n var stage = acgraph.create('stage-container');\n\n \/\/ 繪制框架\n var frame = stage.rect(25, 50, 350, 300);\n\n \/\/ 繪制房子\n var walls = stage.rect(50, 250, 200, 100);\n var roof  = stage.path()\n   .moveTo(50, 250)\n   .lineTo(150, 180)\n   .lineTo(250, 250)\n   .close();\n\n \/\/ 繪制一個人\n var head = stage.circle(330, 280, 10);\n var neck = stage.path().moveTo(330, 290).lineTo(330, 300);\n var kilt = stage.triangleUp(330, 320, 20);\n var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340);\n var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);<\/pre>\n<p>這種處理新元素的方法使新葉子幾乎可以立即出現(xiàn)。<\/p>\n<p>最后,通過調(diào)用 <code>shakeTree()<\/code> 來啟動所有內(nèi)容。<\/p>\n<pre class='brush:php;toolbar:false;'> \/\/ 給圖片著色\n \/\/ 精美的框架\n frame.stroke([\"red\", \"green\", \"blue\"], 2, \"2 2 2\");\n \/\/ 磚墻\n walls.fill(acgraph.hatchFill('horizontalbrick'));\n \/\/ 草屋頂\n roof.fill(\"#e4d96f\");\n \/\/ 格子呢裙\n kilt.fill(acgraph.hatchFill('plaid'));<\/pre>\n<h3>最終結(jié)果<\/h3>\n<p>查看 CodePen 上的街道清掃工\/graphicsjs。<\/p>\n<h2>結(jié)論<\/h2>\n<p>向 HTML5 的轉(zhuǎn)變改變了網(wǎng)絡(luò)。當(dāng)涉及到現(xiàn)代 Web 應(yīng)用程序甚至簡單的網(wǎng)站時,我們經(jīng)常會遇到需要圖像處理的任務(wù)。雖然不可能找到在每種情況下都能很好工作的解決方案,但您應(yīng)該考慮 GraphicsJS 庫。它是開源的、健壯的,具有出色的瀏覽器支持和許多使其有趣、方便且當(dāng)然有用的功能。<\/p>\n<p>我很樂意在下面的評論中聽到您對 GrphicsJS 的反饋。您是否已經(jīng)在使用它?您是否會考慮將其用于新項目?我很想知道原因,或者為什么不使用它。我還正在編寫主要 JavaScript 繪圖庫列表以及將比較和對比所有這些庫的文章。也可以隨意指出您希望在那里看到的功能。<\/p>\n<h2>進一步閱讀的鏈接<\/h2>\n<ul>\n<li>常規(guī)信息<ul>\n<li>SVG<\/li>\n<li>Canvas<\/li>\n<li>SVG 與 Canvas<\/li>\n<\/ul>\n<\/li>\n<li>庫<ul>\n<li>GraphicsJS<\/li>\n<li>Rapha?l<\/li>\n<li>Snap.svg<\/li>\n<li>BonsaiJS<\/li>\n<\/ul>\n<\/li>\n<li>GraphicsJS<ul>\n<li>GitHub 上的 GraphicsJS<\/li>\n<li>GraphicsJS 文檔<\/li>\n<li>GraphicsJS API 參考<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>關(guān)于 GraphicsJS 的常見問題<\/h2>\n<h3>GraphicsJS 與其他 JavaScript 圖形庫有何不同?<\/h3>\n<p>GraphicsJS 因其強大且輕量級的特性而脫穎而出。它是一個強大的庫,允許開發(fā)人員以高精度和高性能繪制和動畫化任何圖形。與其他庫不同,GraphicsJS 提供了一套全面的功能,包括圖層、漸變、圖案等等,而不會影響速度或效率。它還支持所有現(xiàn)代瀏覽器,使其成為開發(fā)人員的多功能選擇。<\/p>\n<h3>如何開始使用 GraphicsJS?<\/h3>\n<p>要開始使用 GraphicsJS,您需要在 HTML 文件中包含 GraphicsJS 庫。您可以從官方網(wǎng)站下載該庫,也可以使用 CDN。包含該庫后,您可以通過調(diào)用該庫提供的適當(dāng)函數(shù)和方法來開始創(chuàng)建圖形。<\/p>\n<h3>我可以使用 GraphicsJS 創(chuàng)建復(fù)雜的動畫嗎?<\/h3>\n<p>是的,GraphicsJS 旨在輕松處理復(fù)雜的動畫。它提供了一套豐富的動畫功能,包括緩動函數(shù)、延遲和持續(xù)時間設(shè)置。您可以動畫化圖形的任何屬性,例如其位置、大小、顏色等等。這使得 GraphicsJS 成為創(chuàng)建交互式和動態(tài)圖形的強大工具。<\/p>\n<h3>GraphicsJS 是否與所有瀏覽器兼容?<\/h3>\n<p>GraphicsJS 旨在與所有現(xiàn)代瀏覽器兼容,包括 Chrome、Firefox、Safari 和 Internet Explorer。它使用 SVG 和 VML 進行渲染,所有這些瀏覽器都支持它們。這確保您的圖形在不同的平臺和設(shè)備上看起來一致且性能良好。<\/p>\n<h3>如何使用 GraphicsJS 創(chuàng)建漸變?<\/h3>\n<p>使用 GraphicsJS 創(chuàng)建漸變很簡單。您可以使用漸變方法定義線性或徑向漸變,指定顏色和位置,然后將漸變應(yīng)用于任何圖形。這使您可以輕松創(chuàng)建豐富多彩的圖形。<\/p>\n<h3>我可以使用 GraphicsJS 創(chuàng)建交互式圖形嗎?<\/h3>\n<p>是的,GraphicsJS 提供了一套事件處理功能,允許您創(chuàng)建交互式圖形。您可以將事件偵聽器附加到任何圖形,使您可以響應(yīng)用戶的操作,例如點擊、鼠標(biāo)移動等等。這使得 GraphicsJS 成為創(chuàng)建交互式 Web 應(yīng)用程序的絕佳選擇。<\/p>\n<h3>GraphicsJS 是否支持圖層?<\/h3>\n<p>是的,GraphicsJS 支持圖層,允許您將圖形組織到單獨的組中。每個圖層都可以獨立操作,從而更易于管理復(fù)雜的圖形。您還可以控制每個圖層的可見性和 z 順序,從而對圖形進行細(xì)粒度控制。<\/p>\n<h3>如何使用 GraphicsJS 優(yōu)化我的圖形?<\/h3>\n<p>GraphicsJS 提供了幾項功能,可以幫助您優(yōu)化圖形。例如,您可以使用裁剪方法隱藏指定區(qū)域之外的圖形部分,從而減少所需的渲染量。您還可以使用緩存方法來存儲圖形的渲染輸出,從而提高經(jīng)常重新繪制圖形的性能。<\/p>\n<h3>我可以使用 GraphicsJS 創(chuàng)建圖表和圖形嗎?<\/h3>\n<p>雖然 GraphicsJS 不是專門為創(chuàng)建圖表和圖形而設(shè)計的,但其強大的繪圖和動畫功能使其可以創(chuàng)建任何類型的圖形,包括圖表和圖形。您可以使用庫的方法來繪制線條、曲線、矩形、圓形等等,從而創(chuàng)建各種圖表類型。<\/p>\n<h3>GraphicsJS 是否免費使用?<\/h3>\n<p>是的,GraphicsJS 是一個免費的開源庫。您可以在項目中免費使用它。該庫也得到了積極維護,確保它與最新的 Web 標(biāo)準(zhǔn)和技術(shù)保持同步。<\/p>"}	</script>
    	
    <meta http-equiv="Cache-Control" content="no-transform" />
    <meta http-equiv="Cache-Control" content="no-siteapp" />
    <script>var V_PATH="/";window.onerror=function(){ return true; };</script>
    </head>
    
    <body data-commit-time="2023-12-28T14:50:12+08:00" class="editor_body body2_2">
    	<link rel="stylesheet" type="text/css" href="/static/csshw/stylehw.css">
    <header>
        <div   id="wjcelcm34c"   class="head">
            <div   id="wjcelcm34c"   class="haed_left">
                <div   id="wjcelcm34c"   class="haed_logo">
                    <a href="http://ipnx.cn/zh/" title="" class="haed_logo_a">
                        <img src="/static/imghw/logo.png" alt="" class="haed_logoimg">
                    </a>
                </div>
                <div   id="wjcelcm34c"   class="head_nav">
                    <div   id="wjcelcm34c"   class="head_navs">
                        <a href="javascript:;" title="社區(qū)" class="head_nava head_nava-template1">社區(qū)</a>
                        <div   class="wjcelcm34c"   id="dropdown-template1" style="display: none;">
                            <div   id="wjcelcm34c"   class="languagechoose">
                                <a href="http://ipnx.cn/zh/article.html" title="文章" class="languagechoosea on">文章</a>
                                <a href="http://ipnx.cn/zh/faq/zt" title="合集" class="languagechoosea">合集</a>
                                <a href="http://ipnx.cn/zh/wenda.html" title="問答" class="languagechoosea">問答</a>
                            </div>
                        </div>
                    </div>
    
                    <div   id="wjcelcm34c"   class="head_navs">
                        <a href="javascript:;" title="學(xué)習(xí)" class="head_nava head_nava-template1_1">學(xué)習(xí)</a>
                        <div   class="wjcelcm34c"   id="dropdown-template1_1" style="display: none;">
                            <div   id="wjcelcm34c"   class="languagechoose">
                                <a href="http://ipnx.cn/zh/course.html" title="課程" class="languagechoosea on">課程</a>
                                <a href="http://ipnx.cn/zh/dic/" title="編程詞典" class="languagechoosea">編程詞典</a>
                            </div>
                        </div>
                    </div>
    
                    <div   id="wjcelcm34c"   class="head_navs">
                        <a href="javascript:;" title="工具庫" class="head_nava head_nava-template1_2">工具庫</a>
                        <div   class="wjcelcm34c"   id="dropdown-template1_2" style="display: none;">
                            <div   id="wjcelcm34c"   class="languagechoose">
                                <a href="http://ipnx.cn/zh/toolset/development-tools" title="開發(fā)工具" class="languagechoosea on">開發(fā)工具</a>
                                <a href="http://ipnx.cn/zh/toolset/website-source-code" title="網(wǎng)站源碼" class="languagechoosea">網(wǎng)站源碼</a>
                                <a href="http://ipnx.cn/zh/toolset/php-libraries" title="PHP 庫" class="languagechoosea">PHP 庫</a>
                                <a href="http://ipnx.cn/zh/toolset/js-special-effects" title="JS特效" class="languagechoosea on">JS特效</a>
                                <a href="http://ipnx.cn/zh/toolset/website-materials" title="網(wǎng)站素材" class="languagechoosea on">網(wǎng)站素材</a>
                                <a href="http://ipnx.cn/zh/toolset/extension-plug-ins" title="擴展插件" class="languagechoosea on">擴展插件</a>
                            </div>
                        </div>
                    </div>
    
                    <div   id="wjcelcm34c"   class="head_navs">
                        <a href="http://ipnx.cn/zh/ai" title="AI工具" class="head_nava head_nava-template1_3">AI工具</a>
                    </div>
    
                    <div   id="wjcelcm34c"   class="head_navs">
                        <a href="javascript:;" title="休閑" class="head_nava head_nava-template1_3">休閑</a>
                        <div   class="wjcelcm34c"   id="dropdown-template1_3" style="display: none;">
                            <div   id="wjcelcm34c"   class="languagechoose">
                                <a href="http://ipnx.cn/zh/game" title="游戲下載" class="languagechoosea on">游戲下載</a>
                                <a href="http://ipnx.cn/zh/mobile-game-tutorial/" title="游戲教程" class="languagechoosea">游戲教程</a>
    
                            </div>
                        </div>
                    </div>
                </div>
            </div>
                        <div   id="wjcelcm34c"   class="head_search">
                    <input id="key_words"  onkeydown="if (event.keyCode == 13) searchs('zh')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value="">
                    <a href="javascript:;" title="搜索"  onclick="searchs('zh')"><img src="/static/imghw/find.png" alt="搜索"></a>
                </div>
                    <div   id="wjcelcm34c"   class="head_right">
                <div   id="wjcelcm34c"   class="haed_language">
                    <a href="javascript:;" class="layui-btn haed_language_btn">簡體中文<i class="layui-icon layui-icon-triangle-d"></i></a>
                    <div   class="wjcelcm34c"   id="dropdown-template" style="display: none;">
                        <div   id="wjcelcm34c"   class="languagechoose">
                                                    <a href="javascript:;" title="簡體中文" class="languagechoosea">簡體中文</a>
                                                    <a href="javascript:setlang('en');" title="English" class="languagechoosea">English</a>
                                                    <a href="javascript:setlang('zh-tw');" title="繁體中文" class="languagechoosea">繁體中文</a>
                                                    <a href="javascript:setlang('ja');" title="日本語" class="languagechoosea">日本語</a>
                                                    <a href="javascript:setlang('ko');" title="???" class="languagechoosea">???</a>
                                                    <a href="javascript:setlang('ms');" title="Melayu" class="languagechoosea">Melayu</a>
                                                    <a href="javascript:setlang('fr');" title="Fran?ais" class="languagechoosea">Fran?ais</a>
                                                    <a href="javascript:setlang('de');" title="Deutsch" class="languagechoosea">Deutsch</a>
                                                </div>
                    </div>
                </div>
                <span id="wjcelcm34c"    class="head_right_line"></span>
                                <div style="display: block;" id="login" class="haed_login ">
                        <a href="javascript:;"  title="Login" class="haed_logina ">Login</a>
                    </div>
                    <div style="display: block;" id="reg" class="head_signup login">
                        <a href="javascript:;"  title="singup" class="head_signupa">singup</a>
                    </div>
                
            </div>
        </div>
    </header>
    
    	
    	<main>
    		<div   id="wjcelcm34c"   class="Article_Details_main">
    			<div   id="wjcelcm34c"   class="Article_Details_main1">
    							<div   id="wjcelcm34c"   class="Article_Details_main1L">
    					<div   id="wjcelcm34c"   class="Article_Details_main1Lmain" id="Article_Details_main1Lmain">
    						<div   id="wjcelcm34c"   class="Article_Details_main1L1">目錄</div>
    						<div   id="wjcelcm34c"   class="Article_Details_main1L2" id="Article_Details_main1L2">
    							<!-- 左側(cè)懸浮,文章定位標(biāo)題1 id="Article_Details_main1L2s_1"-->
    															<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#關(guān)鍵要點" title="關(guān)鍵要點" >關(guān)鍵要點</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#為什么選擇-GraphicsJS" title="為什么選擇 GraphicsJS" >為什么選擇 GraphicsJS</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#GraphicsJS-基礎(chǔ)知識" title="GraphicsJS 基礎(chǔ)知識" >GraphicsJS 基礎(chǔ)知識</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#我們的第一幅杰作" title="我們的第一幅杰作" >我們的第一幅杰作</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#填充-描邊和圖案填充" title="填充、描邊和圖案填充" >填充、描邊和圖案填充</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#在不到-行代碼中創(chuàng)建一個益智藝術(shù)游戲" title="在不到 50 行代碼中創(chuàng)建一個益智藝術(shù)游戲" >在不到 50 行代碼中創(chuàng)建一個益智藝術(shù)游戲</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#圖層-zIndex-和虛擬-DOM" title="圖層、zIndex 和虛擬 DOM" >圖層、zIndex 和虛擬 DOM</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#轉(zhuǎn)換" title="轉(zhuǎn)換" >轉(zhuǎn)換</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#處理事件" title="處理事件" >處理事件</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#性能優(yōu)化" title="性能優(yōu)化" >性能優(yōu)化</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#最終結(jié)果" title="最終結(jié)果" >最終結(jié)果</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#結(jié)論" title="結(jié)論" >結(jié)論</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#進一步閱讀的鏈接" title="進一步閱讀的鏈接" >進一步閱讀的鏈接</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#關(guān)于-GraphicsJS-的常見問題" title="關(guān)于 GraphicsJS 的常見問題" >關(guān)于 GraphicsJS 的常見問題</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#GraphicsJS-與其他-JavaScript-圖形庫有何不同" title="GraphicsJS 與其他 JavaScript 圖形庫有何不同?" >GraphicsJS 與其他 JavaScript 圖形庫有何不同?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#如何開始使用-GraphicsJS" title="如何開始使用 GraphicsJS?" >如何開始使用 GraphicsJS?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#我可以使用-GraphicsJS-創(chuàng)建復(fù)雜的動畫嗎" title="我可以使用 GraphicsJS 創(chuàng)建復(fù)雜的動畫嗎?" >我可以使用 GraphicsJS 創(chuàng)建復(fù)雜的動畫嗎?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#GraphicsJS-是否與所有瀏覽器兼容" title="GraphicsJS 是否與所有瀏覽器兼容?" >GraphicsJS 是否與所有瀏覽器兼容?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#如何使用-GraphicsJS-創(chuàng)建漸變" title="如何使用 GraphicsJS 創(chuàng)建漸變?" >如何使用 GraphicsJS 創(chuàng)建漸變?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#我可以使用-GraphicsJS-創(chuàng)建交互式圖形嗎" title="我可以使用 GraphicsJS 創(chuàng)建交互式圖形嗎?" >我可以使用 GraphicsJS 創(chuàng)建交互式圖形嗎?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#GraphicsJS-是否支持圖層" title="GraphicsJS 是否支持圖層?" >GraphicsJS 是否支持圖層?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#如何使用-GraphicsJS-優(yōu)化我的圖形" title="如何使用 GraphicsJS 優(yōu)化我的圖形?" >如何使用 GraphicsJS 優(yōu)化我的圖形?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#我可以使用-GraphicsJS-創(chuàng)建圖表和圖形嗎" title="我可以使用 GraphicsJS 創(chuàng)建圖表和圖形嗎?" >我可以使用 GraphicsJS 創(chuàng)建圖表和圖形嗎?</a>
    								</div>
    																<div   id="wjcelcm34c"   class="Article_Details_main1L2s ">
    									<a href="#GraphicsJS-是否免費使用" title="GraphicsJS 是否免費使用?" >GraphicsJS 是否免費使用?</a>
    								</div>
    														</div>
    					</div>
    				</div>
    							<div   id="wjcelcm34c"   class="Article_Details_main1M">
    					<div   id="wjcelcm34c"   class="phpgenera_Details_mainL1">
    						<a href="http://ipnx.cn/zh/" title="首頁"
    							class="phpgenera_Details_mainL1a">首頁</a>
    						<img src="/static/imghw/top_right.png" alt="" />
    												<a href="http://ipnx.cn/zh/web-designer.html"
    							class="phpgenera_Details_mainL1a">web前端</a>
    						<img src="/static/imghw/top_right.png" alt="" />
    												<a href="http://ipnx.cn/zh/js-tutorial.html"
    							class="phpgenera_Details_mainL1a">js教程</a>
    						<img src="/static/imghw/top_right.png" alt="" />
    						<span>介紹Graphicsjs,一個功能強大的輕量級圖形庫</span>
    					</div>
    					
    					<div   id="wjcelcm34c"   class="Articlelist_txts">
    						<div   id="wjcelcm34c"   class="Articlelist_txts_info">
    							<h1 class="Articlelist_txts_title">介紹Graphicsjs,一個功能強大的輕量級圖形庫</h1>
    							<div   id="wjcelcm34c"   class="Articlelist_txts_info_head">
    								<div   id="wjcelcm34c"   class="author_info">
    									<a href="http://ipnx.cn/zh/member/1242473.html"  class="author_avatar">
    									<img class="lazy"  data-src="https://img.php.cn/upload/avatar/001/242/473/646b03ec7509a724.jpg" src="/static/imghw/default1.png" alt="Jack chen">
    									</a>
    									<div   id="wjcelcm34c"   class="author_detail">
    																			<a href="http://ipnx.cn/zh/member/1242473.html" class="author_name">Jack chen</a>
                                    										</div>
    								</div>
                    			</div>
    							<span id="wjcelcm34c"    class="Articlelist_txts_time">Feb 17, 2025 am	 10:42 AM</span>
    														
    						</div>
    					</div>
    					<hr />
    					<div   id="wjcelcm34c"   class="article_main php-article">
    						<div   id="wjcelcm34c"   class="article-list-left detail-content-wrap content">
    						<ins class="adsbygoogle"
    							style="display:block; text-align:center;"
    							data-ad-layout="in-article"
    							data-ad-format="fluid"
    							data-ad-client="ca-pub-5902227090019525"
    							data-ad-slot="3461856641">
    						</ins>
    						
    
    					<p>HTML5:現(xiàn)代網(wǎng)絡(luò)的基石。如今,在創(chuàng)建交互式圖像時,SVG 和 Canvas 通常是首選技術(shù)——Flash 已被遺忘,Silverlight 則成為網(wǎng)絡(luò)邊緣罕見的獨角獸,很少有人記得第三方插件。</p>
    <p>每種技術(shù)的優(yōu)缺點都有詳細(xì)記錄,但簡而言之,SVG 更適合創(chuàng)建和處理交互式元素。這是因為 SVG 是一種基于 XML 的矢量格式,當(dāng)使用 <code><svg></svg></code> 標(biāo)簽將圖像加載到頁面中時,其中的每個元素都可以在 SVG DOM 中使用。</p>
    <p>在本文中,我想向您介紹 GraphicsJS,這是一個基于 SVG 的全新強大的開源 JavaScript 繪圖庫(對于舊版 IE 版本,它具有 VML 備用方案)。我將首先快速介紹其基礎(chǔ)知識,然后借助兩個簡短而精彩的示例來展示該庫的功能:第一個示例完全關(guān)于藝術(shù),第二個示例說明如何在不到 50 行代碼中編寫一個簡單的益智藝術(shù)游戲。</p>
    <h2 id="關(guān)鍵要點">關(guān)鍵要點</h2>
    <ul>
    <li>GraphicsJS 是一個新的、強大的、開源的 JavaScript 繪圖庫,基于 SVG,并為舊版 IE 版本提供 VML 備用方案。它輕量級且靈活,具有豐富的 JavaScript API。</li>
    <li>該庫由 AnyChart 發(fā)布,至少已在 AnyChart 的專有產(chǎn)品中使用三年來渲染圖表,確保其穩(wěn)健性。與 AnyChart 的 JavaScript 繪圖庫不同,GraphicsJS 可免費用于商業(yè)和非營利項目。</li>
    <li>GraphicsJS 具有跨瀏覽器兼容性,支持 Internet Explorer 6.0 、Safari 3.0 、Firefox 3.0  和 Opera 9.5 。它在舊版 IE 版本中以 VML 渲染,在所有其他瀏覽器中以 SVG 渲染。</li>
    <li>該庫允許將圖形和動畫結(jié)合起來,示例包括動畫篝火、旋轉(zhuǎn)星系、降雨以及可玩的 15 拼圖游戲。它還包含詳盡的文檔和全面的 API 參考。</li>
    <li>GraphicsJS 庫可用于創(chuàng)建交互式 Web 應(yīng)用程序,其功能包括圖層、漸變、圖案、事件處理和性能優(yōu)化。它還支持復(fù)雜的動畫和轉(zhuǎn)換,使其成為開發(fā)人員的多功能選擇。</li>
    </ul>
    <h2 id="為什么選擇-GraphicsJS">為什么選擇 GraphicsJS</h2>
    <p>有很多庫可以幫助開發(fā)人員使用 SVG:Rapha?l、Snap.svg 和 BonsaiJS,僅舉幾例最佳庫。這些庫各有優(yōu)缺點,但對其進行徹底比較將是另一篇文章的主題。本文是關(guān)于 GraphicsJS 的,因此讓我解釋一下它有什么優(yōu)點和特殊之處。</p>
    <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173976013882330.jpg" class="lazy" alt="Introducing GraphicsJS, a Powerful Lightweight Graphics Library "></p>
    <p>首先,GraphicsJS 輕量級且具有非常靈活的 JavaScript API。它實現(xiàn)了許多豐富的文本功能,以及一個與瀏覽器特定 HTML DOM 實現(xiàn)分離的虛擬 DOM。</p>
    <p>其次,它是一個新的開源 JavaScript 庫,于去年秋季由 AnyChart(全球領(lǐng)先的交互式數(shù)據(jù)可視化軟件開發(fā)商之一)發(fā)布。AnyChart 至少已使用 GraphicsJS 三年(自 AnyChart 7.0 發(fā)布以來)在其專有產(chǎn)品中渲染圖表,因此 GraphicsJS 已完全經(jīng)過實戰(zhàn)測試。(免責(zé)聲明:我是 AnyChart 的研發(fā)主管和 GraphicsJS 的首席開發(fā)人員)</p>
    <p>第三,與 AnyChart 的 JavaScript 繪圖庫不同,GraphicsJS 可免費用于商業(yè)和非營利項目。它在 GitHub 上根據(jù) Apache 許可證提供。</p>
    <p>第四,GraphicsJS 具有跨瀏覽器兼容性,支持 Internet Explorer 6.0 、Safari 3.0 、Firefox 3.0  和 Opera 9.5 。它在舊版 IE 版本中以 VML 渲染,在所有其他瀏覽器中以 SVG 渲染。</p>
    <p>最后,GraphicsJS 允許您將圖形和動畫完美地結(jié)合起來。查看其主要圖庫,其中包含動畫篝火、旋轉(zhuǎn)星系、降雨、程序生成的葉子、可玩的 15 拼圖游戲等等。GraphicsJS 在其詳盡的文檔和全面的 API 參考中包含更多示例。</p>
    <h2 id="GraphicsJS-基礎(chǔ)知識">GraphicsJS 基礎(chǔ)知識</h2>
    <p>要開始使用 GraphicsJS,您需要引用該庫并為繪圖創(chuàng)建一個塊級 HTML 元素:</p>
    <pre class='brush:php;toolbar:false;'> <!DOCTYPE html>
     <html lang="en">
     <head>
       <meta charset="utf-8" />
       <title>GraphicsJS Basic Example</title>    
     </head>
     <body>
       <div id="stage-container" style="width: 400px; height: 375px;"></div>
    
       <??>
       <??>
     </body>
     </html></pre>
    <p>然后,您應(yīng)該創(chuàng)建一個舞臺并在其中繪制一些內(nèi)容,例如矩形、圓形或其他形狀:</p>
    <pre class='brush:php;toolbar:false;'> // 創(chuàng)建舞臺
     var stage = acgraph.create('stage-container');
     // 繪制矩形
     var stage.rect(25, 50, 350, 300);</pre>
    <p>以下是 CodePen 上的示例,我們在其中更進一步并繪制了死亡圣器符號。</p>
    <h2 id="我們的第一幅杰作">我們的第一幅杰作</h2>
    <h3 id="填充-描邊和圖案填充">填充、描邊和圖案填充</h3>
    <p>可以使用填充設(shè)置和描邊設(shè)置對任何形狀或路徑進行著色。所有內(nèi)容都有描邊(邊框),但只有形狀和閉合路徑才有填充。填充和描邊設(shè)置非常豐富,您可以將線性或圓形漸變用于填充和描邊。此外,線條可以是虛線的,并且支持具有多種平鋪模式的圖像填充。但這都是您幾乎可以在任何庫中都能找到的相當(dāng)標(biāo)準(zhǔn)的內(nèi)容。使 GraphicsJS 具有特殊性的是其網(wǎng)格和圖案填充功能,它不僅允許您直接使用 32 種(!) 可用的網(wǎng)格填充圖案,還允許您輕松創(chuàng)建由形狀或文本組成的自定義圖案。</p>
    <p>現(xiàn)在,讓我們看看究竟可以實現(xiàn)什么!我將繪制一幅男人站在房子附近的簡筆畫,然后用不同的圖案和顏色填充來增強它。為了簡單起見,讓我們把它做成一幅幼稚的藝術(shù)畫(并盡量不要涉及到藝術(shù)粗野)。就是這樣:</p>
    <pre class='brush:php;toolbar:false;'> // 創(chuàng)建舞臺
     var stage = acgraph.create('stage-container');
    
     // 繪制框架
     var frame = stage.rect(25, 50, 350, 300);
    
     // 繪制房子
     var walls = stage.rect(50, 250, 200, 100);
     var roof  = stage.path()
       .moveTo(50, 250)
       .lineTo(150, 180)
       .lineTo(250, 250)
       .close();
    
     // 繪制一個人
     var head = stage.circle(330, 280, 10);
     var neck = stage.path().moveTo(330, 290).lineTo(330, 300);
     var kilt = stage.triangleUp(330, 320, 20);
     var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340);
     var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);</pre>
    <p>查看 CodePen 上的結(jié)果。</p>
    <p>如您所見,我們現(xiàn)在正在使用變量——所有在舞臺上繪制內(nèi)容的方法都會返回對所創(chuàng)建對象的引用,并且此鏈接可用于更改或刪除對象。</p>
    <p>還要注意鏈?zhǔn)秸{(diào)用(例如 <code>stage.path().moveTo(320, 330).lineTo(320, 340);</code>)如何在 GraphicsJS 中隨處可見,它有助于縮短代碼。鏈?zhǔn)秸{(diào)用應(yīng)謹(jǐn)慎使用,但如果應(yīng)用得當(dāng),它確實使代碼更緊湊且更易于閱讀。</p><p>現(xiàn)在,讓我們把這個涂色頁交給一個孩子,讓他們來涂色。因為即使是孩子也能掌握以下技術(shù):</p>
    <pre class='brush:php;toolbar:false;'> <!DOCTYPE html>
     <html lang="en">
     <head>
       <meta charset="utf-8" />
       <title>GraphicsJS Basic Example</title>    
     </head>
     <body>
       <div id="stage-container" style="width: 400px; height: 375px;"></div>
    
       <??>
       <??>
     </body>
     </html></pre>
    <p>這就是我們示例現(xiàn)在的外觀。</p>
    <p>現(xiàn)在,我們有一幅高地人在蘇格蘭短裙旁邊,他站在他的磚砌城堡附近,屋頂是稻草的圖片。我們甚至可以冒險說這確實是一件我們想要獲得版權(quán)的<em>藝術(shù)品</em>。讓我們使用基于自定義文本的圖案填充來做到這一點:</p>
    <pre class='brush:php;toolbar:false;'> // 創(chuàng)建舞臺
     var stage = acgraph.create('stage-container');
     // 繪制矩形
     var stage.rect(25, 50, 350, 300);</pre>
    <p>如您所見,這很容易做到:您創(chuàng)建一個文本對象的實例,然后在舞臺上形成一個圖案,并將文本放入圖案中。</p>
    <p>查看 CodePen 上的彩色版權(quán)房屋/graphicsjs。</p>
    <h2 id="在不到-行代碼中創(chuàng)建一個益智藝術(shù)游戲">在不到 50 行代碼中創(chuàng)建一個益智藝術(shù)游戲</h2>
    <p>在本文的下一部分,我想向您展示如何在不到 50 行代碼中使用 GraphicsJS 創(chuàng)建一個類似 Cookie Clicker 的游戲。</p>
    <p>游戲名稱為<em>“風(fēng)中清掃街道”</em>,玩家扮演一名清道夫的角色,在秋天的多風(fēng)下午清掃街道。該游戲使用 GraphicsJS 圖庫中程序生成的葉子示例中的一些代碼。</p>
    <p>您可以在 CodePen(或文章結(jié)尾)上查看完成的游戲。</p>
    <h3 id="圖層-zIndex-和虛擬-DOM">圖層、zIndex 和虛擬 DOM</h3>
    <p>我們首先創(chuàng)建一個舞臺(如前所述),然后聲明一些初始變量:</p>
    <pre class='brush:php;toolbar:false;'> // 創(chuàng)建舞臺
     var stage = acgraph.create('stage-container');
    
     // 繪制框架
     var frame = stage.rect(25, 50, 350, 300);
    
     // 繪制房子
     var walls = stage.rect(50, 250, 200, 100);
     var roof  = stage.path()
       .moveTo(50, 250)
       .lineTo(150, 180)
       .lineTo(250, 250)
       .close();
    
     // 繪制一個人
     var head = stage.circle(330, 280, 10);
     var neck = stage.path().moveTo(330, 290).lineTo(330, 300);
     var kilt = stage.triangleUp(330, 320, 20);
     var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340);
     var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);</pre>
    <p>對于這個游戲,我們將使用圖層——GraphicsJS 中用于對元素進行分組的對象。如果您想對元素應(yīng)用類似的更改(例如轉(zhuǎn)換),則必須對元素進行分組。您可以在暫停模式下更改圖層(稍后將詳細(xì)介紹),這可以提高性能和用戶體驗。</p>
    <p>在此演示中,我們使用圖層功能來幫助我們將葉子組合在一起,并避免它們覆蓋標(biāo)簽(它告訴我們清掃了多少葉子)。為此,我們創(chuàng)建一個標(biāo)簽,然后調(diào)用 <code>stage.layer</code> 方法,該方法創(chuàng)建舞臺綁定圖層。我們將此圖層的 <code>zIndex</code> 屬性設(shè)置為低于標(biāo)簽的 <code>zIndex</code> 屬性。</p>
    <pre class='brush:php;toolbar:false;'> // 給圖片著色
     // 精美的框架
     frame.stroke(["red", "green", "blue"], 2, "2 2 2");
     // 磚墻
     walls.fill(acgraph.hatchFill('horizontalbrick'));
     // 草屋頂
     roof.fill("#e4d96f");
     // 格子呢裙
     kilt.fill(acgraph.hatchFill('plaid'));</pre>
    <p>執(zhí)行此操作后,無論我們在圖層中創(chuàng)建多少葉子,我們都可以確保它們不會覆蓋文本。</p>
    <h3 id="轉(zhuǎn)換">轉(zhuǎn)換</h3>
    <p>接下來,讓我們添加一個函數(shù)來繪制我們的葉子。這將使用方便的 GraphicsJS 轉(zhuǎn)換 API,該 API 允許您移動、縮放、旋轉(zhuǎn)和剪切元素和元素組。當(dāng)與圖層和虛擬 DOM 結(jié)合使用時,這是一個非常強大的工具。</p>
    <pre class='brush:php;toolbar:false;'> // 169 是版權(quán)符號的字符代碼
     var  text = acgraph.text().text(String.fromCharCode(169)).opacity(0.2);
     var  pattern_font = stage.pattern(text.getBounds());
     pattern_font.addChild(text);
     // 用圖案填充整個圖像
     frame.fill(pattern_font);</pre>
    <p>您會看到每個路徑的創(chuàng)建方式相同,但隨后會進行轉(zhuǎn)換。這將產(chǎn)生非常漂亮的隨機葉子圖案。</p>
    <h3 id="處理事件">處理事件</h3>
    <p>GraphicsJS 中的任何對象、舞臺和圖層都可以處理事件。支持的事件的完整列表可在 EventType API 中找到。舞臺有四個特殊的事件來控制渲染。</p><p>在這個游戲示例中,我們正在使用附加到葉子對象的事件偵聽器,以便用戶將鼠標(biāo)懸停在它們上時,它們會一個接一個地消失。為此,請將以下代碼添加到 <code>drawLeaves</code> 函數(shù)的底部,在 <code>return</code> 語句之前:</p>
    <pre class='brush:php;toolbar:false;'> <!DOCTYPE html>
     <html lang="en">
     <head>
       <meta charset="utf-8" />
       <title>GraphicsJS Basic Example</title>    
     </head>
     <body>
       <div id="stage-container" style="width: 400px; height: 375px;"></div>
    
       <??>
       <??>
     </body>
     </html></pre>
    <p>在這里,我們還可以看到我們正在使用圖層來計算葉子。</p>
    <pre class='brush:php;toolbar:false;'> // 創(chuàng)建舞臺
     var stage = acgraph.create('stage-container');
     // 繪制矩形
     var stage.rect(25, 50, 350, 300);</pre>
    <p>請注意,我們實際上并沒有在這里存儲葉子的數(shù)量。由于我們將葉子添加到特定圖層并從中刪除葉子,因此這使我們能夠跟蹤我們有多少個子元素(以及因此還剩下多少葉子)。</p>
    <p>GraphicsJS 提供了一個虛擬 DOM,它是 HTML DOM 的抽象,輕量級且與瀏覽器特定的 SVG/VML 實現(xiàn)分離。它對于執(zhí)行許多偉大的事情非常有用,例如跟蹤所有對象和圖層,對組應(yīng)用轉(zhuǎn)換以及在幫助下優(yōu)化渲染允許我們跟蹤和控制渲染過程的方法。</p>
    <h3 id="性能優(yōu)化">性能優(yōu)化</h3>
    <p>虛擬 DOM 以及事件處理程序允許 GraphicsJS 用戶控制渲染。性能文章可以幫助您了解這些內(nèi)容之間的關(guān)系。</p>
    <p>在游戲中生成葉子時,我們需要在添加新葉子時暫停渲染,并且只有在所有更改完成后才恢復(fù)渲染:</p>
    <pre class='brush:php;toolbar:false;'> // 創(chuàng)建舞臺
     var stage = acgraph.create('stage-container');
    
     // 繪制框架
     var frame = stage.rect(25, 50, 350, 300);
    
     // 繪制房子
     var walls = stage.rect(50, 250, 200, 100);
     var roof  = stage.path()
       .moveTo(50, 250)
       .lineTo(150, 180)
       .lineTo(250, 250)
       .close();
    
     // 繪制一個人
     var head = stage.circle(330, 280, 10);
     var neck = stage.path().moveTo(330, 290).lineTo(330, 300);
     var kilt = stage.triangleUp(330, 320, 20);
     var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340);
     var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);</pre>
    <p>這種處理新元素的方法使新葉子幾乎可以立即出現(xiàn)。</p>
    <p>最后,通過調(diào)用 <code>shakeTree()</code> 來啟動所有內(nèi)容。</p>
    <pre class='brush:php;toolbar:false;'> // 給圖片著色
     // 精美的框架
     frame.stroke(["red", "green", "blue"], 2, "2 2 2");
     // 磚墻
     walls.fill(acgraph.hatchFill('horizontalbrick'));
     // 草屋頂
     roof.fill("#e4d96f");
     // 格子呢裙
     kilt.fill(acgraph.hatchFill('plaid'));</pre>
    <h3 id="最終結(jié)果">最終結(jié)果</h3>
    <p>查看 CodePen 上的街道清掃工/graphicsjs。</p>
    <h2 id="結(jié)論">結(jié)論</h2>
    <p>向 HTML5 的轉(zhuǎn)變改變了網(wǎng)絡(luò)。當(dāng)涉及到現(xiàn)代 Web 應(yīng)用程序甚至簡單的網(wǎng)站時,我們經(jīng)常會遇到需要圖像處理的任務(wù)。雖然不可能找到在每種情況下都能很好工作的解決方案,但您應(yīng)該考慮 GraphicsJS 庫。它是開源的、健壯的,具有出色的瀏覽器支持和許多使其有趣、方便且當(dāng)然有用的功能。</p>
    <p>我很樂意在下面的評論中聽到您對 GrphicsJS 的反饋。您是否已經(jīng)在使用它?您是否會考慮將其用于新項目?我很想知道原因,或者為什么不使用它。我還正在編寫主要 JavaScript 繪圖庫列表以及將比較和對比所有這些庫的文章。也可以隨意指出您希望在那里看到的功能。</p>
    <h2 id="進一步閱讀的鏈接">進一步閱讀的鏈接</h2>
    <ul>
    <li>常規(guī)信息<ul>
    <li>SVG</li>
    <li>Canvas</li>
    <li>SVG 與 Canvas</li>
    </ul>
    </li>
    <li>庫<ul>
    <li>GraphicsJS</li>
    <li>Rapha?l</li>
    <li>Snap.svg</li>
    <li>BonsaiJS</li>
    </ul>
    </li>
    <li>GraphicsJS<ul>
    <li>GitHub 上的 GraphicsJS</li>
    <li>GraphicsJS 文檔</li>
    <li>GraphicsJS API 參考</li>
    </ul>
    </li>
    </ul>
    <h2 id="關(guān)于-GraphicsJS-的常見問題">關(guān)于 GraphicsJS 的常見問題</h2>
    <h3 id="GraphicsJS-與其他-JavaScript-圖形庫有何不同">GraphicsJS 與其他 JavaScript 圖形庫有何不同?</h3>
    <p>GraphicsJS 因其強大且輕量級的特性而脫穎而出。它是一個強大的庫,允許開發(fā)人員以高精度和高性能繪制和動畫化任何圖形。與其他庫不同,GraphicsJS 提供了一套全面的功能,包括圖層、漸變、圖案等等,而不會影響速度或效率。它還支持所有現(xiàn)代瀏覽器,使其成為開發(fā)人員的多功能選擇。</p>
    <h3 id="如何開始使用-GraphicsJS">如何開始使用 GraphicsJS?</h3>
    <p>要開始使用 GraphicsJS,您需要在 HTML 文件中包含 GraphicsJS 庫。您可以從官方網(wǎng)站下載該庫,也可以使用 CDN。包含該庫后,您可以通過調(diào)用該庫提供的適當(dāng)函數(shù)和方法來開始創(chuàng)建圖形。</p>
    <h3 id="我可以使用-GraphicsJS-創(chuàng)建復(fù)雜的動畫嗎">我可以使用 GraphicsJS 創(chuàng)建復(fù)雜的動畫嗎?</h3>
    <p>是的,GraphicsJS 旨在輕松處理復(fù)雜的動畫。它提供了一套豐富的動畫功能,包括緩動函數(shù)、延遲和持續(xù)時間設(shè)置。您可以動畫化圖形的任何屬性,例如其位置、大小、顏色等等。這使得 GraphicsJS 成為創(chuàng)建交互式和動態(tài)圖形的強大工具。</p>
    <h3 id="GraphicsJS-是否與所有瀏覽器兼容">GraphicsJS 是否與所有瀏覽器兼容?</h3>
    <p>GraphicsJS 旨在與所有現(xiàn)代瀏覽器兼容,包括 Chrome、Firefox、Safari 和 Internet Explorer。它使用 SVG 和 VML 進行渲染,所有這些瀏覽器都支持它們。這確保您的圖形在不同的平臺和設(shè)備上看起來一致且性能良好。</p>
    <h3 id="如何使用-GraphicsJS-創(chuàng)建漸變">如何使用 GraphicsJS 創(chuàng)建漸變?</h3>
    <p>使用 GraphicsJS 創(chuàng)建漸變很簡單。您可以使用漸變方法定義線性或徑向漸變,指定顏色和位置,然后將漸變應(yīng)用于任何圖形。這使您可以輕松創(chuàng)建豐富多彩的圖形。</p>
    <h3 id="我可以使用-GraphicsJS-創(chuàng)建交互式圖形嗎">我可以使用 GraphicsJS 創(chuàng)建交互式圖形嗎?</h3>
    <p>是的,GraphicsJS 提供了一套事件處理功能,允許您創(chuàng)建交互式圖形。您可以將事件偵聽器附加到任何圖形,使您可以響應(yīng)用戶的操作,例如點擊、鼠標(biāo)移動等等。這使得 GraphicsJS 成為創(chuàng)建交互式 Web 應(yīng)用程序的絕佳選擇。</p>
    <h3 id="GraphicsJS-是否支持圖層">GraphicsJS 是否支持圖層?</h3>
    <p>是的,GraphicsJS 支持圖層,允許您將圖形組織到單獨的組中。每個圖層都可以獨立操作,從而更易于管理復(fù)雜的圖形。您還可以控制每個圖層的可見性和 z 順序,從而對圖形進行細(xì)粒度控制。</p>
    <h3 id="如何使用-GraphicsJS-優(yōu)化我的圖形">如何使用 GraphicsJS 優(yōu)化我的圖形?</h3>
    <p>GraphicsJS 提供了幾項功能,可以幫助您優(yōu)化圖形。例如,您可以使用裁剪方法隱藏指定區(qū)域之外的圖形部分,從而減少所需的渲染量。您還可以使用緩存方法來存儲圖形的渲染輸出,從而提高經(jīng)常重新繪制圖形的性能。</p>
    <h3 id="我可以使用-GraphicsJS-創(chuàng)建圖表和圖形嗎">我可以使用 GraphicsJS 創(chuàng)建圖表和圖形嗎?</h3>
    <p>雖然 GraphicsJS 不是專門為創(chuàng)建圖表和圖形而設(shè)計的,但其強大的繪圖和動畫功能使其可以創(chuàng)建任何類型的圖形,包括圖表和圖形。您可以使用庫的方法來繪制線條、曲線、矩形、圓形等等,從而創(chuàng)建各種圖表類型。</p>
    <h3 id="GraphicsJS-是否免費使用">GraphicsJS 是否免費使用?</h3>
    <p>是的,GraphicsJS 是一個免費的開源庫。您可以在項目中免費使用它。該庫也得到了積極維護,確保它與最新的 Web 標(biāo)準(zhǔn)和技術(shù)保持同步。</p><p>以上是介紹Graphicsjs,一個功能強大的輕量級圖形庫的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!</p>
    
    
    						</div>
    					</div>
    					<div   id="wjcelcm34c"   class="wzconShengming_sp">
    						<div   id="wjcelcm34c"   class="bzsmdiv_sp">本站聲明</div>
    						<div>本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn</div>
    					</div>
    				</div>
    
    				<ins class="adsbygoogle"
         style="display:block"
         data-ad-format="autorelaxed"
         data-ad-client="ca-pub-5902227090019525"
         data-ad-slot="2507867629"></ins>
    
    
    
    				<div   id="wjcelcm34c"   class="AI_ToolDetails_main4sR">
    
    
    				<ins class="adsbygoogle"
            style="display:block"
            data-ad-client="ca-pub-5902227090019525"
            data-ad-slot="3653428331"
            data-ad-format="auto"
            data-full-width-responsive="true"></ins>
        
    
    
    					<!-- <div   id="wjcelcm34c"   class="phpgenera_Details_mainR4">
    						<div   id="wjcelcm34c"   class="phpmain1_4R_readrank">
    							<div   id="wjcelcm34c"   class="phpmain1_4R_readrank_top">
    								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									src="/static/imghw/hotarticle2.png" alt="" />
    								<h2>熱門文章</h2>
    							</div>
    							<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottom">
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796832397.html" title="Grass Wonder Build Guide |烏瑪媽媽漂亮的德比" class="phpgenera_Details_mainR4_bottom_title">Grass Wonder Build Guide |烏瑪媽媽漂亮的德比</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 周前</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796833110.html" title="<??>:在森林里99夜 - 所有徽章以及如何解鎖" class="phpgenera_Details_mainR4_bottom_title"><??>:在森林里99夜 - 所有徽章以及如何解鎖</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>3 周前</span>
    										<span>By DDD</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796831605.html" title="烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)" class="phpgenera_Details_mainR4_bottom_title">烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 周前</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796831905.html" title="Windows安全是空白或不顯示選項" class="phpgenera_Details_mainR4_bottom_title">Windows安全是空白或不顯示選項</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 周前</span>
    										<span>By 下次還敢</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796836699.html" title="Rimworld Odyssey溫度指南和Gravtech" class="phpgenera_Details_mainR4_bottom_title">Rimworld Odyssey溫度指南和Gravtech</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>3 周前</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    														</div>
    							<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_more">
    								<a href="http://ipnx.cn/zh/article.html">顯示更多</a>
    							</div>
    						</div>
    					</div> -->
    
    
    											<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3">
    							<div   id="wjcelcm34c"   class="phpmain1_4R_readrank">
    								<div   id="wjcelcm34c"   class="phpmain1_4R_readrank_top">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/hottools2.png" alt="" />
    									<h2>熱AI工具</h2>
    								</div>
    								<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_bottom">
    																		<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title">
    													<h3>Undress AI Tool</h3>
    												</a>
    												<p>免費脫衣服圖片</p>
    											</div>
    										</div>
    																		<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title">
    													<h3>Undresser.AI Undress</h3>
    												</a>
    												<p>人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片</p>
    											</div>
    										</div>
    																		<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title">
    													<h3>AI Clothes Remover</h3>
    												</a>
    												<p>用于從照片中去除衣服的在線人工智能工具。</p>
    											</div>
    										</div>
    																		<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title">
    													<h3>Clothoff.io</h3>
    												</a>
    												<p>AI脫衣機</p>
    											</div>
    										</div>
    																		<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title">
    													<h3>Video Face Swap</h3>
    												</a>
    												<p>使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!</p>
    											</div>
    										</div>
    																</div>
    								<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_more">
    									<a href="http://ipnx.cn/zh/ai">顯示更多</a>
    								</div>
    							</div>
    						</div>
    					
    
    
    					<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4">
    						<div   id="wjcelcm34c"   class="phpmain1_4R_readrank">
    							<div   id="wjcelcm34c"   class="phpmain1_4R_readrank_top">
    								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									src="/static/imghw/hotarticle2.png" alt="" />
    								<h2>熱門文章</h2>
    							</div>
    							<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottom">
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796832397.html" title="Grass Wonder Build Guide |烏瑪媽媽漂亮的德比" class="phpgenera_Details_mainR4_bottom_title">Grass Wonder Build Guide |烏瑪媽媽漂亮的德比</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 周前</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796833110.html" title="<??>:在森林里99夜 - 所有徽章以及如何解鎖" class="phpgenera_Details_mainR4_bottom_title"><??>:在森林里99夜 - 所有徽章以及如何解鎖</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>3 周前</span>
    										<span>By DDD</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796831605.html" title="烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)" class="phpgenera_Details_mainR4_bottom_title">烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 周前</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796831905.html" title="Windows安全是空白或不顯示選項" class="phpgenera_Details_mainR4_bottom_title">Windows安全是空白或不顯示選項</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>4 周前</span>
    										<span>By 下次還敢</span>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/1796836699.html" title="Rimworld Odyssey溫度指南和Gravtech" class="phpgenera_Details_mainR4_bottom_title">Rimworld Odyssey溫度指南和Gravtech</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<span>3 周前</span>
    										<span>By Jack chen</span>
    									</div>
    								</div>
    														</div>
    							<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_more">
    								<a href="http://ipnx.cn/zh/article.html">顯示更多</a>
    							</div>
    						</div>
    					</div>
    
    
    											<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3">
    							<div   id="wjcelcm34c"   class="phpmain1_4R_readrank">
    								<div   id="wjcelcm34c"   class="phpmain1_4R_readrank_top">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/hottools2.png" alt="" />
    									<h2>熱工具</h2>
    								</div>
    								<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_bottom">
    																		<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/toolset/development-tools/92" title="記事本++7.3.1" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="記事本++7.3.1" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/toolset/development-tools/92" title="記事本++7.3.1" class="phpmain_tab2_mids_title">
    													<h3>記事本++7.3.1</h3>
    												</a>
    												<p>好用且免費的代碼編輯器</p>
    											</div>
    										</div>
    																			<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/toolset/development-tools/93" title="SublimeText3漢化版" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3漢化版" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/toolset/development-tools/93" title="SublimeText3漢化版" class="phpmain_tab2_mids_title">
    													<h3>SublimeText3漢化版</h3>
    												</a>
    												<p>中文版,非常好用</p>
    											</div>
    										</div>
    																			<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/toolset/development-tools/121" title="禪工作室 13.0.1" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="禪工作室 13.0.1" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/toolset/development-tools/121" title="禪工作室 13.0.1" class="phpmain_tab2_mids_title">
    													<h3>禪工作室 13.0.1</h3>
    												</a>
    												<p>功能強大的PHP集成開發(fā)環(huán)境</p>
    											</div>
    										</div>
    																			<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title">
    													<h3>Dreamweaver CS6</h3>
    												</a>
    												<p>視覺化網(wǎng)頁開發(fā)工具</p>
    											</div>
    										</div>
    																			<div   id="wjcelcm34c"   class="phpmain_tab2_mids_top">
    											<a href="http://ipnx.cn/zh/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_top_img">
    												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac版" />
    											</a>
    											<div   id="wjcelcm34c"   class="phpmain_tab2_mids_info">
    												<a href="http://ipnx.cn/zh/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_title">
    													<h3>SublimeText3 Mac版</h3>
    												</a>
    												<p>神級代碼編輯軟件(SublimeText3)</p>
    											</div>
    										</div>
    																	</div>
    								<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_more">
    									<a href="http://ipnx.cn/zh/ai">顯示更多</a>
    								</div>
    							</div>
    						</div>
    										
    
    					
    					<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4">
    						<div   id="wjcelcm34c"   class="phpmain1_4R_readrank">
    							<div   id="wjcelcm34c"   class="phpmain1_4R_readrank_top">
    								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    									src="/static/imghw/hotarticle2.png" alt="" />
    								<h2>熱門話題</h2>
    							</div>
    							<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottom">
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/laravel-tutori" title="Laravel 教程" class="phpgenera_Details_mainR4_bottom_title">Laravel 教程</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/eyess.png" alt="" />
    											<span>1597</span>
    										</div>
    										<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/tiezi.png" alt="" />
    											<span>29</span>
    										</div>
    									</div>
    								</div>
    															<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms">
    									<a href="http://ipnx.cn/zh/faq/php-tutorial" title="PHP教程" class="phpgenera_Details_mainR4_bottom_title">PHP教程</a>
    									<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_info">
    										<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/eyess.png" alt="" />
    											<span>1488</span>
    										</div>
    										<div   id="wjcelcm34c"   class="phpgenera_Details_mainR4_bottoms_infos">
    											<img src="/static/imghw/tiezi.png" alt="" />
    											<span>72</span>
    										</div>
    									</div>
    								</div>
    														</div>
    							<div   id="wjcelcm34c"   class="phpgenera_Details_mainR3_more">
    								<a href="http://ipnx.cn/zh/faq/zt">顯示更多</a>
    							</div>
    						</div>
    					</div>
    				</div>
    			</div>
    							<div   id="wjcelcm34c"   class="Article_Details_main2">
    					<div   id="wjcelcm34c"   class="phpgenera_Details_mainL4">
    						<div   id="wjcelcm34c"   class="phpmain1_2_top">
    							<a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img
    									src="/static/imghw/index2_title2.png" alt="" /></a>
    						</div>
    						<div   id="wjcelcm34c"   class="phpgenera_Details_mainL4_info">
    
    													<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796836217.html" title="如何在node.js中提出HTTP請求?" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/431/639/175234432058757.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="如何在node.js中提出HTTP請求?" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796836217.html" title="如何在node.js中提出HTTP請求?" class="phphistorical_Version2_mids_title">如何在node.js中提出HTTP請求?</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 13, 2025 am	 02:18 AM</span>
    								<p class="Articlelist_txts_p">在Node.js中發(fā)起HTTP請求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。1.使用內(nèi)置的http/https模塊無需依賴,適合基礎(chǔ)場景,但需手動處理數(shù)據(jù)拼接和錯誤監(jiān)聽,例如用https.get()獲取數(shù)據(jù)或通過.write()發(fā)送POST請求;2.axios是基于Promise的第三方庫,語法簡潔且功能強大,支持async/await、自動JSON轉(zhuǎn)換、攔截器等,推薦用于簡化異步請求操作;3.node-fetch提供類似瀏覽器fetch的風(fēng)格,基于Promise且語法簡單</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796836292.html" title="JavaScript數(shù)據(jù)類型:原始與參考" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/431/639/175234579081669.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JavaScript數(shù)據(jù)類型:原始與參考" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796836292.html" title="JavaScript數(shù)據(jù)類型:原始與參考" class="phphistorical_Version2_mids_title">JavaScript數(shù)據(jù)類型:原始與參考</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 13, 2025 am	 02:43 AM</span>
    								<p class="Articlelist_txts_p">JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時復(fù)制副本,因此互不影響;引用類型如對象、數(shù)組和函數(shù)存儲的是內(nèi)存地址,指向同一對象的變量會相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問題。理解這兩類差異有助于編寫更穩(wěn)定可靠的代碼。</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796830657.html" title="React與Angular vs Vue:哪個JS框架最好?" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/431/639/175165349052637.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="React與Angular vs Vue:哪個JS框架最好?" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796830657.html" title="React與Angular vs Vue:哪個JS框架最好?" class="phphistorical_Version2_mids_title">React與Angular vs Vue:哪個JS框架最好?</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 05, 2025 am	 02:24 AM</span>
    								<p class="Articlelist_txts_p">選哪個JavaScript框架最好?答案是根據(jù)需求選擇最適合的。1.React靈活自由,適合需要高度定制、團隊有架構(gòu)能力的中大型項目;2.Angular提供完整解決方案,適合企業(yè)級應(yīng)用和長期維護的大項目;3.Vue上手簡單,適合中小型項目或快速開發(fā)。此外,是否已有技術(shù)棧、團隊規(guī)模、項目生命周期及是否需要SSR也都是選擇框架的重要因素。總之,沒有絕對最好的框架,適合自己需求的就是最佳選擇。</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796832745.html" title="JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/246/273/173914572643912.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796832745.html" title="JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等" class="phphistorical_Version2_mids_title">JavaScript時間對象,某人構(gòu)建了一個eactexe,在Google Chrome上更快的網(wǎng)站等等</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 08, 2025 pm	 02:27 PM</span>
    								<p class="Articlelist_txts_p">JavaScript開發(fā)者們,大家好!歡迎閱讀本周的JavaScript新聞!本周我們將重點關(guān)注:Oracle與Deno的商標(biāo)糾紛、新的JavaScript時間對象獲得瀏覽器支持、GoogleChrome的更新以及一些強大的開發(fā)者工具。讓我們開始吧!Oracle與Deno的商標(biāo)之爭Oracle試圖注冊“JavaScript”商標(biāo)的舉動引發(fā)爭議。Node.js和Deno的創(chuàng)建者RyanDahl已提交請愿書,要求取消該商標(biāo),他認(rèn)為JavaScript是一個開放標(biāo)準(zhǔn),不應(yīng)由Oracle</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796832608.html" title="處理諾言:鏈接,錯誤處理和承諾在JavaScript中" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/253/068/175191360175213.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="處理諾言:鏈接,錯誤處理和承諾在JavaScript中" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796832608.html" title="處理諾言:鏈接,錯誤處理和承諾在JavaScript中" class="phphistorical_Version2_mids_title">處理諾言:鏈接,錯誤處理和承諾在JavaScript中</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 08, 2025 am	 02:40 AM</span>
    								<p class="Articlelist_txts_p">Promise是JavaScript中處理異步操作的核心機制,理解鏈?zhǔn)秸{(diào)用、錯誤處理和組合器是掌握其應(yīng)用的關(guān)鍵。1.鏈?zhǔn)秸{(diào)用通過.then()返回新Promise實現(xiàn)異步流程串聯(lián),每個.then()接收上一步結(jié)果并可返回值或Promise;2.錯誤處理應(yīng)統(tǒng)一使用.catch()捕獲異常,避免靜默失敗,并可在catch中返回默認(rèn)值繼續(xù)流程;3.組合器如Promise.all()(全成功才成功)、Promise.race()(首個完成即返回)和Promise.allSettled()(等待所有完成)</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796832618.html" title="什么是緩存API?如何與服務(wù)人員使用?" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/253/068/175191380054750.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="什么是緩存API?如何與服務(wù)人員使用?" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796832618.html" title="什么是緩存API?如何與服務(wù)人員使用?" class="phphistorical_Version2_mids_title">什么是緩存API?如何與服務(wù)人員使用?</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 08, 2025 am	 02:43 AM</span>
    								<p class="Articlelist_txts_p">CacheAPI是瀏覽器提供的一種緩存網(wǎng)絡(luò)請求的工具,常與ServiceWorker配合使用,以提升網(wǎng)站性能和離線體驗。1.它允許開發(fā)者手動存儲如腳本、樣式表、圖片等資源;2.可根據(jù)請求匹配緩存響應(yīng);3.支持刪除特定緩存或清空整個緩存;4.通過ServiceWorker監(jiān)聽fetch事件實現(xiàn)緩存優(yōu)先或網(wǎng)絡(luò)優(yōu)先等策略;5.常用于離線支持、加快重復(fù)訪問速度、預(yù)加載關(guān)鍵資源及后臺更新內(nèi)容;6.使用時需注意緩存版本控制、存儲限制及與HTTP緩存機制的區(qū)別。</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796831296.html" title="利用Array.Prototype方法用于JavaScript中的數(shù)據(jù)操作" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/253/068/175174058098308.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="利用Array.Prototype方法用于JavaScript中的數(shù)據(jù)操作" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796831296.html" title="利用Array.Prototype方法用于JavaScript中的數(shù)據(jù)操作" class="phphistorical_Version2_mids_title">利用Array.Prototype方法用于JavaScript中的數(shù)據(jù)操作</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 06, 2025 am	 02:36 AM</span>
    								<p class="Articlelist_txts_p">JavaScript數(shù)組內(nèi)置方法如.map()、.filter()和.reduce()可簡化數(shù)據(jù)處理;1).map()用于一對一轉(zhuǎn)換元素生成新數(shù)組;2).filter()按條件篩選元素;3).reduce()用于聚合數(shù)據(jù)為單一值;使用時應(yīng)避免誤用導(dǎo)致副作用或性能問題。</p>
    							</div>
    														<div   id="wjcelcm34c"   class="phphistorical_Version2_mids">
    								<a href="http://ipnx.cn/zh/faq/1796832563.html" title="JS綜述:深入研究JavaScript事件循環(huán)" class="phphistorical_Version2_mids_img">
    									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
    										src="/static/imghw/default1.png" class="lazy"  data-src="https://img.php.cn/upload/article/001/431/639/175191266081499.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="JS綜述:深入研究JavaScript事件循環(huán)" />
    								</a>
    								<a href="http://ipnx.cn/zh/faq/1796832563.html" title="JS綜述:深入研究JavaScript事件循環(huán)" class="phphistorical_Version2_mids_title">JS綜述:深入研究JavaScript事件循環(huán)</a>
    								<span id="wjcelcm34c"    class="Articlelist_txts_time">Jul 08, 2025 am	 02:24 AM</span>
    								<p class="Articlelist_txts_p">JavaScript的事件循環(huán)通過協(xié)調(diào)調(diào)用棧、WebAPI和任務(wù)隊列來管理異步操作。1.調(diào)用棧執(zhí)行同步代碼,遇到異步任務(wù)時交由WebAPI處理;2.WebAPI在后臺完成任務(wù)后將回調(diào)放入相應(yīng)的隊列(宏任務(wù)或微任務(wù));3.事件循環(huán)檢查調(diào)用棧是否為空,若為空則從隊列中取出回調(diào)推入調(diào)用棧執(zhí)行;4.微任務(wù)(如Promise.then)優(yōu)先于宏任務(wù)(如setTimeout)執(zhí)行;5.理解事件循環(huán)有助于避免阻塞主線程并優(yōu)化代碼執(zhí)行順序。</p>
    							</div>
    													</div>
    
    													<a href="http://ipnx.cn/zh/web-designer.html" class="phpgenera_Details_mainL4_botton">
    								<span>See all articles</span>
    								<img src="/static/imghw/down_right.png" alt="" />
    							</a>
    											</div>
    				</div>
    					</div>
    	</main>
    	<footer>
        <div   id="wjcelcm34c"   class="footer">
            <div   id="wjcelcm34c"   class="footertop">
                <img src="/static/imghw/logo.png" alt="">
                <p>公益在線PHP培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!</p>
            </div>
            <div   id="wjcelcm34c"   class="footermid">
                <a href="http://ipnx.cn/zh/about/us.html">關(guān)于我們</a>
                <a href="http://ipnx.cn/zh/about/disclaimer.html">免責(zé)聲明</a>
                <a href="http://ipnx.cn/zh/update/article_0_1.html">Sitemap</a>
            </div>
            <div   id="wjcelcm34c"   class="footerbottom">
                <p>
                    ? php.cn All rights reserved
                </p>
            </div>
        </div>
    </footer>
    
    <input type="hidden" id="verifycode" value="/captcha.html">
    
    
    
    
    		<link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
    	
    	
    	
    	
    	
    
    	
    	
    
    
    
    
    
    
    <footer>
    <div class="friendship-link">
    <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p>
    <a href="http://ipnx.cn/" title="亚洲国产日韩欧美一区二区三区">亚洲国产日韩欧美一区二区三区</a>
    
    <div class="friend-links">
    
    
    </div>
    </div>
    
    </footer>
    
    
    <script>
    (function(){
        var bp = document.createElement('script');
        var curProtocol = window.location.protocol.split(':')[0];
        if (curProtocol === 'https') {
            bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
        }
        else {
            bp.src = 'http://push.zhanzhang.baidu.com/push.js';
        }
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(bp, s);
    })();
    </script>
    </body><div id="buou8" class="pl_css_ganrao" style="display: none;"><style id="buou8"><kbd id="buou8"><tbody id="buou8"></tbody></kbd></style><dd id="buou8"><legend id="buou8"><abbr id="buou8"></abbr></legend></dd><meter id="buou8"></meter><tbody id="buou8"><sup id="buou8"><ol id="buou8"><form id="buou8"></form></ol></sup></tbody><rt id="buou8"><optgroup id="buou8"></optgroup></rt><legend id="buou8"><small id="buou8"><center id="buou8"><dl id="buou8"></dl></center></small></legend><em id="buou8"></em><button id="buou8"><span id="buou8"></span></button><big id="buou8"><fieldset id="buou8"></fieldset></big><b id="buou8"><wbr id="buou8"><strong id="buou8"></strong></wbr></b><sub id="buou8"><p id="buou8"></p></sub><div id="buou8"></div><strong id="buou8"></strong><listing id="buou8"><ul id="buou8"><form id="buou8"><video id="buou8"></video></form></ul></listing><mark id="buou8"><thead id="buou8"><sup id="buou8"></sup></thead></mark><meter id="buou8"></meter><tfoot id="buou8"></tfoot><listing id="buou8"><label id="buou8"><menu id="buou8"><bdo id="buou8"></bdo></menu></label></listing><small id="buou8"></small><thead id="buou8"></thead><label id="buou8"></label><meter id="buou8"><address id="buou8"><sub id="buou8"></sub></address></meter><dd id="buou8"><xmp id="buou8"><button id="buou8"><pre id="buou8"></pre></button></xmp></dd><acronym id="buou8"></acronym><ins id="buou8"></ins><var id="buou8"></var><strong id="buou8"><tbody id="buou8"><dfn id="buou8"></dfn></tbody></strong><ruby id="buou8"></ruby><em id="buou8"><ul id="buou8"></ul></em><th id="buou8"></th><abbr id="buou8"><acronym id="buou8"><delect id="buou8"></delect></acronym></abbr><wbr id="buou8"><sup id="buou8"></sup></wbr><small id="buou8"><p id="buou8"><strong id="buou8"></strong></p></small><button id="buou8"><ul id="buou8"><thead id="buou8"></thead></ul></button><center id="buou8"></center><label id="buou8"></label><input id="buou8"><noframes id="buou8"></noframes></input><acronym id="buou8"><bdo id="buou8"></bdo></acronym><optgroup id="buou8"><em id="buou8"><sup id="buou8"><tfoot id="buou8"></tfoot></sup></em></optgroup><thead id="buou8"></thead><optgroup id="buou8"><label id="buou8"></label></optgroup><em id="buou8"><menuitem id="buou8"><form id="buou8"><object id="buou8"></object></form></menuitem></em><acronym id="buou8"><div id="buou8"><pre id="buou8"></pre></div></acronym><input id="buou8"></input><dfn id="buou8"><li id="buou8"><font id="buou8"><wbr id="buou8"></wbr></font></li></dfn><rp id="buou8"></rp><sup id="buou8"><th id="buou8"></th></sup><span id="buou8"><address id="buou8"><sup id="buou8"></sup></address></span><video id="buou8"><small id="buou8"><output id="buou8"></output></small></video><sup id="buou8"><dd id="buou8"><acronym id="buou8"></acronym></dd></sup><li id="buou8"><b id="buou8"><center id="buou8"></center></b></li><ruby id="buou8"><big id="buou8"><tbody id="buou8"></tbody></big></ruby><legend id="buou8"><pre id="buou8"><td id="buou8"></td></pre></legend><p id="buou8"><source id="buou8"><pre id="buou8"></pre></source></p><optgroup id="buou8"><small id="buou8"><bdo id="buou8"></bdo></small></optgroup><button id="buou8"></button><dfn id="buou8"></dfn><blockquote id="buou8"><samp id="buou8"><meter id="buou8"><address id="buou8"></address></meter></samp></blockquote><label id="buou8"><u id="buou8"></u></label><sup id="buou8"></sup><i id="buou8"></i><samp id="buou8"></samp><bdo id="buou8"><strong id="buou8"></strong></bdo><abbr id="buou8"></abbr><dl id="buou8"><pre id="buou8"></pre></dl><p id="buou8"></p><center id="buou8"><ol id="buou8"><listing id="buou8"><pre id="buou8"></pre></listing></ol></center><ins id="buou8"></ins><tbody id="buou8"><small id="buou8"><p id="buou8"></p></small></tbody><ruby id="buou8"></ruby><tt id="buou8"></tt><menu id="buou8"></menu><delect id="buou8"><ins id="buou8"><sup id="buou8"></sup></ins></delect><dfn id="buou8"></dfn><font id="buou8"><pre id="buou8"><th id="buou8"><i id="buou8"></i></th></pre></font><div id="buou8"><dl id="buou8"><code id="buou8"></code></dl></div><acronym id="buou8"></acronym><acronym id="buou8"><button id="buou8"><b id="buou8"></b></button></acronym><small id="buou8"><dfn id="buou8"></dfn></small><var id="buou8"><th id="buou8"><ins id="buou8"></ins></th></var><em id="buou8"></em><pre id="buou8"><sup id="buou8"><center id="buou8"><font id="buou8"></font></center></sup></pre><th id="buou8"></th><object id="buou8"><bdo id="buou8"><form id="buou8"></form></bdo></object><tr id="buou8"></tr><thead id="buou8"></thead><mark id="buou8"></mark><em id="buou8"></em><center id="buou8"><dd id="buou8"><acronym id="buou8"><pre id="buou8"></pre></acronym></dd></center><blockquote id="buou8"></blockquote><ul id="buou8"><dd id="buou8"><acronym id="buou8"><wbr id="buou8"></wbr></acronym></dd></ul><strong id="buou8"><listing id="buou8"></listing></strong><tbody id="buou8"><label id="buou8"><bdo id="buou8"></bdo></label></tbody><fieldset id="buou8"></fieldset><address id="buou8"></address><pre id="buou8"></pre><tfoot id="buou8"></tfoot><video id="buou8"></video><source id="buou8"><thead id="buou8"><sup id="buou8"><p id="buou8"></p></sup></thead></source></div>
    
    </html>