半日は素早くvueで小さなゲームを作ります——“馬雲のお金を使い果たします”
8662 ワード
半日は素早くvueで小さなゲームを作ります——“馬雲のお金を使い果たします”
本文の文字数
本文は合計1791字で、15分かかる予定です.
まず半製品を見る
プレビュー図
オンラインアドレス:点我
スキャンコードの表示:
githubアドレス、小さい仲間のドアがstar~~:私を注文することができることを望みます
本文は人々に適している.
少し先端の基礎があって、vueに対して少し理解して、基本的な文法を知っています.
本文には高級なテクニックはありませんが、結局私もおかず鶏です.
以下は主に論理がどのように実現されたのか、つまりjsがどのように書いたのかを議論し、cssは本人GitHubの中に直接コピーすることを提案する.本人のcssレベルも一言では言い尽くせない.
テクノロジースタック
vue + vue-router + vant
vuexは使用されず、コンポーネント間でeventBusを使用して通信されています(実は3行のコードで、すべては簡単です).
ビルドプロセス vue-cli初期化プロジェクトこれは詳しく説明しません.まずグローバルvue-cli足場の設置を保証し、もしなければ: を実行する.コードディレクトリおよび基本構造ディレクトリ:ディレクトリ構造は上記のように複雑ではありません.私のvantコンポーネントリファレンスはすべてsrc/vantImportに配置されていることに注意してください.jsにはmain.jsではこのファイルを参照しています.以下で使用するvantコンポーネントはすべてここで参照されており、後述しない.eventBus.jsコードは以下の通りである: ログインインタフェースまずしなければならないのはログインインタフェースで、大体2つのボタン--「単機開始」と「ネットワーク開始」で、その中の「ネットワーク開始」は穴を残して、暇があれば後端を書いてから穴を埋めます.(ps:nest.jsは爽やかですね、typescript万歳).まずsrc/views/Main/indexを新規作成します.vue、そしてsrc/router/index.jsにルーティングを設定します. 単機のゲームインタフェースがうるさいので、やっと具体的なゲームインタフェースに来ました.まず、ゲームインタフェースをコンポーネント化した考え方で分割し、頭部(馬雲頭像)、総資産(粘性レイアウト、ページを下に引くと常にページの一番上にくっつく)、物品カードに大きく分けることができます.ゲームインタフェースは以上の組み合わせで、アイテムカードが多く、v-forでループレンダリングされます.htmlは以下の通り: mixinはsrc/views/singleGame/mixinである.jsファイルには、アイテム名、price、imageUrlなど、アイテムカードの情報が含まれています.あまりにも長いので、コードを並べないで、直接ファイルにリンクして、私をクリックします.仲間が自分で修正したり、新しいものを追加したりしたいなら、この書類で修正しますよ.
完了後の構成ルートは次のとおりです.
次に具体的なコンポーネントを書くことができます.頭部--馬雲写真新築src/components/Header.vue、htmlコードは以下の通りです: 頭部--総資産新築src/components/totalMoney.vue、htmlコードは以下の通り: 物品カード新規src/components/CAD.vue. htmlコードは以下の通りです.
1.総資産がマイナスになるのを防ぐ.
2.成果機能を書いて、いくら使ったかを書いたときに彩卵を弾きます.
3.オンラインオンライン機能を完了します.
本文の文字数
本文は合計1791字で、15分かかる予定です.
まず半製品を見る
プレビュー図
オンラインアドレス:点我
スキャンコードの表示:
githubアドレス、小さい仲間のドアがstar~~:私を注文することができることを望みます
本文は人々に適している.
少し先端の基礎があって、vueに対して少し理解して、基本的な文法を知っています.
本文には高級なテクニックはありませんが、結局私もおかず鶏です.
以下は主に論理がどのように実現されたのか、つまりjsがどのように書いたのかを議論し、cssは本人GitHubの中に直接コピーすることを提案する.本人のcssレベルも一言では言い尽くせない.
テクノロジースタック
vue + vue-router + vant
vuexは使用されず、コンポーネント間でeventBusを使用して通信されています(実は3行のコードで、すべては簡単です).
ビルドプロセス
npm install -g @vue/cli
vueプロジェクトの作成:vue create spend-all-money
本文はvant uiフレームワークを使用してspend-all-moneyディレクトリに入り、npm i vant -S
import Vue from "vue";
export default new Vue();
同時にmain.jsでグローバルvueにバインド:import bus from "./eventBus";
Vue.prototype.$bus = bus;
Vue.config.productionTip = false;
他のコンポーネントでthis.$を使用できます.bus.$emit(......)またはthis.$bus.$on(....)メッセージの送信と受信を行います.....some code.....
import Main from "../views/Main/index";
const routes = [
{
path: "/",
name: "main",
component: Main
}
];
......somde code.......
完了後、src/views/Main/index.vueに具体的なコードを書きます.htmlは、
で2つのvant-buttonを作成し、単機で開始したlinkを特定のゲームインタフェースのルーティングに設定します.js部分には何も書く必要はありませんが、goNetGameメソッドはヒントを使用して、ピットを残して埋めます. // todo:
goNetGame() {
this.$toast(" ");
}
jsは以下の通り:
import Header from "../../components/Header";
import TotalMoney from "../../components/TotalMoney";
import HeaderLink from "../../components/HeaderLink";
import Card from "../../components/Card";
import { mixin } from "./minxin";
export default {
mixins: [mixin],
name: "single",
components: {
Card,
HeaderLink,
Header,
TotalMoney
}
};
完了後の構成ルートは次のとおりです.
const routes = [
{
path: "/",
name: "main",
component: Main
},
{
path: "/single",
name: "single",
component: () => import("../views/SingleGame/")
}
];
次に具体的なコンポーネントを書くことができます.
は主にjsコードを必要としない展示作用です.
{{ monenyStr }}
jsコードは以下の通り:
export default {
name: "TotalMoney",
data() {
return {
totalMoney: 275000000000
};
},
computed: {
monenyStr() {
let moneyStr = this.toThousandsStr(this.totalMoney);
moneyStr = ` :¥${moneyStr}`;
return moneyStr;
}
},
created() {
this.$bus.$on("changeMoney", money => {
this.totalMoney = this.totalMoney - money;
});
},
methods: {
/**
* ,
* @param num</code></pre> </li>
</ol>
<pre><code> */
toThousandsStr(num) {
let result;
(num = (num || 0).toString()), (result = "");
while (num.length > 3) {
result = "," + num.slice(-3) + result;
num = num.slice(0, num.length - 3);
}
if (num) {
result = num + result;
}
return result;
}
}
};
```
js , , 。
this.$bus.$on("changeMoney", money => {
this.totalMoney = this.totalMoney - money;
});
, 。
{{ name }}
¥{{ priceStr }}
以上のコードを理解して、主に1つのカードを画像、価格、名前、売買ボタン、数量入力ボックスに分けます.jsコードは次のとおりです:
export default {
name: "Card",
props: {
name: { type: String, default: " " },
imageUrl: { type: String, default: "https://img.yzcdn.cn/vant/cat.jpeg" },
price: { type: Number, default: 999 }
},
data() {
return {
count: 0,
keyboardShown: false
};
},
computed: {
//
// todo:
countStr: {
get() {
return this.count.toString();
},
set(newVal) {
let counInt = parseInt(newVal);
if (isNaN(counInt) || counInt <= 0) {
counInt = 0;
}
this.count = counInt;
}
},
priceStr: {
get() {
return this.toThousandsStr(this.price);
}
},
// : *
cardMoney: {
get() {
return this.count * this.price;
}
}
},
watch: {
//
cardMoney(val, oldVal) {
const diff = val - oldVal;
// eslint-disable-next-line no-console
console.log(val, oldVal);
this.$bus.$emit("changeMoney", diff);
}
},
methods: {
changeCount(val) {
if (this.count <= 0 && val < 0) {
return;
}
this.count += val;
},
// todo: ,
/**
* ,
* @param num</code></pre> </li>
</ol>
<pre><code> */
toThousandsStr(num) {
let result;
(num = (num || 0).toString()), (result = "");
while (num.length > 3) {
result = "," + num.slice(-3) + result;
num = num.slice(0, num.length - 3);
}
if (num) {
result = num + result;
}
return result;
}
}
};
```
: (name)、 (imageUrl)、 (price)。
(count), count (count*price), 。
### 5.
, 。 star ~
github :[ ]( https://github.com/QJvic/spend-all-mone )
TODO: 1.総資産がマイナスになるのを防ぐ.
2.成果機能を書いて、いくら使ったかを書いたときに彩卵を弾きます.
3.オンラインオンライン機能を完了します.