アプレット開発
9351 ワード
開発前準備
環境:
Node.js LTSバージョン
WeChat Web開発ツール最新版
git最新版
文書:
本プロジェクトの技術スタックベース
ES 2016
Vue JS
mpvue
WeChatアプレット
クイックスタート
グローバル設定
まず、プロジェクトのプロファイル
ページの設定
ページ構造
本プロジェクトは全部で6ページあります.それぞれ:
任意のページが追加されました. .は次いで を追加する.
Tips:新規ページフォルダに含める必要があります.は、リストページから詳細ページにジャンプしたいです. 要素バインディング スタイル
様式編纂はwx.navigateToを採用している.
グローバルスタイル
グローバルスタイルファイルは
ページはコンポーネントで構成されることが多いので、ページのスタイルは各コンポーネントに分散されます.
Tips:高復用の公共部品に対して慎重に使用する
コンポーネント
前に述べたように、ページの多くはコンポーネントで構成され、プロジェクトのすべてのコンポーネントが
vueコンポーネント
Tips:
アプレットコンポーネント
サンプルコード:
WeChatの制限のために、プログラム開始要求はScess方法によって行われなければならない.ここでPromiseのパッケージ化が行われた.1.新規
環境:
Node.js LTSバージョン
WeChat Web開発ツール最新版
git最新版
文書:
本プロジェクトの技術スタックベース
ES 2016
Vue JS
mpvue
WeChatアプレット
クイックスタート
1.
git clone https://gitee.com/Fntys/met_wx.git
2.
cd met_wx
3.
npm install
4.
npm run dev
5. Web ,
ディレクトリ構造├── build //
├── config //
├── dist //
├── node_modules //
├── src //
│ ├── utils //
│ ├── pages //
│ ├── components //
│ ├── assets //
│ ├── components //
│ ├── styles //
│ ├── main.js //
│ ├── App.vue //
├── static //
├── .babelrc // babel-loader
├── .eslintrc.js // eslint
├── .postcssrc.js //
├── .gitignore // git
├── index.html // html
└── package.json // package.json
ページのルートグローバル設定
まず、プロジェクトのプロファイル
/src/main.js
の初期内容を見てみます.import Vue from 'vue'
import App from './App'
import './styles/index.scss'
import {post} from './utils/request.js'
Vue.prototype.$post = post
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue(App)
app.$mount()
export default {
// app.json
config: {
// ^ , , , webpack entry
pages: ['pages/about/main', '^pages/index/main', 'pages/product/main', 'pages/news/main','pages/shownews/main','pages/showproduct/main'],
window: {
backgroundTextStyle: 'light',
navigationBarBackgroundColor: '#fff',
navigationBarTitleText: ' ',
navigationBarTextStyle: 'black'
},
tabBar: {
list: [{
pagePath: 'pages/index/main',
text: " ",
iconPath: 'assets/home.png',
selectedIconPath: 'assets/home-active.png'
}, {
pagePath: 'pages/product/main',
text: " ",
iconPath: 'assets/product.png',
selectedIconPath: 'assets/product-active.png'
}, {
pagePath: 'pages/news/main',
text: " ",
iconPath: 'assets/news.png',
selectedIconPath: 'assets/news-active.png'
}, {
pagePath: 'pages/about/main',
text: " ",
iconPath: 'assets/about.png',
selectedIconPath: 'assets/about-active.png'
}]
},
networkTimeout: {
request: 10000,
downloadFile: 10000
},
}
}
ここのconfigフィールドの下の内容は、小さなプログラム全体の大域的な構成であり、Pagesはページのルートであり、windowはページの一部の構成(ほとんどが上部のバーの構成)であり、これらの構成は最終的には元のウィジェットのap.jsonにパッケージされます.これらの構成についてはよく知らないので、WeChatメソッドのウィジェットドキュメントを参照してください.ページの設定
ページ構造
本プロジェクトは全部で6ページあります.それぞれ:
├── pages //
│ ├── about //
│ ├── index //
│ ├── news //
│ ├── product //
│ ├── shownews //
│ ├── showproduct //
ページを追加任意の
/pages/
の下のフォルダをコピーし、名前を変更し、/src/main.js
のconfig.pages
フィールドに追加したページパスを追加します.pages/abc
/src/main.js
の下のconfig.pages
フィールドに'pages/abc/main'
Tips:新規ページフォルダに含める必要があります.
main.js
、新規ページが追加されたら運転を再開します.npm run dev
ページジャンプ
に、詳細ページurl
に詳細ページmain.js
を記入するだけでいいです.tap
イベントは、navigator方法を実行する.様式編纂はwx.navigateToを採用している.
グローバルスタイル
グローバルスタイルファイルは
/src/styles/
に保存され、/src/main.js
においてimport './styles/index.scss'
によってグローバルに導入される.├── styles //
│ ├── common.scss //
│ ├── index.scss //
│ ├── mixin.scss //
│ ├── varable.scss //
ページスタイルページはコンポーネントで構成されることが多いので、ページのスタイルは各コンポーネントに分散されます.
src/components/IndexAbout.vue
の中の
index
ページのaboutブロックのスタイルに影響を与えました.lang="scss"
はコンパイラがどのような文法でcss言語を説明するかを規定しています.ここでは私達が使うscssです.scoped
は、そのスタイルが現在のモジュールに作用することを表し、スタイルの私有化の目的がよく実現された、非常に良い機構である.Tips:高復用の公共部品に対して慎重に使用する
scoped
属性コンポーネント
前に述べたように、ページの多くはコンポーネントで構成され、プロジェクトのすべてのコンポーネントが
src/components/
の下に保存されています.├── components //
│ ├── index //
│ │ ├──IndexAbout.vue //
│ │ ├──IndexNews.vue //
│ │ ├──IndexProduct.vue //
│ │ ├──IndexService.vue //
│ ├── inside //
│ │ ├──News.vue //
│ │ ├──Product.vue //
│ │ ├──ShowNews.vue //
│ │ ├──ShowProduct.vue //
│ ├── common //
│ │ ├──Banner.vue //
│ │ ├──Sidebar.vue //
│ │ ├──SubcolumnNav.vue //
コンポーネントの新規作成と導入vueコンポーネント
mpvue
は単一ファイルコンポーネント(.vue
コンポーネント)の形でしかサポートできないので、単一ファイルのコンポーネントだけを新規作成することができます.1.新規ファイルの名前はPascalCaseを採用しています.例えば、Hello World.vue、2.ページにあなたのコンポーネントを紹介します.import HelloWorld from '@/components/xxx/HelloWorld'` //
components: {
HelloWorld //
}
3.文字列テンプレートに
を使用するTips:
@
はwebpack
のalias
、指向性src
は、後続の参照の場所に経路の複雑さを減らすことを目的とする.アプレットコンポーネント
mpvue
は、picker,map
イベントなどのウィジェットのオリジナルコンポーネントをサポートすることができ、注意すべきことは、元のコンポーネント上のイベントバインディングであり、vue
のイベントバインディング文法でバインディングする必要があります.サンプルコード:
: {{date}}
ネットワーク要求WeChatの制限のために、プログラム開始要求はScess方法によって行われなければならない.ここでPromiseのパッケージ化が行われた.1.新規
bindchange="eventName"
let serverPath = 'http://www.abc.com/api/'
export function post(url,body) {
return new Promise((resolve,reject) => {
wx.request({
url: serverPath + url, // url
data: body,
method:'POST',
header: {
'content-type': 'application/json'
},
success(res) {
resolve(res.data) //
},
fail(ret) {
reject(ret) //
}
})
})
}
2.@change="eventName"
においてグローバルに導入され、request.js
のプロトタイプに接続される.import {post} from './utils/request.js'
Vue.prototype.$post = post
3.他のところではthis.$post`を通じて呼び出します.例えば:src/main.js