如何使用Meteor開發以太坊Dapp
常問問題
Meteor不是一個完整的堆疊框架,它是如何適應Ðapp開發的
是的,Meteor是一個完整的堆疊框架,它的主要改進是實時Web應用程式,但Meteor也是第一個框架(我知道),它完全支援了單頁app(SPA)開發並提供了所有必要的工具。
Meteor非常適合的5個理由:
-
它純粹用JS編寫,具有SPA所需的所有工具(模板引擎,模型,動態編譯,繫結等)。
-
你將獲得一個開發環境,它具有實時重新載入,CSS注入和支援許多預編譯器(LESS,Coffeescript等)即插即用。
-
你可以使用
meteor-build-client
將所有前端程式碼作為單個index.html
,使用一個js
和css
檔案載入你的資源。然後,你可以在任何地方託管它或簡單地執行index.html
本身或稍後在swarm
上分發它。 -
它包含完整的響應性,這使得構建一致的介面更容易(類似於angular.js
$scope
或binding) -
它有一個名為Minimongo的優秀模型,它為你提供了一個類似mongoDB的介面,用於一個被動的記憶體資料庫,它也可以自動持久化到
localstorage
或indexedDB
我是否需要在伺服器上託管我的Ðapp?
不,使用
,你可以在沒有伺服器的情況下執行Ðapp的所有靜態資源,但是如果你使用像
iron
或
flow-router
這樣的路由器 ,則需要使用hash(
index.html#!/mypath
)路由而不是乾淨的HTML5 pushstate路由。
建立你的Ðapp
如果還沒有安裝Meteor:
$ curl | SH
然後建立一個app:
$ meteor create myDapp$ cd myDapp
接下來新增web3包:
$ meteor add ethereum:web3
我還建議新增以下包:
-
:LESS/CSS框架,它為你的dapp提供了一個很好的Mist-consistent外觀。
-
:這個包為
EthTools
物件提供了一組格式轉換函式和ether的模板助手。 -
:一組專門為以太坊製作的介面元素。
-
: 為你提供所有當前可用的以太坊帳戶的響應式
EthAccounts
集合,其中餘額將自動更新。 -
:為你提供最新50個塊的響應式
EthBlocks
集合。要獲得最新的塊,請使用EthBlocks.latest
(它還將具有最新的預設gasPrice
) -
:為你提供
TemplateVar
物件,允許你設定特定於模板例項的反應變數。 -
:允許你在本地儲存中自動保留
minimongo
集合。
啟動你的Ðapp
遊覽Meteors資料夾結構
Meteor不會強制你擁有特定的資料夾結構,儘管某些資料夾具有特定含義,並且在繫結/執行你的應用程式時將被區別對待。
具有特定處理的資料夾
-
client:名為
client
的資料夾中的檔案只會由應用程式的客戶端部分載入,因為我們正在構建一個Ðapp,這就是我們大多數檔案所在的位置。 -
lib:名為
lib
資料夾中的檔案將在同一資料夾中的其他檔案之前載入。這是你的init檔案,庫或以太坊特定檔案的理想位置。 -
public:一個名為
public
的資料夾包含meteor資源將在你的網路伺服器的根目錄上提供(或以後繫結的Ðapp)。 -
還有一些更具體的資料夾,如
server
,tests
,packages
等。如果你想了解它們,請檢視
因此,為了構建Ðapp,我們理想狀況下是在myDapp資料夾中建立以下資料夾結構:
- myDapp - client - lib - myDapp.html - myDapp.js - myDapp.css - public
注意社群還提供了像Nick Dodson這樣的Meteor Ðapp Boilerplates:
連線你的Ðapp
要連線我們的dapp,我們需要在另一個終端中使用正確的CORS頭開始
geth
:
$ geth --rpc --rpccorsdomain "
我們還需要設定provider。理想情況下,我們在lib資料夾中建立一個名為
init.js
的檔案,並新增以下行:
if(typeof web3 === 'undefined') web3 = new Web3(new Web3.providers.HttpProvider('));
執行你的Ðapp
現在我們可以透過簡單執行來執行我們的Ðapp:
$ meteor
如果我們轉到
,我們應該看到一個網站出現,如果我們開啟瀏覽器控制檯,我們可以使用web3物件來查詢geth節點:
> web3.eth.accounts['0xfff2b43a7433ddf50bb82227ed519cd6b142d382']
新增Ðapp樣式
如果你希望你的Ðapp很好地適應
Mist
並且遵循官方的外觀,請使用
。
請注意,它們正在大量開發中,類名稱和元素可能會發生變化。
要新增它,請將以下包新增到Ðapp:
$ meteor add less$ meteor add ethereum:dapp-styles
現在將
myDapp.css
重新命名為
myDapp.less
並在其中新增以下行:
// libs@import '{ethereum:dapp-styles}/dapp-styles.less';
現在,你可以使用所有
dapp-styles
類,也可以覆蓋框架的所有變數。你可以在回撥中找到它們。透過將它們複製到
myDapp.less
檔案並設定不同的值來覆蓋它們。
使用以太坊包
為了讓你的Ðapp開發人員更輕鬆,我們提供了一些幫助你更快地構建Ðapp的軟體包。
如果你新增上面推薦的軟體包,你應該使用以太坊:
ethereum:tools
,
ethereum:accounts
和
ethereum:blocks
。
這3個包為你提供了
EthTools
,
EthAccounts
和
Ethblocks
物件,它們為你提供格式化程式功能,包含來自
web3.eth.accounts
(具有自動更新餘額)的帳戶的集合以及最近50個塊的集合。
大多數這些功能都是響應式的,因此它們應該使構建介面變得輕而易舉。
用法示例
如果你看看
myDapp.html
你會發現
hello
模板。只需在
<template name="hello">..</template>
標籤之間新增一個名為
{{currentBlock}}
的
helper
。
現在開啟
myDapp.js
並在
counter() {..}
之後新增
currentBlock
helper:
Template.elements.helpers({ counter() { ... }, currentBlock() { return EthBlocks.latest.number; } });
然後透過新增
EthBlocks.init()
;初始化
EthBlocks EthBlocks.init()
;在
this.counter = new ReactiveVar(0)
;
如果你現在在瀏覽器中檢查Ðapp,你應該會看到最新的塊號,一旦你開採,它將會增加。
有關更多示例,請檢視軟體包的readme檔案和 以獲取更多資訊。
Ðapp程式碼結構
本教程不會用Meteor構建應用程式。有關這方面的資訊,請參閱 , 或使用Meteor或Discover Meteor構建單頁Web應用程式等書籍。
TODO:
-
把以太坊相關的東西放到
client/lib/ethereum/somefile.js
。 -
使用
myCollection.observe({added: func, changed: func, removed: func})
與ethereum進行通訊,儘可能地保持ethereum邏輯不在你的應用中。這樣你只需要編寫和讀取你的響應集合,觀察函式將處理其餘的(例如sendTransactions) -
過濾器等會將日誌等新增到你的集合。因此,你可以將所有回撥資訊從應用邏輯中刪除。
有關示例,請參閱 。
繫結你的Ðapp
要將Ðapp繫結到本地獨立檔案,請使用
meteor-build-client
:
$ npm install -g meteor-build-client$ cd myDapp$ meteor-build-client ../build --path ""
這會將你的Ðapps靜態檔案放入
myDapp
資料夾上方的build資料夾中。
最後一個選項
--path
將使所有檔案相對連結,允許你透過單擊
build/index.html
啟動應用程式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2284095/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 以太坊DApp開發指南APP
- 理解以太坊DApp及開發工具APP
- 以太坊:Dapp及相關開發工具介紹APP
- DAPP系統開發原始碼規則解析 | 如何在以太坊搭建DAPP開發去中心化程式?APP原始碼中心化
- java使用spring boot和web3j開發以太坊區塊鏈dappJavaSpring BootWeb區塊鏈APP
- 以太坊 DApp 開發入門,如何搭建一個區塊鏈投票系統。APP區塊鏈
- 基於以太坊的58同城 | DApp開發與應用案例APP
- 以太坊DApp開發入門教程——區塊鏈投票系統APP區塊鏈
- 以太坊開發計劃
- EthBox以太坊開發套件,一鍵安裝部署以太坊開發環境套件開發環境
- 以太坊DApp如何用IPFS儲存並呼叫資料APP
- 以太坊智慧合約開發環境搭建以及第一個Dapp開發環境APP
- 以太坊開發框架Truffle基礎使用介紹框架
- 以太坊學習筆記————2、如何使用文件以及以太坊路線圖筆記
- python利用web3.py開發以太坊應用dapp的實戰教程PythonWebAPP
- 實戰:以太坊 DApp 開發與構建 - 李明 | Jeth 第二期APP
- 如何招聘面試區塊鏈以太坊開發人才面試區塊鏈
- 3.5 以太坊開發環境搭建開發環境
- 以太坊智慧合約開發第二篇:理解以太坊相關概念
- 開發者的以太坊入門指南 | Jeth 以太坊系列線下活動
- 1小時搞明白以太坊 DAPP 開發 - 熊麗兵 | Jeth 第三期APP
- 1小時搞明白以太坊 DAPP 開發 – 熊麗兵 | Jeth 第三期APP
- C#使用Nethereum .NET庫做以太坊開發的demo示例C#
- [以太坊] OpenZeppelin 使用筆記筆記
- 如何搭建以太坊私有鏈
- windows 以太坊開發框架Truffle環境搭建Windows框架
- 基於以太坊的Token開發步驟
- 開發以太坊遇到的幾個問題
- 以太坊學習筆記————4、以太坊發展歷史回顧筆記
- eth以太坊智慧合約交易平臺開發
- Conflux與以太坊合約開發工具區別UX
- ubuntu環境下搭建以太坊開發環境Ubuntu開發環境
- 以太坊Solidity程式語言開發框架————5、移植Solid框架
- php工程師進行以太坊開發的教程PHP工程師
- 基於以太坊上實現DApp的登入註冊APP
- 以太坊是什麼?以太坊交易可靠嗎?
- 以太坊連載(一):以太坊是什麼?
- 第二課 如何在WINDOWS環境下搭建以太坊開發環境Windows開發環境