如何使用Meteor开发以太坊Dapp

栏目: Node.js · 发布时间: 6年前

内容简介:本教程将向你展示如何设置Meteor应用程序以用作Ðapp,并可能回答几个关于为什么应该使用Meteor的问题。是的,Meteor是一个完整的堆栈框架,它的主要改进是实时Web应用程序,但Meteor也是第一个框架(我知道),它完全支持了单页app(SPA)开发并提供了所有必要的工具。Meteor非常适合的5个理由:

本教程将向你展示如何设置Meteor应用程序以用作Ðapp,并可能回答几个关于为什么应该使用Meteor的问题。

常问问题

Meteor不是一个完整的堆栈框架,它是如何适应Ðapp开发的

是的,Meteor是一个完整的堆栈框架,它的主要改进是实时Web应用程序,但Meteor也是第一个框架(我知道),它完全支持了单页app(SPA)开发并提供了所有必要的工具。

Meteor非常适合的5个理由:

  • 它纯粹用JS编写,具有SPA所需的所有工具(模板引擎,模型,动态编译,绑定等)。
  • 你将获得一个开发环境,它具有实时重新加载,CSS注入和支持许多预编译器(LESS,Coffeescript等)即插即用。
  • 你可以使用 meteor-build-client 将所有前端代码作为单个 index.html ,使用一个 jscss 文件加载你的资源。然后,你可以在任何地方托管它或简单地运行 index.html 本身或稍后在 swarm 上分发它。
  • 它包含完整的响应性,这使得构建一致的界面更容易(类似于angular.js $scope 或binding)
  • 它有一个名为Minimongo的优秀模型,它为你提供了一个类似 mongoDB 的接口,用于一个被动的内存数据库,它也可以自动持久化到 localstorageindexedDB

我是否需要在服务器上托管我的Ðapp?

