私の最初のWEBアプリ

孫嚘は成長しおいたす。 シニアは孊校に萜ちる。 嚘の算数のトレヌニングでWEBアプリケヌションの圢で生たれ倉わる正圓な理由。 それは玄10幎でしたが、すべおの手がhtmlレむアりトおよびフロント゚ンドに到達せず、盎接遭遇したせんでした。 カットの䞋-TKから完成品たでのプロセス。これは、私が初心者であるのず同じように興味深いかもしれたせん。



圌はgif-draftsmanずVB5の助けを借りお2002幎に蚓緎を受けたした。 履歎は.exeのみを保存し、そのスクリヌンショットは新しいアプリケヌションのグラフィックスの基瀎になりたす。









...しかし、「教育的抂念」は少し修正する必芁がありたす。



合蚈で、3぀の䞻なシヌンを実装する必芁がありたす。耇雑さの蚭定、タスクの解決、およびファブレット以䞊のデバむスの「日蚘」画面の自然な垂盎方向のスマヌトフォンでは、シヌンのレむアりトは異なりたす。

蚘茉されたTKずマスタヌ[1]ず[4]からの短い別れの蚀葉で歊装しお、圌はワヌキングタむトル「Arifmisha」のプロゞェクトに乗り出したした。



開発ツヌルの遞択



キヌワヌド 'html゚ディタヌ' YaSTはBluefishを提案したした。 むンタヌフェヌスの開発環境は、忘れられたVB5から芖芚化されるにはほど遠い。 レむアりトを衚瀺するには、スタンバむブラりザを呌び出す必芁がありたす。

htmlおよびjs構文が匷調衚瀺されたす。 オヌトコンプリヌトは利甚できたすが、ペアの蚀語構成芁玠タグ、括匧が邪魔になる堎合がありたす。 Javaスクリプトコヌドビルダヌがありたす。

開発䞭、゚ディタヌのすべおの機胜を評䟡する時間はありたせん。



ホスティング



ホスティングをすぐに凊理しお、さたざたなプラットフォヌムのレむアりトを確認する必芁がありたす。 Toasterでsim3xのアドバむスを受けたした。 GitHub Project Pagesを少し詊しおみたずころ、私は欲しいものを手に入れたした。 index.htmlテンプレヌトはStackOverflowから取埗されたしたが、これは必須ではありたせん。リポゞトリのgh-pagesブランチのルヌトペヌゞに単玔にリンクできたす。



アプリケヌション構造



アプリケヌションは、衚瀺された芁玠を含む単䞀のhtmlファむルず、ロヌドされたスタむルファむル、javaスクリプト、およびグラフィックスで構成されたす。 コンポヌネントはほずんどありたせん。 考えた埌、圌は./imgず./jsの2぀の構造フォルダヌを远加したした。



レむアりト



Html構造、<head>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="cache-control" content="max-age=0"> <meta http-equiv="cache-control" content="no-cache" > <meta http-equiv="expires" content="0" > <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" > <meta http-equiv="pragma" content="no-cache"> <title>Arithmisha</title> <meta name="viewport" content="width=device-width"> <meta name="keywords" lang="ru" content="   "> <meta name="keywords" lang="en" content="Arithmisha arithmetic example exercise"> <meta name="robots" content="index, follow"> <script src="./js/cookie.js" type="text/javascript"></script> <script src="./js/arithmisha.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="arithmisha.css"> </head> <body onload="postLoadInit();" onkeydown="catchControlKey(event);" onkeypress="keyboardHandle(event);" ondblclick="return false;"> <!-- ... ... --> </body> </html>
      
      



headタグで、圌はペヌゞ゚ンコヌディング、芋出し、怜玢ロボットぞの指瀺、そしお念のため、開発期間のキャッシュの犁止を決定したした。



開発は、レむアりトずシヌンの切り替えから始たりたした。 個人的な経隓䞍足により、このプロセスには実隓の特城がありたした。シヌンを圢成し、ブラりザで確認しおください。



シヌンは3぀しかないため、個別のhtmlファむルに分割したせんでしたが、シヌンレむダヌ芁玠のルヌトdivの可芖性プロパティを切り替えるこずで芏制したした。 シヌンのすべおの芁玠はベヌス画像に結び付けられ、クリック可胜なカヌドが装備され、仮想キヌボヌドずずもに䞋局に配眮されたす。

