vue を使用して WeChat パブリック アカウント Web ページを完成させる方法
WeChat公式アカウントには、比較的シンプルなアンケート機能であるH5ページ機能がネストされています。選択されたテクノロジー スタックは Vue です。 WeChat のログインおよび共有インターフェイスも使用されます。
主な機能と発生した問題:
- 左右切り替えアニメーション
- パラメータジャンプによるルーティング
- 移動紹介末端の外部フォントスタイル
- html2canvasスクリーンショット機能を使用
- WeChatインターフェース(フロントエンド部分)を使用
- モバイル端末の画面適応
- モバイル端末のクリック数ページ 複数回クリックしても 1 回しか実行されない問題
- iOS で入力ボックスを使用すると、キーボードがポップアップしてボタンを覆ってしまう問題
- パッケージ化されたプロジェクトで静的ファイルの読み込みの問題が発生しました。リソース
1 .アニメーションを左右に切り替える
--まずはvueのモバイルアニメーションライブラリを利用することを考えました。とても小さいので諦めて手書きで書き始めました。私が最初に考えたのはトランジション効果でした。そして、関連する参考文献を見つけました。コードは次のとおりです:
`<template> <p id="app"> <transition :name="'fade-'+(direction==='forward'?'last':'next')"> <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:'home', query: {id:1}}">
2. this.$router.push にパラメータを取り込みます:
パラメータを含むクエリを使用します: パラメータを取得するのと同様です渡されたものは URL に結合されます
this.$router.push({name:'home',query: {id:'1'}}) this.$router.push({path:'/home',query: {id:'1'}})
Use params withparameters: 名前のみを使用できます。投稿と同様に、パラメーターは結合されません
this.$router.push({name:'home',params: {id:'1'}})
参考リンク: https:/ /blog.csdn.net /jiandan...
3. モバイル端末には外部フォント スタイルが導入されます
- モバイル端末には外部フォント スタイルが導入されます。フォント ライブラリからのフォント。一般的なサフィックスは .ttf/.otf などです。アセット ファイルの下に
フォント ファイルを作成し、すべてのフォント ファイルをその中に入れます。 - 新しい .css ファイルを作成します。これは、ダウンロードしたフォントを登録するのと同じです。フォントの名前はカスタマイズできますが、通常は以前の名前が残ります。 src は、ファイルが配置されているパスです。
- 必要な場合に使用してください: font-family: "PingFang"
4. htmtl2canvas スクリーンショット関数を使用し、次のように変換します。 image
- 最初に html2canvas パッケージをダウンロードします: cnpm i html2canvas -S / import html2canvas from 'html2canvas';
- ドキュメントを表示します: をクリックして画像を直接生成します。画像を保存する 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 + 'px'; // console.log(nowFontSize); // 5. 把当前计算的根元素的字体大小设置到html上 document.querySelector('html').style.fontSize = nowFontSize; } // 6. 添加一个屏幕宽度变化的事件 屏幕变化就触发变化根元素字体大小计算的js window.addEventListener('resize', 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 を使用して WeChat パブリック アカウント Web ページを完成させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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