内容简介:本教程将向你展示如何设置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
,使用一个js
和css
文件加载你的资源。然后,你可以在任何地方托管它或简单地运行index.html
本身或稍后在swarm
上分发它。 -
它包含完整的响应性,这使得构建一致的界面更容易(类似于angular.js
$scope
或binding) -
它有一个名为Minimongo的优秀模型,它为你提供了一个类似 mongoDB 的接口,用于一个被动的内存数据库,它也可以自动持久化到
localstorage
或indexedDB
我是否需要在服务器上托管我的Ðapp?
不,使用 meteor-build-client
,你可以在没有服务器的情况下运行Ðapp的所有静态资源,但是如果你使用像 iron
或 flow-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)。 -
还有一些更具体的文件夹,如
server
,tests
,packages
等。如果你想了解它们,请查看 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 实战·使用taro+云开发快速开发小程序
- iOS开发之使用Git的基本使用(一)
- 使用IntelliJ IDEA开发SpringMVC网站(一)开发环境
- 使用 deprecated 声明防止开发人员使用危险的系统函数
- 使用Go开发前端应用
- 使用容器Docker进行开发
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
RGB转16进制工具
RGB HEX 互转工具
XML、JSON 在线转换
在线XML、JSON转换工具