31
ウエブアプリケーション JavaScript その3 2019/11/7 海谷 治彦 1

ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

ウエブアプリケーションJavaScript その3

2019/11/7海谷治彦

1

Page 2: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

ノートPCのLinuxをチェックしといて

• 7回目以降,各自にサーバー運用をしてもらいます.

• 本授業ではサーバーはLinuxで運用したいと思います.

• 各自のノートPCにおけるLinuxがちゃんと動くか確認しといてください.

• おそらく,CentOS 7.xかと思います.

• Linuxをいれてない人はVMで結構ですので,いれといてください.

• 支援が必要が学生は教員にコンタクトしてください.

• 授業,固有の設定は第7回にやります.

2

Page 3: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

仮想マシン(VM)でLinuxをいれる場合

• VMwareやVirtual BoxにCentOS7をいれてください.

• CentOS6や8はやめてください.

• 詳細はググってほしいですが,最小構成で結構です.

• ディスクに余裕があればフルでいれてもよいけど.

• ネットの設定は host only network ではなく,bridge adapter にしてください.

3

Page 4: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

目次

• 演習2,4の解答例

• Web Storage• JQuery3• Ajax• Bootstrap• まとめ

• 演習

• 来週までの演習 (JavaScript編の感想)

4

Page 5: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

演習2,4の解答例

現物を見ながら

5

Page 6: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

サーバーとも対話

• HTTPリクエスト/レスポンスは複数回行われる.• 無論,JSも使えるが.

• サーバー側のデータが使えるので,例えば,端末を変えても処理が継続できる.

• 途中まで大学でやって,あとは家のPCでやるとか.

6

ブラウザ

JSプログラム

・・・・・

入力画面準備

選択肢を送る

結果が返ってくる

サーバー側のデータ

サーバープログラムweb

storage等

Page 7: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Web Storage• クライアント側にデータを保存するhtml5と同時期にできた仕組み.

• 5M程度のデータを保存可能 (cookieは5K程度)• 以下の二種類がある

• sessionStorage• ページ毎に保持しているデータ.ページを閉じると消える.

• localStorage• ページを閉じても消えない.• プロトコル,ドメイン,ポート番号が共通のページ間で共有できる.• 上記が同じなら異なるページでもデータは共有可能.

• 異なるブラウザ間ではデータ共有はされない模様.

• 無論,クライアントが異なればデータは共有できない.

• サンプル webStorage.html

7

Page 8: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

jQuery3• JavaScript(JS)のライブラリ

• 素のJavaScriptで書くより記述が簡素になるはず.• JSだけでも同じことはできるはず.沢山かかなきゃだけど.

• JSの文法的な拡張が行われているわけではない.

• クロスブラウザ問題を吸収してくれるので,ブラウザの違いを気にせずJSを書ける.

• 事実上の標準となっているので,知らないとまずい.

• バージョンについて• 1.x系古いブラウザにもなるだけ対応してる

• 2.x系 IE 6, 7, 8 をサポートしてないが,サイズがこぶり.

• 今は3のみ保守されている.

この授業では 3.x 系を利用.

8

Page 9: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

使い方

• 配布元のURLを直接参照して利用する.(以下の例)• もしくは,ダウンロードして手元のファイルを読み込む.

• 配布先は,公式の他に google や MS からも行われている.

9

<head><meta charset="utf-8"><title>how2load jquery</title><!-- googleとかMSとかからもDLできるけど本家からリンク --><script src="https://code.jquery.com/jquery-3.4.1.min.js"></script><!-- 自分でDLしたものを使うなら以下<script src="jquery-3.4.1.min.js"></script> --></head>

Page 10: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

できること

• JSの解説で行ったことはあらかたできるし,記述が相対的に簡素(なはず)

• DOM要素の指定

• 要素の変更,属性等を含む.

• DOMへの要素の追加削除.

• イベント処理.

• Ajax (無論,素のJSでも可能)

• $というのが良く出てくるが,実は特別なものではなく,単なる変数である.

10

Page 11: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

要素の選択

• 素のJSよりかなり簡素• $(“anID”) で指定,

• 素のJSでは document.getElementById(“anID”) とかく.

• 以下,比較.

11

