自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

拼圖也能寫(xiě)代碼?快來(lái)試試這個(gè)谷歌開(kāi)源的工具!

新聞 開(kāi)發(fā)工具
Blockly 是 Google 開(kāi)源的基于 web 的可視化程序編輯器,用戶可以將一些定義好的圖形塊拼接在一起,用來(lái)構(gòu)建應(yīng)用程序。

  【導(dǎo)語(yǔ)】:Blockly 是 Google 開(kāi)源的基于 web 的可視化程序編輯器,用戶可以將一些定義好的圖形塊拼接在一起,用來(lái)構(gòu)建應(yīng)用程序。

簡(jiǎn)介

Blockly 是一個(gè)向 Web 和移動(dòng)應(yīng)用程序添加可視化代碼編輯器的庫(kù),塊之間使用互鎖的圖形塊來(lái)表示代碼,如變量,邏輯表達(dá)式,循環(huán)等。該編輯器將代碼表示為一個(gè)個(gè)的圖形塊,通過(guò)圖形塊之間的連接保證語(yǔ)法的正確性,同時(shí)支持自定義塊以連接到應(yīng)用程序中。

從用戶的角度看,Blockly 是一種直觀??梢暬拇a構(gòu)建方式,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),Blockly 是一種現(xiàn)成的 UI,用于創(chuàng)建一種可視化語(yǔ)言,該語(yǔ)言可以生成語(yǔ)法正確的用戶代碼。目前支持JS、Python、PHP、Lua、Dart。

它是一個(gè)純JavaScript 庫(kù),不依賴于服務(wù)端,與主流瀏覽器兼容,包括Chrome、Firefox、Safari、Opera和IE(IE11),并且支持定制和擴(kuò)展。

Blockly 具有以下特點(diǎn)和優(yōu)勢(shì):

  • 可導(dǎo)出代碼。用戶可以將基于塊的程序提取導(dǎo)出,并用于自己的文本編程中。
  • 開(kāi)源。Blockly的所有內(nèi)容都是開(kāi)放的。
  • 可擴(kuò)展。支持自定義塊或刪除不需要的塊和功能來(lái)進(jìn)行功能調(diào)整定制。
  • 功能強(qiáng)大??梢杂脕?lái)執(zhí)行計(jì)算復(fù)雜的編程任務(wù),如計(jì)算標(biāo)準(zhǔn)差。
  • 國(guó)際化。目前已經(jīng)被翻譯成40多種語(yǔ)言。
  • 其他類似的工具:Scratch Blocks、PXT、Droplet、Snap。

解決 Blockly Games 的迷宮問(wèn)題的例子:

項(xiàng)目地址:

https://github.com/google/blockly

簡(jiǎn)單使用

下載安裝方法很簡(jiǎn)單,使用npm直接安裝即可:

  1. npm install blockly 

Blockly工具箱

工具箱是用戶可以從中創(chuàng)建新塊的側(cè)邊菜單,使用XML或JSON指定工具箱的結(jié)構(gòu),并在注入頁(yè)面后被傳遞給Blockly。

XML格式:

  1. <xml id="toolbox" style="display: none"
  2.  
  3. <category name="Logic" colour="210">...</category> 
  4.  
  5. <category name="Loops" colour="120">...</category> 
  6.  
  7. <category name="Math" colour="230">...</category> 
  8.  
  9. <category name="Colour" colour="20">...</category> 
  10.  
  11. <category name="Variables" colour="330" custom="VARIABLE"></category> 
  12.  
  13. <category name="Functions" colour="290" custom="PROCEDURE"></category> 
  14.  
  15. </xml> 

JSON格式:

  1.  
  2. "contents": [ 
  3.  
  4.  
  5. "kind""category"
  6.  
  7. "name""Logic"
  8.  
  9. "colour""210" 
  10.  
  11. }, 
  12.  
  13.  
  14. "kind""category"
  15.  
  16. "name""Loops"
  17.  
  18. "colour""120" 
  19.  
  20.  
  21.  

效果如下:

創(chuàng)建固定大小的Blockly工作區(qū)

引入Blockly庫(kù)和用戶語(yǔ)言集:

  1. <script src="blockly_compressed.js"></script> 
  2.  
  3. <script src="blocks_compressed.js"></script> 
  4.  
  5. <script src="msg/js/en.js"></script> 

