目次
主な機能と発生した問題:
1 .アニメーションを左右に切り替える
2. パラメータjumpを使用したルーティング
3. モバイル端末には外部フォント スタイルが導入されます
4. htmtl2canvas スクリーンショット関数を使用し、次のように変換します。 image
5. WeChat インターフェースの使用 (フロントエンド部分)
6. モバイル画面への適応
7. その他の問題の概要
ホームページ WeChat アプレット WeChatの開発 vue を使用して WeChat パブリック アカウント Web ページを完成させる方法

vue を使用して WeChat パブリック アカウント Web ページを完成させる方法

Apr 29, 2019 am 09:57 AM
css html html5 javascript vue.js


WeChat公式アカウントには、比較的シンプルなアンケート機能であるH5ページ機能がネストされています。選択されたテクノロジー スタックは Vue です。 WeChat のログインおよび共有インターフェイスも使用されます。

主な機能と発生した問題:

  1. 左右切り替えアニメーション
  2. パラメータジャンプによるルーティング
  3. 移動紹介末端の外部フォントスタイル
  4. html2canvasスクリーンショット機能を使用
  5. WeChatインターフェース(フロントエンド部分)を使用
  6. モバイル端末の画面適応
  7. モバイル端末のクリック数ページ 複数回クリックしても 1 回しか実行されない問題
  8. iOS で入力ボックスを使用すると、キーボードがポップアップしてボタンを覆ってしまう問題
  9. パッケージ化されたプロジェクトで静的ファイルの読み込みの問題が発生しました。リソース

1 .アニメーションを左右に切り替える

--まずはvueのモバイルアニメーションライブラリを利用することを考えました。とても小さいので諦めて手書きで書き始めました。私が最初に考えたのはトランジション効果でした。そして、関連する参考文献を見つけました。コードは次のとおりです:

`<template>
  <p id="app">
    <transition :name="&#39;fade-&#39;+(direction===&#39;forward&#39;?&#39;last&#39;:&#39;next&#39;)">
      <router-view></router-view>
    </transition>
  </p>
</template>
<script>
export default {
  name: "app",
  data: () => {
    return {
      direction: ""
    };
  },
  watch: {
    $route(to, from) {
      let toName = to.name;
      const toIndex = to.meta.index;
      const fromIndex = from.meta.index;
      this.direction = toIndex < fromIndex ? "forward" : "";
    }
  }
}
</script>
<style scoped>
.fade-last-enter-active {
  animation: bounce-in 0.6s;
}
.fade-next-enter-active {
  animation: bounce-out 0.6s;
}
@keyframes bounce-in {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(0rem);
  }
}
@keyframes bounce-out {
  0% {
    transform: translateX(100%);
  }
  100% {
    transform: translateX(0rem);
  }
}
</style>`
ログイン後にコピー

参考: https://yq.aliyun.com/article...

2. パラメータjumpを使用したルーティング

これは単なるものです。録音には3つの方法があります。
1. Route-link:to にパラメータを直接取り込みます:

<router-link :to="{name:&#39;home&#39;, query: {id:1}}">
ログイン後にコピー

2. this.$router.push にパラメータを取り込みます:

パラメータを含むクエリを使用します: パラメータを取得するのと同様です渡されたものは URL に結合されます