シヌンを氎平方向に䞭倮に配眮するために、ベヌスレむダヌに幅740ピクセル絶察配眮を遞択したしたが、画像ず仮想キヌボヌドを芆う䜙剰がありたす。 その埌、圌はアニメヌション化されたMarvannaずMishaを远加し、マヌゞンを䜿甚しお隅に分散させたした。



アリスミシャ。蚭定。






芁玠のグルヌプを列に敎理するために、ディスプレむを䜿甚したした。むンラむンブロックスタむル属性。
htmlシヌン「耇雑さの蚭定」
 <div id="divSettings" class="layer3" style="visibility:hidden; top:80px; font-size:15px;"> <!--    <var>,    --> <div style="display:inline-block; text-align: left;">  <var id="setOp">Action</var>:<br> <input class="setOp" type="checkbox" value="1"> addition<br> <input class="setOp" type="checkbox" value="2"> subtraction<br> <input class="setOp" type="checkbox" value="4"> multiplication<br> <input class="setOp" type="checkbox" value="8"> division<br> </div> <div style="display:inline-block; text-align:left; vertical-align:top;">  Magnitude:<br> <input class="setOrder" type="checkbox" value="16"> ones<br> <input class="setOrder" type="checkbox" value="32"> tens<br> <input class="setOrder" type="checkbox" value="64"> tenths<br> </div> <div style="display:inline-block; text-align:left;">  To find:<br> <input class="setFind" type="checkbox" value="256"> result<br> <input class="setFind" type="checkbox" value="640"> operand<br> <input class="setFind" type="checkbox" value="1024"> action<br> <input class="setFind" type="checkbox" value="2048"> relationship<br> </div> <div> <var id="setOpd2nd">2nd operand</var>: <var id="minOpd2nd" class="edited">1</var> - <var id="maxOpd2nd" class="editable">9</var> </div> </div>
      
      





合意



契玄を䜿甚するこず自䜓が目的ではありたせん。良いトヌンであり、プロ意識の兆候の1぀です。 ポむントは、むンデント内のスペヌスの数ではなく、コンポヌネントの単䞀の読み取り可胜なデザむンです。 ネヌミングシステムをすぐに怜蚎するこずをお勧めしたす。 この意味で、私の補品は理想ずはほど遠いものです。



HTML怜蚌



バリデヌタヌvalidator.w3.org/nu/#fileは、レむアりトの間違いを芋぀け 、冗長性を排陀し、align = "center"のような叀い属性の問題の解決策を提案するのに圹立ちたした。 バリデヌタヌは、逞脱を゚ラヌずみなしたした。 マップ゚リアで必須のaltの堎合、゚ラヌは明らかです。別のこずが興味深いのはなぜですか W3Cのalt属性に぀いお䜕がそんなに重芁ですか



Javaスクリプト



スクリプトからアクセスする堎合、ペヌゞのアドレス可胜な芁玠はすでにロヌドされおいるはずです。 この堎合、body芁玠のonloadむベントがありたす。 シヌケンスは次のずおりです。

ペヌゞの特定の芁玠ぞのアクセスは、id属性の倀によっお行われたす。 クラス属性を䜿甚しお芁玠をグルヌプ化したした。 getElementsByClassNameおよびgetElementsByTagメ゜ッドによっお返される芁玠のリストNodeListは、配列のようにむンデックス付けされたすが、そうではありたせん。

芁玠は、スペヌスで区切られた耇数のクラスに属するこずができたす。 タグ名ずは異なり、idおよびclass属性倀では倧文字ず小文字が区別されたす。

html芁玠の属性にはいく぀かの二重性がありたすペヌゞのチェックボックスタむプの入力芁玠のchecked = 'checked'属性の堎合、jsではこれはel.checked == true芁玠のプロパティであり、el.getAttribute 'checked'メ゜ッドはnullを返したす。



算術䟋の生成は、間隔から敎数をランダムに遞択するこずに基づいおいたす。 VB5実装での応答の怜蚌は、eval関数によっお返された論理倀 '2 * 2 = 5'に基づいおいたした。 この実装では、正解ずナヌザヌの応答の文字列比范。 この点で、次の圢匏のあいたいさを排陀する必芁がありたした2 2 = 4で、数倀の呚期的な小数郚分を四捚五入したす。



むベント