添加空白div元素:

  1. <div id="blocklyDiv" style="height: 480px; width: 600px;"></div> 

添加工具箱

  1. <xml id="toolbox" style="display: none"
  2.  
  3. <block type="controls_if"></block> 
  4.  
  5. <block type="controls_repeat_ext"></block> 
  6.  
  7. <block type="logic_compare"></block> 
  8.  
  9. <block type="math_number"></block> 
  10.  
  11. <block type="math_arithmetic"></block> 
  12.  
  13. <block type="text"></block> 
  14.  
  15. <block type="text_print"></block> 
  16.  
  17. </xml> 

執(zhí)行以下代碼將Blockly注入到div中

  1. <script> 
  2.  
  3. var workspace = Blockly.inject('blocklyDiv'
  4.  
  5. {toolbox: document.getElementById('toolbox')}); 
  6.  
  7. </script> 

效果如下:

代碼生成器:

確認(rèn)所需的語(yǔ)言生成器,引入不同的庫(kù)文件:

  1. <script src="javascript_compressed.js"></script> 
  2.  
  3. <script src="python_compressed.js"></script> 
  4.  
  5. <script src="php_compressed.js"></script> 
  6.  
  7. <script src="lua_compressed.js"></script> 
  8.  
  9. <script src="dart_compressed.js"></script> 

語(yǔ)言生成器庫(kù)要緊接著blockly_compressed.js引入:

  1. <script src="blockly_compressed.js"></script> 
  2.  
  3. <script src="javascript_compressed.js"></script> 

導(dǎo)出代碼:

  1. var code = Blockly.JavaScript.workspaceToCode(workspace); 

實(shí)時(shí)生成。生成代碼的效率非常高,頻繁調(diào)用不會(huì)有什么大問(wèn)題,可以通過(guò)向Blockly的change事件添加監(jiān)聽(tīng)器來(lái)實(shí)時(shí)生成和顯示代碼:

  1. function myUpdateFunction(event) { 
  2.  
  3. var code = Blockly.JavaScript.workspaceToCode(workspace); 
  4.  
  5. document.getElementById('textarea').value = code; 
  6.  
  7.  
  8. workspace.addChangeListener(myUpdateFunction); 

效果如下:

 

創(chuàng)建自定義塊

Blockly擁有大量預(yù)定義的塊,從數(shù)學(xué)函數(shù)導(dǎo)循環(huán)結(jié)構(gòu)等應(yīng)有盡有。但是有時(shí)候我們?nèi)匀恍枰远x塊以符合我們個(gè)性化的需求。在通常情況下,自定義塊最快的方法就是找到一個(gè)最符合需求并且已經(jīng)存在的塊,在已有基礎(chǔ)上對(duì)其進(jìn)行修改。

小結(jié)

以上只是對(duì) Blockly 基礎(chǔ)和核心的功能做簡(jiǎn)要介紹,更詳細(xì)的文檔請(qǐng)參考官方網(wǎng)站。

https://developers.google.com/blockly/

 

 

責(zé)任編輯:張燕妮 來(lái)源: 開(kāi)源前哨
相關(guān)推薦

2023-10-11 16:33:37

2019-01-07 14:43:40

Python搶票刷票

2023-02-01 10:40:01

2022-06-12 23:11:40

Windows 11微軟升級(jí)

2021-06-24 16:18:03

Cube.js數(shù)據(jù)分析開(kāi)源

2016-09-23 18:32:42

iTunesIOS 10蘋(píng)果

2020-07-10 12:06:28

WebpackBundleless瀏覽器

2020-12-07 10:59:01

Python數(shù)據(jù)工具

2022-01-26 07:18:57

工具GoGo 項(xiàng)目

2022-02-09 07:44:30

Go源碼工具

2020-08-25 08:03:59

測(cè)試Sharness結(jié)構(gòu)

2023-08-15 08:42:41

2019-01-16 16:00:33

2020-12-02 08:31:47

Elasticsear

2020-11-04 16:34:45

單元測(cè)試技術(shù)

2022-06-17 11:10:43

PandasPolarsPython

2018-02-05 08:58:36

Python神經(jīng)網(wǎng)絡(luò)識(shí)別圖像

2015-07-30 11:08:19

前端特效

2021-05-18 11:40:11

開(kāi)源腳本工具

2021-04-12 13:36:59

開(kāi)源技術(shù) 工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)