this.$router.push({name:&#39;home&#39;,query: {id:&#39;1&#39;}})
this.$router.push({path:&#39;/home&#39;,query: {id:&#39;1&#39;}})
ログイン後にコピー

Use params withparameters: 名前のみを使用できます。投稿と同様に、パラメーターは結合されません

this.$router.push({name:&#39;home&#39;,params: {id:&#39;1&#39;}})
ログイン後にコピー

参考リンク: https:/ /blog.csdn.net /jiandan...

3. モバイル端末には外部フォント スタイルが導入されます

  1. モバイル端末には外部フォント スタイルが導入されます。フォント ライブラリからのフォント。一般的なサフィックスは .ttf/.otf などです。アセット ファイルの下に
    フォント ファイルを作成し、すべてのフォント ファイルをその中に入れます。
  2. 新しい .css ファイルを作成します。これは、ダウンロードしたフォントを登録するのと同じです。フォントの名前はカスタマイズできますが、通常は以前の名前が残ります。 src は、ファイルが配置されているパスです。

    vue を使用して WeChat パブリック アカウント Web ページを完成させる方法

  3. 必要な場合に使用してください: font-family: "PingFang"

4. htmtl2canvas スクリーンショット関数を使用し、次のように変換します。 image

  1. 最初に html2canvas パッケージをダウンロードします: cnpm i html2canvas -S / import html2canvas from 'html2canvas';
  2. ドキュメントを表示します: をクリックして画像を直接生成します。画像を保存する WeChat 保存する機能
setTimeout(() => {  //这里用定时器是因为页面一加载出来我就展示的是图片 为了防止图片还未生成 给点时间
      html2canvas(document.querySelector("#top"), {
        useCORS: true,  //是否尝试使用CORS从服务器加载图像 
        logging: false,//删除打印的日志 
        allowTaint: false //这个和第一个很像 但是不能同时使用 同时使用toDataURL会失效
      }).then(canvas => {
        let imageSrc = canvas.toDataURL("image/jpg"); // 转行img的路径 
        this.imageSrc = imageSrc;  //定义一个动态的 :src 现在是赋值给src 图片就会展现
        this.$refs.top.style.display = "none"; // 让页面上其他元素消失 只显示图片
      });
    }, 1000);
ログイン後にコピー

余談: これをやっていたとき、私は本当に混乱しました。公式サイトのドキュメントが少なすぎて、その時に画像のクロスドメインの問題に遭遇して、長時間探したのですが、もしかしたら公式サイトのパラメータ設定ファイルをよく読んでいなかったのかもしれません。泣きながら多くの時間を無駄にしました。

参考リンク: http://html2canvas.hertzen.com/

5. WeChat インターフェースの使用 (フロントエンド部分)

WeChat SDK インターフェースを主に使用します。ログインと共有機能については、まず WeChat パブリック プラットフォームにアクセスして確認し、権限を修正した後にバックエンドを構成します。フロントエンドはデータを要求し、いくつかの構成を実行するだけで済みます。ここでは主に友達への共有機能とモーメントへの共有機能を紹介します:

this.code = location.href; //首先获取code 
if (this.code.lastIndexOf("code=") != -1) {
  (this.code = this.code.substring(
    this.code.lastIndexOf("code=") + 5,
    this.code.lastIndexOf("&state")
  )),
    this.$axios
      .get("*******8?code=".concat(this.code))
      .then(function(t) {  //获取后端传会来的参数 
        localStorage.setItem("unionid", t.data.unionid);
        localStorage.setItem("openid", t.data.openid);
        localStorage.setItem("nickname", t.data.nickname);
        localStorage.setItem("headimgurl", t.data.headimgurl);
      });
}
this.url = encodeURIComponent(location.href.split("#/")[0]);//获取配置的路径
this.$axios.get(`*********?url=${this.url}`).then(res => {
  this.res = res.data;
  wx.config({
    debug: false, // 开启调试模式,
    appId: res.data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
    timestamp: res.data.timestamp, // 必填,生成签名的时间戳
    nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
    signature: res.data.signature, // 必填,签名,见附录1
    jsApiList: [
      "updateAppMessageShareData",
      "updateTimelineShareData",
      "showMenuItems",
      "hideAllNonBaseMenuItem"
    ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  });
  //参考公众平台写的:
  wx.ready(function() {
    wx.hideAllNonBaseMenuItem();
    wx.showMenuItems({
      menuList: [
        "menuItem:share:appMessage",
        "menuItem:share:timeline",
        "menuItem:favorite"
      ] // 要显示的菜单项,所有menu项见附录3
    });
    wx.updateTimelineShareData({
      title: "******", // 分享标题
      desc: "*********", // 分享描述
      link: "**********", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: "******", // 分享图标
      success: function() {
        ***** 执行结束后执行的回调
      }
    });
    wx.updateAppMessageShareData({
      title: "*******", // 分享标题
      desc: "*********", // 分享描述
      link: "*********", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: "********, // 分享图标
      success: function() {
        *******
      }
    });
  });
 }
ログイン後にコピー

6. モバイル画面への適応

現在、モバイル画面への適応を行っています。 felxable.js というライブラリがあるとのことでしたが、後で調べてみたら、もっと上手い作者さんが諦めてリンクを貼ってくれていました。はははは、かわいいですね。時間をかけて詳しく見ていきます。また会社の次のプロジェクトが来ています。本当に長い間残業してきました。予定通りプロジェクトを完了するために、直後に新しいプロジェクトを開始しました。完了。少し疲れています。これはアプリにする必要があります。まったく経験がありません。、Ao Ao は弾丸を噛んで実行することしかできません、それはまだ適切に調理されなければなりません、そして、かわいそうな卒業したての犬はそうしますあえて間違いを犯さないこと。
以下の rem アダプテーション コードを共有します:

//默认调用一次设置
 setHtmlFontSize();
 
 function setHtmlFontSize() {
     // 1. 获取当前屏幕的宽度
     var windowWidth = document.documentElement.offsetWidth;
     // console.log(windowWidth);
     // 2. 定义标准屏幕宽度 假设375
     var standardWidth = 375;
     // 3. 定义标准屏幕的根元素字体大小 假设100px  1rem=100px  10px = 0.1rem  1px 0.01rem
     var standardFontSize = 100;
     // 4. 计算当前屏幕对应的根元素字体大小
     var nowFontSize = windowWidth / standardWidth * standardFontSize + &#39;px&#39;;
     // console.log(nowFontSize);
     // 5. 把当前计算的根元素的字体大小设置到html上
     document.querySelector(&#39;html&#39;).style.fontSize = nowFontSize;
 }
 // 6. 添加一个屏幕宽度变化的事件  屏幕变化就触发变化根元素字体大小计算的js 
 window.addEventListener(&#39;resize&#39;, setHtmlFontSize);
ログイン後にコピー

このコードを main.js に導入し、コンバーターを使用して px を rem に変換します。

7. その他の問題の概要

1. 複数回クリックされた場合、クリック イベントは 1 回だけ実行されます:

.once 修飾子を使用でき、便利な修飾子がたくさんあります。 . 誰もが持っています 時間を見てみることができます~~

2. ios 入力ボックスを使用すると、キーボードが跳ね上がり、以下のボタンやその他の要素がブロックされます:

登録できますinput のフォーカス喪失イベント、フォーカスが失われたとき、document.body.scoolTop = 0;

3. パッケージ化されたプロジェクトで、静的リソースまたはパスが表示されない現象が発生しました。は間違っています:

私は vue-cil3 を使用しており、node_modules に設定ファイルを置きます。公式ドキュメントに説明があります。設定を変更する必要がある場合は、
新しい vue.config を作成してください。 .js ファイルを作成すると、前のドキュメントが自動的に上書きされます。主な変更点は次のとおりです: publicPath: "./",
ドキュメントにはbaseUrlがなくなり、すべてpublicPathが使用されます。ドキュメントの設定に従うだけで問題ありません。

##関連チュートリアル:

Vue フレームワーク ビデオ チュートリアル


##

以上がvue を使用して WeChat パブリック アカウント Web ページを完成させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ブートストラップボタンの使用方法 ブートストラップボタンの使用方法 Apr 07, 2025 pm 03:09 PM

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

ブートストラップのサイズを変更する方法 ブートストラップのサイズを変更する方法 Apr 07, 2025 pm 03:18 PM

Bootstrapの要素のサイズを調整するには、次のものを含むDimensionクラスを使用できます。

ブートストラップにファイルをアップロードする方法 ブートストラップにファイルをアップロードする方法 Apr 07, 2025 pm 01:09 PM

ファイルアップロード機能は、Bootstrapを介して実装できます。手順は次のとおりです。BootstrapCSSおよびJavaScriptファイルを紹介します。ファイル入力フィールドを作成します。ファイルアップロードボタンを作成します。ファイルのアップロードを処理します(FormDataを使用してデータを収集し、サーバーに送信します)。カスタムスタイル(オプション)。

ブートストラップに写真を挿入する方法 ブートストラップに写真を挿入する方法 Apr 07, 2025 pm 03:30 PM

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

ブートストラップの日付を確認する方法 ブートストラップの日付を確認する方法 Apr 07, 2025 pm 03:06 PM

ブートストラップの日付を確認するには、次の手順に従ってください。必要なスクリプトとスタイルを紹介します。日付セレクターコンポーネントを初期化します。 Data-BV-Date属性を設定して、検証を有効にします。検証ルール(日付形式、エラーメッセージなどなど)を構成します。ブートストラップ検証フレームワークを統合し、フォームが送信されたときに日付入力を自動的に検証します。

ブートストラップリストでデフォルトスタイルを削除する方法は? ブートストラップリストでデフォルトスタイルを削除する方法は? Apr 07, 2025 am 10:18 AM

ブートストラップリストのデフォルトスタイルは、CSSオーバーライドで削除できます。より具体的なCSSルールとセレクターを使用し、「近接原理」と「重量原理」に従って、ブートストラップのデフォルトスタイルをオーバーライドします。スタイルの競合を避けるために、よりターゲットを絞ったセレクターを使用できます。オーバーライドが失敗した場合は、カスタムCSSの重量を調整します。同時に、パフォーマンスの最適化に注意を払い、重要な!の過剰使用を避け、簡潔で効率的なCSSコードを書いてください。

ブートストラップナビゲーションバーの設定方法 ブートストラップナビゲーションバーの設定方法 Apr 07, 2025 pm 01:51 PM

ブートストラップは、ナビゲーションバーをセットアップするための簡単なガイドを提供します。ブートストラップライブラリを導入してナビゲーションバーコンテナを作成するブランドアイデンティティの作成ナビゲーションリンクの作成他の要素の追加(オプション)調整スタイル(オプション)

ブートストラップのフレームワークをセットアップする方法 ブートストラップのフレームワークをセットアップする方法 Apr 07, 2025 pm 03:27 PM

Bootstrapフレームワークをセットアップするには、次の手順に従う必要があります。1。CDNを介してブートストラップファイルを参照してください。 2。独自のサーバーでファイルをダウンロードしてホストします。 3。HTMLにブートストラップファイルを含めます。 4.必要に応じてSASS/LESSをコンパイルします。 5。カスタムファイルをインポートします(オプション)。セットアップが完了したら、Bootstrapのグリッドシステム、コンポーネント、スタイルを使用して、レスポンシブWebサイトとアプリケーションを作成できます。

See all articles