Skip to content

Commit

Permalink
More Improvements to the Introduction Page
Browse files Browse the repository at this point in the history
  • Loading branch information
danforbes committed Jun 4, 2024
1 parent a7d67c6 commit 6077e2e
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 15 deletions.
50 changes: 36 additions & 14 deletions docs/docs/guides/getting_started/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,19 @@ Web3.js is a robust and flexible collection of **TypeScript and JavaScript** lib

This documentation is the entrypoint to Web3.js for developers. It covers [basic](/guides/getting_started/quickstart) and [advanced](/guides/smart_contracts/) usage with examples, and includes comprehensive [API documentation](/api) as well as guides for common tasks, like [upgrading](/guides/web3_upgrade_guide/x/) from older versions.

## Features of Web3.js v4
## Using These Docs

- Flexible
- ECMAScript (ESM) and CommonJS (CJS) builds
- [Plugins](/guides/web3_plugin_guide/) for extending functionality
- Efficient
- Modular, [package](/#packages)-based design reduces unneeded dependencies
- [Tree shakable with ESM](/guides/advanced/tree_shaking)
- Use of native [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) (instead of large [BigNumber](https://mikemcl.github.io/bignumber.js/) libraries)
- Efficient ABI [encoding](/api/web3-eth-abi/function/encodeFunctionCall) & [decoding](/api/web3-eth-abi/function/decodeParameter)
- Developer-Friendly
- [Dynamic contract types](/guides/smart_contracts/infer_contract_types/) & full API in TypeScript
- Custom output [formatters](https://docs.web3js.org/api/web3-utils/function/format)
- In compliance with the [Ethereum JSON-RPC Specification](https://ethereum.github.io/execution-apis/api-documentation/)
There is a lot to learn about Web3.js! Here are some tips for developers of different skill levels. Remember, you can always [reach out directly](/guides/feedback/#urgent-questions-or-concerns) with Discord or Twitter if you're feeling stuck.

### For Beginner Web3.js Developers

New Web3.js developers should proceed to the [Quickstart](/guides/getting_started/quickstart) section to learn how to get started with Web3.js. Once you understand the basics, you may want to consider learning more about [providers](/guides/web3_providers_guide/), [wallets and accounts](/guides/wallet/), [smart contracts](/guides/smart_contracts/), and how to [use Web3.js with the Hardhat development environment](/guides/hardhat_tutorial/).

## Packages
### For Intermediate & Advanced Web3.js Developers

If you're already familiar with Ethereum and Web3.js development, you may want to review the Web3.js [package structure](#packages--plugins) and proceed directly to the [package-level documentation](/libdocs/ABI) and [API documentation](/api). Application developers may wish to review the [Web3.js configuration guide](/guides/web3_config/) or learn how to use Web3.js with tools like the [MetaMask](/guides/wallet/metamask) wallet or the [WalletConnect](/guides/wallet/web3_modal_guide/) wallet selection modal. Don't forget to review the [list of available plugins](https://web3js.org/plugins) or even [learn how to build your own Web3.js plugin](/guides/web3_plugin_guide/plugin_authors)!

## Packages & Plugins

Web3.js is a modular collection of packages, each of which serves a specific needs. This means developers don't need to install the entire Web3 library for most use cases. Instead, necessary packages are selectively installed for a more efficient development experience. Here is an overview of a selection of available packages:

Expand Down Expand Up @@ -61,6 +58,31 @@ Web3.js is a modular collection of packages, each of which serves a specific nee

- [**Web3 RPC Methods:**](/api/web3/namespace/rpcMethods) functions for making RPC requests to Ethereum using a given provider

### Plugins

Web3.js supports [plugins](/guides/web3_plugin_guide/), which are another way to encapsulate capabilities that support a specific need. There are plugins that exist to support native features, like those described by [EIPs](https://eips.ethereum.org/) as well as plugins that are designed to support specific smart contracts, middleware, or even other Ethereum-compatible networks. Visit the [Web3.js plugins homepage](https://web3js.org/plugins) to view a list of the most important Web3.js plugins, which includes:

- [EIP-4337 (Account Abstraction) Plugin](https://www.npmjs.com/package/@chainsafe/web3-plugin-eip4337)

- [EIP-4844 (Blob Transactions) Plugin](https://www.npmjs.com/package/web3-plugin-blob-tx)

- [zkSync Plugin](https://www.npmjs.com/package/web3-plugin-zksync)

## Features of Web3.js v4

- Flexible
- ECMAScript (ESM) and CommonJS (CJS) builds
- [Plugins](/guides/web3_plugin_guide/) for extending functionality
- Efficient
- Modular, [package](/#packages)-based design reduces unneeded dependencies
- [Tree shakable with ESM](/guides/advanced/tree_shaking)
- Use of native [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt) (instead of large [BigNumber](https://mikemcl.github.io/bignumber.js/) libraries)
- Efficient ABI [encoding](/api/web3-eth-abi/function/encodeFunctionCall) & [decoding](/api/web3-eth-abi/function/decodeParameter)
- Developer-Friendly
- [Dynamic contract types](/guides/smart_contracts/infer_contract_types/) & full API in TypeScript
- Custom output [formatters](https://docs.web3js.org/api/web3-utils/function/format)
- In compliance with the [Ethereum JSON-RPC Specification](https://ethereum.github.io/execution-apis/api-documentation/)

## Advantages Over Other Libraries

- **Extensive Documentation and Community**: Web3.js is one of the most established Ethereum libraries, which means it benefits from extensive documentation and a large, active community. Web3.js is widely adopted and has been thoroughly tested in various production environments, and is compatible with a broad range of other tools and services in the Ethereum ecosystem.
Expand Down
2 changes: 1 addition & 1 deletion docs/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ const config = {
{
to: '/libdocs/ABI',
activeBasePath: '/libdocs/',
label: 'Documentation',
label: 'Packages',
position: 'left',
},
{
Expand Down

0 comments on commit 6077e2e

Please sign in to comment.