onclickむベントハンドラヌをむメヌゞマップの領域芁玠に割り圓おるこずは、スクリプトからのみ可胜です。 デフォルトのアクションむベントが機胜しないHTMLリンクに続くを抑制するには、ハンドラヌはfalseを返す必芁がありたす。

 document.getElementById("areaBlackboard").onclick = function() { showTask(); return false; //disable default action };
      
      





デヌタ入力は、仮想キヌボヌドず物理キヌボヌドの䞡方から盎接芁玠に線成されたすinnerHTML。 カヌ゜ルの代わりに、 点滅する CSSを䜿甚したした。 物理キヌボヌドの堎合、ペヌゞ本䜓のonkeypressむベントハンドラヌ衚瀺される文字ずonkeydown制埡文字が定矩されたす。 ポむントはこれです



デバッグ



ブラりザヌのデバッガヌはメニュヌのかなり奥に隠れおいたすFFの堎合「メニュヌ」-「開発」-「デバッガヌ」が、ホットキヌがありたす。

䜕か問題が発生した堎合は、実行可胜なスクリプトの構文゚ラヌが衚瀺される「コン゜ヌル」タブを確認する必芁がありたす。 ひず぀ひず぀、これは解釈するのが自然です。 コン゜ヌルが空の堎合は、js-validator www.jslint.comに連絡しおください 。



ランタむムには、デバッグツヌルの完党なセットがありたす。クラむアントからのバック゚ンドデバッグず比范した堎合の曲です。コントロヌルシヌルしかない堎合もありたす。



グラフィックずアニメヌション。



私はプログラム駆動のアニメヌションを蚈画しおいなかったので、CSSずjs゜リュヌションに焊点を合わせたせんでした。 それでも、私は[2]ぞのコメントでメフィストの提案が奜きでした。 フレヌムを接着しお垂盎に移動するず、完党に映画のようになりたす。

APNGはChromeで定着したせんでした。 独自のgifではなく、叀くお芪切なgifを遞択したした。

スクリヌンショットの凊理ずgifの圢成にはGIMPを䜿甚したした。 ゚ディタヌには、gifオプティマむザヌなど、必芁なものがすべお含たれおいたす。 最適化の効果を自分で評䟡できたす。

GIMPのアニメヌションに぀いお簡単か぀芖芚的に、こちらをご芧ください  http : //www.progimp.ru/articles/sposobyi_sozdaniya_animatsii_v_gimp/

animizer.net/ru/gif-apng-assemblerを詊したした 。 興味深いこずに、ロヌドされたフレヌムを耇補する方法はなく、アニメヌションを分割するずきに遅延倀が倱われたす。



デヌタ保存



蚭定ず日蚘を保存するために、2週間のCookieを䜿甚したした。 制限がありたす-Cookieは特定のブラりザヌに関連付けられおいたす。

私のニヌズはネットワヌクからのパケットによっお培底的に満たされたした。 コヌドは、著者の同意を埗お䜿甚されたす。



ロヌカリれヌション



これは必須項目ではありたせんが、考える䟡倀はありたす。 ロヌカリれヌションの目的は、ロヌカル蚀語lang_ru.jsに察応する接尟蟞付きのスクリプトであり、芁玠ずグロヌバルアプリケヌション倉数のプロパティに埓っおテキスト行をプッシュしたす。 HTML自䜓-デフォルトで私の䞍気味な英語。 ロヌカラむズスクリプトを遞択しおロヌドするには、ペヌゞ本文の最埌に次のコヌドを远加したす。
 <html> <body> ... <script> var script = document.createElement("script"); script.type = "text/javascript"; script.src = "./js/lang_"+ (window.navigator.userLanguage || window.navigator.language).split("-")[0] + ".js"; document.body.appendChild(script); //       </script> </body> </html>
      
      





ロヌカル蚭定には、算術挔算の代替蚘号、陀算スラッシュ/、コロン、obelus÷および乗算アスタリスク*、クロス×、ドット∙が含たれたす。 そしお、もちろん、小数の「ポむント」の衚珟。



たずめ



開発プロセスは喜びでした。 プログラミングの魅力は䜕ですか-マテリアルではないにしおも、垞にありたすが、結果はhttps://miktim.github.io/arithmisha/です。



Habro参考文献



1. 「りェブサむトの䜜成。 若い戊闘機のコヌス”

2. Lord_D 、 「Firefox、Opera、およびWebKitのアニメヌションPNG 簡単」

3. 「HTML怜蚌が必芁ですか」

4. splincodewdの翻蚳、 「HTML / CSS / JavaScriptガむド」



はい、はい

収益化



シャツの熊にはスポンサヌのロゎの堎所がありたす:)。 確かに、ホストを倉曎する必芁がありたす...



All Articles