1. mpvue の概要
mpvue は、Vue.js
を使用して小さなプログラムを開発するフロントエンド フレームワークです。このフレームワークは Vue.js のコアに基づいています。 mpvue は、ミニ プログラム環境で実行できるように Vue.js のランタイムとコンパイラ実装
を変更し、完全な Vue.js 開発エクスペリエンスを導入します。ミニプログラム開発。 mpは ミニプログラム
の略称です。
2. mpvue によるクイック スタート ① スキャフォールディングによる mpvue テンプレートの導入
vue 3.0 は vue init コマンド
をサポートしなくなったため、別途インストールする必要があります
@vue/cli-init インストール後、次の手順に従って mpvue テンプレートを導入できます
npm install -g @vue/cli-init vue init mpvue/mpvue-quickstart my-project cd my-project npm install npm run dev
ログイン後にコピー
npm run dev コマンドがプロジェクトに生成されますルート ディレクトリ dist ディレクトリ。
vue プロジェクトを WeChat アプレット プロジェクトに変換します
② アプレットの開発環境を構築します
WeChat は専用の
を提供しますWeChat 開発者ツール
は、小規模なプログラムの開発に使用されます。WeChat 開発者ツールをダウンロードしてインストールする必要があります。また、小規模なプログラム ID (
AppID ) を申請する必要もあります。理由は、
です。 WeChat 開発者ツールを通じて小さなプログラムを作成します。プロジェクトには、WeChat パブリック プラットフォームで申請することで取得できる AppID を入力する必要があります。
③ プロジェクトのデバッグ
WeChat 開発者ツールを通じて WeChat アプレット プロジェクトを開始します。選択したプロジェクト ディレクトリ
は、生成された dist ディレクトリではなく、mpvue プロジェクトのルート ディレクトリです。
WeChat 開発者ツールは .vue ファイルの表示をサポートしていないため、 ソース コードをデバッグするには独自の開発ツールを使用する必要があります。
3. mpvue の使い方詳細
① mpvue の src ディレクトリは vue と同じです。ルート コンポーネント、
App.vue ルート コンポーネントは単なる構造です、には特定のコンテンツはありません 、ルート コンポーネントには対応するmain.js ファイルが使用されますApp.vue ルート コンポーネントをレンダリングします。つまり、App.vue を導入し、Vue コンストラクターとして Vue インスタンスを作成してから、マウント します。また、app.json ファイルもあります。 、つまり、page グローバル設定ファイル 、ページ登録 、tabBar 登録 、グローバル ウィンドウ スタイル設定 に使用されます。たとえば、次のようになります。 ##// App.vue
// main.js
import Vue from 'vue' import App from './App' Vue.config.productionTip = false App.mpType = 'app' const app = new Vue(App) app.$mount()
ログイン後にコピー
// app.json
{ "pages": [ "pages/index/main" ], "tabBar": { ...... }, "window": { "backgroundColor":"#00BFFF", "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "测试", "navigationBarTextStyle": "black" } }
ログイン後にコピー
② mpvue で定義されたページsrc ディレクトリの
pages に配置されます。ディレクトリ
では、
1 ページが 1 つのフォルダ
に対応し、各ページ フォルダには.vue ファイル ## が必要です。 # とmain.js ファイル , main .js が主に行うことは、現在のページに対応する .vue を導入し、Vue コンストラクターのパラメーターとして Vue インスタンスを作成してマウント 、およびmain.js の名前は変更できません ,main のみ可能です .// main.js
import Vue from 'vue' import App from './index' // add this to handle exception Vue.config.errorHandler = function (err) { if (console && console.error) { console.error(err) } } const app = new Vue(App) app.$mount()
ログイン後にコピー
mpvue では、ページ内の .vue ファイルの名前は任意ですが、 .js および .json ファイル名は mainに固定されています。通常、.vue ファイルもindex.vue を使用します。すべて
ページには通常、index.vue、main.js、main.json が含まれます
、
は外部フォルダーによって異なるページを区別します
、ネイティブ アプレットでは、外部フォルダーによって異なるページも区別されますが、
フォルダー内の 4 つのファイル 各ページの名前は外側のフォルダーと同じでも、異なっていてもかまいませんが、4 つのファイルの は同じである必要があります。
③
新しいページを追加するたびに、プロジェクトを再起動する必要があります
。つまり、npm run devを再実行します。
4. WeChat ミニ プログラムの基本と共通 API
①
ボタンをクリックして、ユーザーを承認してユーザー情報を取得するかどうかを確認する
WeChat ミニ プログラムは Buttonを提供します。 WeChat 開発機能は、
open-type
属性を追加することで
を表現します。
タグにボタンに機能タイプ (getUserInfo など)、つまりボタンをクリックしてユーザー情報を取得する機能を与えるには、## をリッスンする必要があります。の #getuserinfoイベント、mpvue ミニ プログラムに基づいてカプセル化されており、ユーザー情報は e.mp.detail.userInfo、 を通じて取得する必要があります。
② wx グローバル オブジェクト ブラウザ環境で実行される Web ページと同様に、ブラウザ環境はグローバル ウィンドウ オブジェクトを提供します。同様に、ミニ プログラムはミニ プログラム環境で実行されます。 .ミニ プログラム環境は、グローバル wx オブジェクト も提供します。wx は、ネットワークへのアクセス (wx.request({}))、ページ ジャンプ (wx.redirectTo({}) )、読み込みの表示 ( wx.showLoading({}))、プロンプトの表示 ( wx.showToast({}))など
③微信小程序中发起网络请求 在小程序环境中不能像浏览器环境一个直接提供ajax,而是提供了一个全局的网络请求api,即wx.request(),在小程序环境中只能使用wx.request()发起网络请求,不能使用axios 等常用的请求类库,并且wx.request()并不存在跨域问题 。使用wx.request()的时候,需要传递一个请求参数配置对象 ,request()方法返回结果并不是一个Promise对象 ,所以不能通过.then()的方式去处理请求结果,而是在请求配置对象中添加了success、fail、complete等回调函数 ,在回调函数中可以获取到请求的结果,如:
wx.request({ url: "http://www.baidu.com", // 请求url地址必填 data: { user: "even li" }, method: "get", // 请求方法 header: { "content-type": "application/json" // 默认值 }, success(res) { console.log(res.data); // 获取响应数据 }, fail(error) { console.log(error); // 请求失败 } complete(res) { // 接口调用结束,请求成功或失败都会执行 console.log(res); // 如果请求成功则res为响应结果res,如果请求失败则res为错误信息error } });
ログイン後にコピー
需要注意的是,
返回状态码为404也算请求成功 ,
一般只有网络异常的时候才算请求失败 。
④跳转页面非tabBar页面 如果想要跳转到某个非tabBar页面,那么可以使用一个全局的api,即wx.redirectTo({}) ,其作用就是关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面 。需要传递一个配置对象,主要属性为url ,即要跳转页面的路径,可带参数 ,然后就是success、fail、complete三个回调函数,请处理跳转结果 ,如:
wx.redirectTo({ url: "../question/main", // 在某个页面内../相当于pages/ success() { }, fail() { }, complete() { } });
ログイン後にコピー
⑤跳转到tabBar页面 在微信小程序中,tabBar页面是需要特殊的方式跳转的,即使用wx.switchTab({}) 的方式,其会跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 ,其用法同wx.redirectTo({});
wx.switchTab({ url: "../learn/main", // 在某个页面内../相当于pages/ success() { }, fail() { }, complete() { } });
ログイン後にコピー
⑥页面配置文件 小程序的页面配置文件分为全局配置文件 app.json与即页面配置 main.json. 全局配置文件可配置项比较多,整个配置文件内容要用花括号括起来,也就是说是一个JSON对象 ,如:
pages 属性,是一个数组 ,用于定义小程序用到的页面 ,数组中每一项对应一个页面,即路径+文件名 信息,不需要写后缀,在mpvue中所有页面固定使用main,即每个页面下都会有一个main.js,所以在配置pages时,通常为"pages/页面名/main ",位于pages数组第一项 表示小程序的初始页面,即小程序运行时显示的页面 。
window 属性,即对小程序的窗口样式 进行配置,其属性值为一个对象,主要包括backgroundColor (窗口背景颜色,即页面下拉后漏出的背景窗口颜色 )、backgroundTextStyle(设置下拉背景字体、loading图的样式,目前只支持dark和light )、navigationBarBackgroundColor (导航栏背景颜色)、navigationBarTextStyle(导航栏标题颜色,目前只支持black和white )、navigationBarTitleText(导航栏标题文字内容)、navigationStyle(值为custom自定义导航栏 )
微信小程序设置颜色的时候,只支持十六进制颜色 ,不支持RGB格式和颜色英文。
tarBar 属性,用于配置窗口底部的tabBar,其属性值为一个对象 ,主要有color(设置tab未激活状态文字的颜色)、selectedColor(设置tab激活状态的文字颜色)、borderStyle(设置tabBar上边框的颜色,目前只支持black和white)、backgroundColor(设置tab的背景颜色)、list(用于配置tab项,最多可配置5项 ),list属性值为一个数组 ,主要包括text (tab上显示的文字内容)、iconPath (tab处于未激活状态时显示的图标路径)、selectedPath (tab处于激活状态时显示的图标路径)、pagePath (tab被点击时要跳转的页面路径,其属性值为pages中配置的路径 )
页面配置配置相对于全局主配置文件来说要简单得多,在
页面配置文件中只能配置窗口的样式属性 ,即只能配置全局配置文件中的window属性中的内容,
页面配置文件中配置的内容会覆盖掉全局配置文件中window中相同的配置 ,以决定当前页面的窗口表现,
无需使用window属性,直接将window配置放到花括号中即可 。
⑦小程序页面 与Vue 生命周期
小程序给页面提供了
onLoad (页面加载)、
onShow (页面显示,
但还未渲染完成 )、onReady(页面渲染完成)、
onHide (页面隐藏)、
onUnload (页面卸载),
mpvue将小程序提供的页面生命周期和vue的生命周期结合在了一起 ,也就是说使用mpvue开发小程序,可以同时使用小程序的生命周期和vue的生命周期,其顺序为:
beforeCreate --> created --> onLoad --> onShow --> onReady --> beforeMount --> mounted 。即
Vue首先实例化然后页面开始加载、显示、渲染,页面渲染完成后Vue实例开始挂载 。
⑧导航到某个页面 所谓导航到某个页面,就是跳转到某个页面,但是其会保留当前页面 ,跳转的目的页面导航栏左侧中自带一个返回按钮 ,点击可以回到之前的页面,但是这个跳转的目的页面不能是tabbar中的页面 ,其使用的是wx.navigateTo({})
wx.navigateTo({ url: "../myLesson/main" // 导航到我的课程页面,目标页面自带返回按钮,点击可返回之前的页面 });
ログイン後にコピー
⑨动态设置页面导航栏标题 当我们点击列表中的某个具体项时,通常需要在其对应页面动态显示出当前点击项的具体导航栏标题,微信小程序提供了wx.setNavigationBarTitle({}) 用于动态设置导航栏栏标题 ,同样有success、fail、complete三个回调函数,如:
wx.setNavigationBarTitle({ title: "动态标题内容", success() { }, fail() { }, complete() { } });
ログイン後にコピー
⑩本地缓存数据 微信小程序提供了setStorage({}) 方法,可以将数据存储在本地缓存中指定的 key 中,除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用 。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。如:
wx.setStorage({ key:"key", data:"value" });
ログイン後にコピー
同样,微信小程序也提供了getStorage({})方法,用于获取对应key中存储的数据,其还有success、fail、complete三个回调函数,如:
wx.getStorage({ key: "key", success (res) { // 成功获取到对应key中的数据 }, fail() { // 未成功获取到对应key中的数据 }, complete() { // 获取对应key数据结束,不管成功还是失败都会执行 } });
ログイン後にコピー
getStorage()和setStorage()方法本身是
异步的 ,但是微信小程序提供了对应的同步方法,即
getStorageSync("key") 和
setStorageSync("key", "value") ;
⑪轮播图组件 微信小程序提供了一个
轮播图组件,其中只可放置swiper-item组件 ,swiper有一些常用的属性,如:
indicator-dots: 是否显示面板指示点;
autoplay: 是否自动切换;
interval: 设置自动切换时间间隔;
duration: 滑动动画时长;
circular: 是否循环播放;
indicator-active-color: 设置当前选中的指示点颜色;
ログイン後にコピー
当然,
组件不仅仅能实现图片的轮播,还可以实现其他轮播,比如
列表内容的轮播(导航和内容的联动) ,我们不给其添加indicator-dots、autoplay、interval、duration、circular等属性,而是
通过手进行滑动 ,swiper组件还有一个
current 属性,
属性值为滑动块的索引值 ,用于显示对应的滑动item,从而实现导航和内容的联动,即
点击导航,自动切换到对应内容 。swiper组件也提供了change事件,当我们手动滑动滑动item的时候,就会触发change事件,可以在事件对象中拿到对应滑块的索引,从而更新导航位置,实现
滑动内容,自动高亮导航位置 。
⑫可滚动区域组件 微信提供了一个
可滚动区域组件,用于设置该区域中的内容是可以滚动的,通常用于实现可滚动的导航标签栏 ,其常用属性为:
scroll-x: 是否允许横向滚动;
scroll-y: 是否允许纵向滚动;
scroll-into-view: 属性值为对应滚动item的id,表示自动滚动到对应id元素位置;
scroll-with-animation: 在设置滚动条位置时使用动画过渡;
要实现点击某个滚动item后,自动滚动到对应滚动item位置,那么需要给每个滚动item添加一个id,然后动态改变scroll-into-view的值为对应的滚动item的id即可。
推荐教程:《微信小程序 》
以上がmpvue を使用した WeChat アプレット開発の基礎知識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。