素のJS JQuerybody document.body $(document.body)tag getElementsByTagName $(“tag”)id getElementById $(“#id”)class getElementsByClassName $(“.class”)

Page 12: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

要素の操作

選択した要素について以下の操作ができます.

• 属性の追加,設定,削除• name=“jindai” 等に対するもの• サンプル jqAttr.html

• プロパティの追加,削除• checked や disabled 等,値の無い属性のこと• サンプル jqProp.html

• CSSプロパティの追加,設定,削除• フォント種類やサイズ,色等.• サンプル jqCssProp.html

• 要素内容の取得,更新• <div>内容</div>等の内容に相当.• サンプル jqText.html

12

Page 13: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

DOMへの追加・削除

• 要素の追加• 親要素.append• 親要素.prepend• 兄弟要素.before• 兄弟要素.after

• 削除• remove

• サンプル jqAddDel.html

13

Page 14: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

イベント処理

• 以下に代表的なイベントを示す.• マウス click, dblclick, mouseenter, mouseleave,

mousedown, mouseup, hover (enterとleaveをあわせたっぽいもの)

• キーボード keypress, keydown, keyup• 文書(document) ready, resize, scroll

• イベント設定は,基本,$(なんとか).イベント(関数定義)

と書く.要は要素に対してコールバックを仕込む.

• onなんとか属性に直に関数を代入するよりもエレガント(だと思う)

• 詳細はサンプル jqEvent.html にて.14

Page 15: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Ajax• Asynchronous JavaScript and XML• もとは名前通りの機能だったが,今は,JSを使った同期・非同期の通信機能という感じ.

• ページ遷移を伴わずサーバー等からクライアントがデータを授受できるので便利.

• 無論,JQuery にもAjaxのための機能がある.

• ある意味,プログラム言語としては当たり前の機能.

• CやJava等のプログラム言語は任意の通信をする機能があるのだから.

15

Page 16: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

非同期通信 Asynchronous Comm.• HTTPのリクエストとレスポンスのように,基本,通信では,送付側(例えばブラウザ)は,返信側(例えばウエブサーバー)の返事を待つ.⇒ 同期通信

• 非同期通信は,この返事を待たず,次の処理にいってしまう手順の通信をさす.

• 非同期での返事の受け取り方• 返事が来た場合に呼び出されるCallbackを仕込んでおいて,返事を受け取る.

• 返事を保存する場所(通常,Queue 待行列)を準備し,定期的に返事を確認するという手もある.polling と呼ばれる.

• マルチスレッドな言語なら返事を監視するスレッドを走らせるという手もある.

16

Page 17: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

ページ遷移で何が悪い?

• Ajaxが無いと,HTTPリクエストをクライアントが行い,別のページに遷移する必要がある.

• 画面の一部を変更するだけでも,この遷移が起こり,通信の無駄だし,挙動が遅くなる.

• ページが保持する状態(JSの変数の値やフォームのセレクション)が遷移すると原則無くなってしまう.

• さらに,素のHTTPでは遷移したページ間に原則連続性は無いため,セッション等の仕組が必要.

• よって,ウエブサーバー等と通信を行いデータを部分的にもってくるAjaxはそれなりに便利な機能である.

17

Page 18: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Ajaxのサンプル

• ajaxSync.html ajaxAsync.html

• 同期と非同期の違いを際だたせている.• 通信相手のページが意図的に5秒停止してから動作するように作ってある.

• syncのほうは10秒動作がとまってしまう.

• asyncのほうは相手の停止に関係なく動作が進む.

• 若干,古い書き方.いまどきはjQueryで書くほうがよい.

• JQuery版 jqAjaxSync.html jqAjaxAsync.html

18

Page 19: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Bootstrap• 簡単にウエブページレイアウトを行うためのフレームワーク.

• 基本,HTMLの要素に予め定められたクラスを設定するだけで,結構,綺麗な見栄えになる.

• 自身で全部CSSを全部書いて綺麗な見栄えにするのは超大変.

• Responsive Design に対応• スマホ等,小さい画面の場合等,画面のサイズに合わせて,自動的にレイアウトを変えてくれる.

• HTML5, CSS3, JavaScriptからできている.

• まぁ,同様のフレームワークは色々あるようだ.• Foundation, UIKit, Pure, Kube, HTML Kickstart

19

Page 20: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

フレームワークとは?

• 枠組み (日本語にしても意味わからん)• ライブラリの逆 (どう逆なんだ?)

• ライブラリは全体(main関数的なものを含む)は自身で作り,部分は他人の作ったものを流用する.

• C言語の数値計算ライブラリ lm • Javaの各種API

• フレームワークは全体は他人が作ったものを使い,部分を自分でカスタマイズする.

• これから話す Bootstrap• 後段に出てくるサーバーサイドのアプリケーションフレームワーク.(spring や cakePHP等)

20

Page 21: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

使い方 1/2• 本家サイトからzipをDLして展開

http://getbootstrap.com/• distフォルダにある css, font, js を使う.

• もしくは,ネットに公開してあるもの使う.

21

<!-- Latest compiled and minified CSS --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">

<!-- Optional theme --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">

<!-- Latest compiled and minified JavaScript --><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

Page 22: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

使い方 2/2• ゼロからページを作るのはシンドいので,公式ページにあるテンプレートを改造してゆく.

http://getbootstrap.com/getting-started/#examples• JQuery の利用は必須.Bootstrapの内部で使っているため.

• どうも,JQ2.xではうまく動かない感じ.

• Bootstrapのルールに従い,HTML要素にクラスを設定してゆくだけで,基本,綺麗なレイアウトになる.

• ルールを調べたり,覚えたりするのがしんどい.コレはフレームワーク利用全般に言える問題点.

22

Page 23: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Starter• 私が手をいれたのであれば bsStarter.html 参照.

• なんか沢山かいてあるけどカスタマイズ部分は以下

• 32-38行メニューのリンク先とかを設定

• 47, 48行本文

• カスタマイズ部分の周辺に設定されたクラスに従い,Bootstrapが綺麗にレイアウトしてくれる(スタイルファイルを設定してくれる.)

• ちなみに,画面を小さくすると(スマホ等を想定して),見えが変わる.

23

Page 24: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Grid Layout• 旧来の tableタグを使ったレイアウト,HTML5の

float指定(桑原先生編,覚えてますか?)より格段に楽でブラウザ非依存なレイアウト法.

• グリッドすなわち碁盤の目状の領域でレイアウトを設定.

• 具体的には横位置を12分割して,その比率で箱を配置できる.5,4,3等の等比でないものもOK.

• bsGrid1.html bsGrid2.html

24

Page 25: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Dropdown Menu• formのセレクションを使わないでもdropdown menuを書ける.

• まぁ,見た目はかっこいい.

• bsDropdwon.html 参照

25

Page 26: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

タブのナビゲーション

• いわゆるタブっぽいUIを簡単に作ることができる.

• bsTabs.html

26

Page 27: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

Bootstrapの利用に向けて

• 授業にて全カスタマイズ手法を紹介するのは無理.

• 自身で公式サイト http://getbootstrap.com/ 等を見て,手軽に綺麗なレイアウトを作成しよう.

• フレームワークを使うという体験は非常に重要なので,是非,チャレンジしてみてください.

• 例えば,情報科学実験での利用とか.

27

Page 28: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

JavaScript編エピローグ

• とりあえず,クライアントサイドの技術を学んでみました.

• なんか覚えることがやたら多い・・・

• JSに限らず,現代的なプログラミングは「考案する」というより「調べる」というのがメインです.

• 新しいアルゴリズムとかクリエイティブに考えたい方々には不満も多いかもしれません.

• その意味では,現代的プログラミングってのは文系っぽいのかもね.

28

Page 29: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

土曜日までの演習5• dotcampusに出してください.

• 問題もdotcampusのほうを参照.• 問題はJavaScript編の感想文です.

• わからなかったところ

• おもしろかったところ

• 以上

29

Page 30: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

本日のメインの演習 (演習6)• 次項で指定するJavaScriptのプログラムを作成してください.

• 複数ファイルになってもかまいません.

• 締切は11/20まで.

• 〆切後も提出可能な状態にはなっていますが,遅提出の扱いとなります.

• 提出しないよりはマシです.

• 提出先は dotcampusです.

• JavaScriptを呼び出すファイルの名は ex06.html としてください.

30

Page 31: ウエブアプリケーション JavaScript 3ノート PCのLinuxをチェックしといて • 7回目以降,各自にサーバー運用をしてもらいます. • 本授業ではサーバーはLinuxで運用したいと思い

演習6 問題• dotcampusにアップしてある wa06ex.html のHTML文書中

に以下の機能をJavascriptで追加せよ.

1. ページが表示されると,liタグの個数を数え,文書中の

“X days a week” のXを数えた個数に置き換える機能.

2. 画面をクリックすると,文字列を入力するフォームが表示

され,入力した文字列を箇条書きの末に追加する機能.

3. 箇条書きの項目が上記の2で追加されると, “X days a week” のXが更新される機能.

• 尚,文書に新しいタグや属性は追加してもよい.

• 文書の内容は変更しないでね.例えば X を 7 に書き換えるとか.

31