1.不需要下载 APP,可以在任何时间、任何地点使用。
不需要像 APP一样,下载安装后,需要在手机上不断地使用和卸载。
在手机上使用的时候,可以不受时间、地点的限制。
而且微信的服务器也会主动将你安装了微信小程序的手机端推送到微信小程序后台。
这样,你就可以在自己不方便使用 APP的时候,不需要通过 APP注册登录来使用了。
这一点是目前所有智能设备都无法做到的。
2.小程序无需下载安装,打开即可用:
1.功能
小程序功能和 APP大同小异,在微信中搜索“小程序”就可以看到。
2.使用方式
微信中有很多功能,我们可以通过点击一个功能进入到相关的小程序内,我们可以使用小程序来实现这些功能。比如:我们可以通过在手机上打开微信后,点击“搜一搜”,然后输入“百度搜索”进行相关的搜索;或者在微信内通过搜索“小程序”,然后添加到“发现”中,在手机上就可以直接使用微信的相关功能了。
3.无需安装,打开即用:
小程序,没有安装的概念。你只需要在微信的搜索框中搜索“小程序”,然后直接添加到你已经在微信中安装了小程序的手机端上。这时候,手机端就会自动运行相应的小程序。
例如:我们可以直接通过微信搜一搜来搜索“旅游攻略”这一关键词。
同时,在“发现”当中,点击“小程序”进入之后,同样可以用来打开相关的小软件。
4.小程序是一种轻应用,使用门槛低。
使用起来非常方便,不用注册登录,不用下载安装,不占内存。
3.使用微信公众平台功能:用户可以通过微信公众平台发布消息、查询信息、管理文章、分享链接等。
小程序的优势在于可以帮助企业降低成本,提高效率。但是很多企业并不了解微信,也不会去做小程序开发,所以需要借助一些第三方的开发工具进行简单的操作,就能实现小程序的功能。
下面我们来介绍一下小程序是如何使用的。
代码语言:javascript复制#![cfg_attr(not(feature = "std"), no_std)]
pub use pallet::*;
#[frame_support::pallet]
pub mod pallet {
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;
use frame_support::{
sp_runtime::traits::Hash,
traits::{ Randomness, Currency, tokens::ExistenceRequirement },
transactional
};
use sp_io::hashing::blake2_128;
#[cfg(feature = "std")]
use frame_support::serde::{Deserialize, Serialize};
// ACTION #1: Write a Struct to hold Kitty information.
// ACTION #2: Enum declaration for Gender.
// ACTION #3: Implementation to handle Gender type in Kitty struct.
#[pallet::pallet]
#[pallet::generate_store(pub(super) trait Store)]
pub struct Pallet<T>(_);
/// Configure the pallet by specifying the parameters and types it depends on.
#[pallet::config]
pub trait Config: frame_system::Config {
/// Because this pallet emits events, it depends on the runtime's definition of an event.
type Event: From<Event<Self>> IsType<<Self as frame_system::Config>::Event>;
/// The Currency handler for the Kitties pallet.
type Currency: Currency<Self::AccountId>;
// ACTION #5: Specify the type for Randomness we want to specify for runtime.
// ACTION #9: Add MaxKittyOwned constant
}
// Errors.
#[pallet::error]
pub enum Error<T> {
// TODO Part III
}
// Events.
#[pallet::event]
#[pallet::generate_deposit(pub(super) fn deposit_event)]
pub enum Event<T: Config> {
// TODO Part III
}
#[pallet::storage]
#[pallet::getter(fn count_for_kitties)]
pub(super) type CountForKitties<T: Config> = StorageValue<_, u64, ValueQuery>;
// ACTION #7: Remaining storage items.
// TODO Part IV: Our pallet's genesis configuration.
#[pallet::call]
impl<T: Config> Pallet<T> {
// TODO Part III: create_kitty
// TODO Part IV: set_price
// TODO Part IV: transfer
// TODO Part IV: buy_kitty
// TODO Part IV: breed_kitty
}
//** Our helper functions.**//
impl<T: Config> Pallet<T> {
// ACTION #4: helper function for Kitty struct
// TODO Part III: helper functions for dispatchable functions
// ACTION #6: function to randomly generate DNA
// TODO Part III: mint
// TODO Part IV: transfer_kitty_to
}
}