不,使用 meteor-build-client ,你可以在没有服务器的情况下运行Ðapp的所有静态资源,但是如果你使用像 ironflow-router 这样的路由器 ,则需要使用hash( index.html#!/mypath )路由而不是干净的HTML5 pushstate路由。

创建你的Ðapp

如果还没有安装Meteor:

$ curl https://install.meteor.com/ |  SH

然后创建一个app:

$ meteor create myDapp
$ cd myDapp

接下来添加web3包:

$ meteor add ethereum:web3

我还建议添加以下包:

  • ethereum:dapp-styles :LESS/CSS框架,它为你的dapp提供了一个很好的Mist-consistent外观。
  • ethereum:tools :这个包为 EthTools 对象提供了一组格式转换函数和ether的模板助手。
  • ethereum:elements :一组专门为以太坊制作的界面元素。
  • ethereum:accounts : 为你提供所有当前可用的以太坊帐户的响应式 EthAccounts 集合,其中余额将自动更新。
  • ethereum:blocks :为你提供最新50个块的响应式 EthBlocks 集合。要获得最新的块,请使用 EthBlocks.latest (它还将具有最新的默认 gasPrice
  • frozeman:template-var :为你提供 TemplateVar 对象,允许你设置特定于模板实例的反应变量。
  • frozeman:persistent-minimongo2 :允许你在本地存储中自动保留 minimongo 集合。

启动你的Ðapp

游览Meteors文件夹结构

Meteor不会强制你拥有特定的文件夹结构,尽管某些文件夹具有特定含义,并且在绑定/运行你的应用程序时将被区别对待。

具有特定处理的文件夹

  • client:名为 client 的文件夹中的文件只会由应用程序的客户端部分加载,因为我们正在构建一个Ðapp,这就是我们大多数文件所在的位置。
  • lib:名为 lib 文件夹中的文件将在同一文件夹中的其他文件之前加载。这是你的init文件,库或以太坊特定文件的理想位置。
  • public:一个名为 public 的文件夹包含meteor资源将在你的网络服务器的根目录上提供(或以后绑定的Ðapp)。
  • 还有一些更具体的文件夹,如 servertestspackages 等。如果你想了解它们,请查看 Meteor

因此,为了构建Ðapp,我们理想状况下是在myDapp文件夹中创建以下文件夹结构:

- myDapp
   - client
      - lib
      - myDapp.html
      - myDapp.js
      - myDapp.css
   - public
``` 

注意社区还提供了像Nick Dodson这样的Meteor Ðapp Boilerplates:[https://github.com/SilentCicero/meteor-dapp-boilerplate](https://github.com/SilentCicero/meteor-dapp-boilerplate)

### 连接你的Ðapp

要连接我们的dapp,我们需要在另一个终端中使用正确的CORS头开始`geth`:

$ geth –rpc –rpccorsdomain “http://localhost:3000”

我们还需要设置provider。理想情况下,我们在lib文件夹中创建一个名为`init.js`的文件,并添加以下行:

if(typeof web3 === ‘undefined’) web3 = new Web3(new Web3.providers.HttpProvider(‘http://localhost:8545’));

### 运行你的Ðapp

现在我们可以通过简单运行来运行我们的Ðapp:

$ meteor

如果我们转到`http://localhost:3000`,我们应该看到一个网站出现,如果我们打开浏览器控制台,我们可以使用web3对象来查询geth节点:

web3.eth.accounts [‘0xfff2b43a7433ddf50bb82227ed519cd6b142d382’]

### 添加Ðapp样式

如果你希望你的Ðapp很好地适应`Mist`并且遵循官方的外观,请使用[dapp-styles css css/less框架](https://atmospherejs.com/ethereum/dapp-styles)。

请注意,它们正在大量开发中,类名称和元素可能会发生变化。

要添加它,请将以下包添加到Ð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文件和[演示](http://ethereum-elements.meteor.com/) [(源代码)](https://github.com/frozeman/meteor-ethereum-elements-demo)以获取更多信息。

### Ðapp代码结构

本教程不会用Meteor构建应用程序。有关这方面的信息,请参阅[Meteor的教程](http://www.hubwiz.com/course/55b87a7b3ad79a1b05dcc339?affid=1201blog),[优秀资源列表](https://www.meteor.com/tools/resources) 或使用Meteor或Discover Meteor构建单页Web应用程序等书籍。

TODO:

- 把以太坊相关的东西放到`client/lib/ethereum/somefile.js`。
- 使用`myCollection.observe({added: func, changed: func, removed: func})`与ethereum进行通信,尽可能地保持ethereum逻辑不在你的应用中。这样你只需要编写和读取你的响应集合,观察函数将处理其余的(例如sendTransactions)
- 过滤器等会将日志等添加到你的集合。因此,你可以将所有回调信息从应用逻辑中删除。

有关示例,请参阅[以太坊钱包](https://github.com/ethereum/meteor-dapp-wallet)。

### 绑定你的Ð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 启动应用程序。

请注意,在 file:// 协议上运行应用程序时,由于Web安全性,你将无法使用客户端路由。稍后你将能够使用客户端路由,因为dapps是通过 eth:// 协议提供的。

将来你可以简单地在swarm上传你的Ðapp。

提交你的Ðapp

要获得Ðapp的早期流量,你可以将Ðapp提交给 Dapp Insight 。 这是一个最受欢迎的Dapp分析工具,它列出了世界上所有正在运行的Dapps。

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • java以太坊开发教程,主要是针对 java 和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对 python 工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用 php 进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解 ,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是 go 语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是原文 如何使用Meteor开发以太坊Dapp


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Linear Algebra

Numerical Linear Algebra

Lloyd N. Trefethen、David Bau III / SIAM: Society for Industrial and Applied Mathematics / 1997-06-01 / USD 61.00

Numerical Linear Algebra is a concise, insightful, and elegant introduction to the field of numerical linear algebra.一起来看看 《Numerical Linear Algebra》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具