【行動軟體設計】HTML5、Javascript

 主要APP開發方式

  1.  Native APP(原生):
    優:速度快。
    缺:無法跨平台使用,需學習專用程式語言。

    1. Android APP使用程式語言:Java

      1. Android Studio

      2. App inventor

    2. iOS APP使用程式語言:Object-C

      1.  Xcode

Google Android

Apple iOS

Java

Objective-C、C++

成本低、設備便宜

成本高、設備貴

Play商店上架一次付款終身使用

iTunes Store每年繳年費

軟體售價低、競爭激烈

軟體單價高、市場穩定

OS版本混亂且碎片化

OS系統穩定且資源品質高

裝置效能與螢幕解析度不一

設備單純、效能規格高

測試工作繁瑣

上架須審核

  1. Web APP(網頁):利用APP內嵌瀏覽器。
    優:可跨平台、使用Web標準技術、開發環境單純
    缺:API功能有限、速度不如原生APP,但隨著科技進步,缺點大多被解決。

    1. 手機,可接受各種sensor(如:溫度、拍照)→API功能進步。

    2. 5G時代→速度加快。

    3. 動態布局(直式、橫式)→RWD。

    4. Onsen UI:一種開源UI框架和組件,focus在行動裝置。

    5. 注重設計細節提升UX

      1. 適合裝置顯示的操作介面

      2. OS專屬使用經驗,如:iOS的HOME鍵、安卓的Home、Menu、Return鍵

      3. 按鍵、字型大小

      4. 支援離線執行→HTML5特性


傳統Web

Web APP

輸入裝置

滑鼠

手指

輸入邏輯

游標點擊、拖拉

多點觸控

可視範圍

大螢幕

小螢幕

資料瀏覽

滾輪捲動

手指滑動

動態布局

固定

旋轉

  1. Hybrid APP(混合):結合原生APP和Web APP。
    優:部分跨平台,速度尚可。
    缺:架構複雜、整合技術困難。

架構

  1. Client-Server架構

  2. 對等式架構:沒有特定伺服器,每一台電腦都是同等地位,可將各自的資源分享給其他人,達資源共享的目的。

  3. ISO(國際標準化組織)提出OSI(Open System Interconnection Model)開放式系統互聯模型 7 Layers:

    1. Physical Layer(實體層)

    2. Data link Layer(資料連結層)

    3. Network Layer (網路層)

    4. Transport Layer(傳輸層)

    5. Session Layer(會談層)

    6. Presentation Layer(表現層)

    7. Application Layer (應用層)

  4. HTTP(HyperText Transfer Protocol)超文本傳輸協定:傳統資料傳輸協定,有些技術不能用→轉成HTTPS(HyperText Transfer Protocol Secure)超文本傳輸安全協定,在傳輸過程中使用SSL/TLS進行加密。

  5. SMTP(Simple Mail Transfer Protocol)簡單郵件傳輸協定:在網路上傳輸電子郵件的標準。

  6. IP(Internet Protocol):

    1. 固定IP→須由TCP/IP設備進行設定,用於Server架設。

    2. 浮動IP→每次重新連結到網路將有不同的IP位址,減少IP使用量,避免IP位址不夠

      1. IPv4:192.168.0.0(十進位),32位元(bits)/4位元組(bytes),空間有232個位址。

        1.  A類:10.0.0.0到127.255.255.255主要分配給大量主機而區域網路數量較少的大型網路。

        2. B類:128.0.0.0到191.255.255.255一般用於國際性大公司和政府機構。

        3. C類:192.0.0.0到223.255.255.255用於一般小公司校園網研究機構等。

        4. 192.168..→私有IP(內網)

        5. D類:224.0.0.0到239.255.255.255用於特殊用途,又稱作廣播地址。

        6. E類:240.0.0.0到255.255.255.255暫時保留。

      2. IPv6:2001:0db8:86a3:08d3:1319:8a2e:0370:7344,128位元(bits),16位元為一組,分8組,每組有4位十六進位的數。空間有2128個位址。

Web技術

  1. 前端(front-end):使用者直接看到的內容,含資料呈現搜集使用者資料。

    1. HTML5

    2. CSS 3

    3. Javascript

    4. Javascript Bridge:一種與Native溝通的技術,就是Native的瀏覽器組件(WebView)與Javascript通信的通道,一般稱為WebView Javascript Bridge,也簡稱JS Bridge

    5. 有了此項即成為Hybrid APP。

    6. Bootstrap

    7. JQuery:跨瀏覽器的Javascript函式庫,簡化HTML與Javascript之間的操作。

    8. AJAX(Asynchronous Javascript and XML):非同步的Javascript與XML技術,結合多項技術的前端Web開發技術。可達到不用換頁顯示畫面切換,如:Gmail。

  2. 後端(back-end):使用者不會直接看到的內容。
    負責資料管理,如:儲存處理資料,和實做服務(商務邏輯)功能,如:演算法(algorithm)、資料結構(data sttucture)。
    含Web/Cloud Server、Database。

    1. PHP

    2. Python

    3. Javascript

    4. Ruby

    5. Perl

  • Web = 前端 + 後端
    如: Javascript+PHP→C like的
    vbscript   +ASP→basic like的

    可用<script>來指定要用的language是什麼。

  • 網址:http://xxx/x/index.html →無互動的網頁。
    http://xxx/x/index.php或.asp →有互動的網頁。

  • vb.Net、ASP.Net、C#.Net都整合在Visal Studio(VS)裡面。

Web風格

  1. MPA(Multi-Page Application):多頁

    1. 傳統設計方法。

    2. 點擊需求切換頁面,瀏覽器不停地重載(Reload)。

    3. 進入門檻低,簡單套用jQuery Mobile就可完成。

  2. SPA(Single-Page Application):單頁

    1. 利用Javascript操作DOM的技術實現各種應用。

    2. 搭配AJAX使整體介面反應速度很。如:Gmail。

    3. 門檻高。


可無結構

有結構

PHP、Python:

可以結構,也可以不要(具彈性)。

C語言:有4個區域

  1. 前置處理區:#include、#define。

  2. 全域變數/函式原型宣告。

  3. 主程式區:main()。

  4. 副程式區。

HTML:

  1. <html></html>

  2. <head></head>

  3. <body></body>



HTML

C語言

需要工具

  1. editor:可用任何文字文件編輯器來撰寫。

  2. run:瀏覽器(browser)→視覺化:把文字、數字變成圖片、影片…

IDE(如Dev C++)含:

  1. editor

  2. compiler

  3. linker

  4. debugger

  5. run


HTML(HyperText Markup Language)超文件標示語言

  • W3C全球資訊網協會:2014.10月制定HTML5

    • HTML5廣義包含:HTML、JS、CSS新技術組合

    • 目的:在行動裝置上支援多媒體,如:<vedio>播放mp4、<audio>播放mp3。

壓縮技術

MPEG1

MPEG2

MPEG4

格式檔案

.mpg = .dat

layer3→.mp3

.vob

.mp4

播放

VCD、音訊

DVD

影音

  • .avi:未壓縮的視訊檔。
    .wav:未壓縮的聲音檔。

  • 編輯器(editor)→產生原始程式:文字文件、VScode、Eclipse

    • BlueGriffon:免費、開放原始碼的HTML編輯器。

    • Frontpage:原為office系列→sharepoint designer(SPD)。要付費。

    • Dreamweaver:Adobe系列,要付費。

  • 編譯器(compiler):HTML不需要。但要有瀏覽器(browser),將HTML的文字檔視覺化。

  • 三個重要的標籤:


<html>
表示為.html的檔案,才能讓瀏覽器解讀。</html>

<head>
初始化。
</head>

<body>
主要內容。
</body>

  • HTML5第一行宣告:<!DOCTYPE>
    但現今的瀏覽器多能直接以HTML5讀,即使沒宣告似乎也能運行,保險起見還是宣告比較好。

  • 相關名詞:

    • 元素(element):HTML文件可包含一或多個element,而元素又由tag、attribute組成。依用途分2種類型:
      (1)網頁上的內容。如:<head>、<table>、<h1>(標題1)……。
      (2)用來指向其他資源。如:<img>、<video>、<audio>、<a>等。

    • 標籤(tag):

      • 有開始、結束標籤,如:<p>段落內容</p>。

      • 單獨一個標籤,如:<input>、<a>。

    • 屬性(attribute):屬性間以空白隔開。
      (1)屬性名稱:如:type、method、href、color……。
      (2)屬性值(value):前後需加雙引號(“),有些值須從預先訂義好的範圍選取,不能自訂。如:<form method=”GET”(或”POST”)>。

      • 一般屬性

      • 事件屬性(event handler content attribute):針對HTML元素的某事件設定處理程式(script),如:onclick=”…”、onload=”…”

        • 要有互動→script:
          (1)Javascript:C like的
          (2)VBscript:VB程式語言(basic)

    • 巢狀標籤(nesting tag):一個內容用多個tag包起來。
      如:<h1><b>粗體標題</b><i>斜體標題</i><h1>

    • 空白字元:瀏覽器會自動忽略空格、Enter鍵,編寫原始程式時有助於排版,但不會直接顯示在內容上,如:換行需用<br>,而不是直接Enter。

    • 特殊字元:如要顯示保留給HTML原始碼使用的特殊字元,需輸入實體名稱(entity name)或實體數值(entity number)。

特殊字元

實體名稱

實體數值

<(小於)

&lt;

&#60;

>(大於)

&gt;

&#62;

"(雙引號)

&quot;

&#34;

&

&amp;

&#38;

空白

&nbsp;

&#160;

©(版權符號)

&copy;

&#169;

‘(單引號)

&apos;

&#39;

  • <head>裡的tag:

    • <title></title>:文件標題(分頁名稱)

    • <meta>:文件相關資訊(metadata)。
      屬性有:

      • charset:編碼方式(設定字元集)。
        如:<meta charset=”UTF-8”>

        • UTF-8:萬國碼

        • BIG-5:繁體中文

      • name:metadata的名稱,可供搜尋引擎使用,有助於搜尋引擎優化。

      • content:metadaata的內容。
        如:<meta name="author" content=”Joe”> →author = Joe

      • http-equiv:取代name,因HTTP伺服器用http-equiv搜集HTTP標頭。
        如:<meta http-equiv=”content-type” content=”text/html”>

    • <link>:與其他資源的關聯。
      屬性有:

      • herf = “url”:設定連結網址。

        • 自己的(相對路徑,Relative URL)

        • 別人的(絕對路徑,Absolute URL,有關掉的風險,不推薦)

      • herflang = "language-code":設定herf屬性值的語系。

      • rel = "...":目前文件與其他資源的關聯
        如:<link herf="http://...或../xx.css" rel="stylesheet">→CSS樣式表

      • rev = “...”:目前文件與其他資源的反向關聯

      • type = “content-type”:設定內容類型。

    • <style></style>:嵌入CSS樣式,如文字顏色、網頁背景、表格的形式…。

<link>

<style>

<link rel = “stylesheet”
        type = “text/css”
        herf = “xxx.css”
(自己的,要與.html在同一路徑下)或
                  ”https://xxx.css”(別人的)>

<style>

    body { background : blue; }

</style>

只要改.css檔,易維護。

要改很多頁,維護麻煩。

  • Web APP會由許多網頁組成,這些網頁需有一致性的設計。

  • HTML 4.0以前會限制超連結的color,4.0以後不限制。

  • <base>:設定整個頁面中,所有連結類型的屬性的預設根網址 (base URL) 和預設連結目標 (base target)。

  • <script></script>:設定語言、插入script程式。放在head裡時,需要呼叫才會動作。

  • <body>

    • <body 事件屬性>:
      如:<body onload=”Javascript: alert(“Hello, world!”);”>
      載入視窗時,(不一定要指定語言),跳出視窗顯示Hello, world!

    • <form>

      • 要用表單有關的tag去layout介面,如:<input>。

      • 將表單內的資料透過<form>的屬性傳送到後端的程式(xxx.php)。
        重要屬性:

        • method = “{POST}”或"{GET}"

POST

GET

資料放置在HTML表頭(Header)上一起傳送。

透過網址傳遞資料,如:xxx.php?=4

沒有長度限制、較安全。

少量、不安全。

  • action = “url”:資料要傳送到的位址,如:xxx.php、emial

  • <input>:
    屬性:

    • type = “...”,如:

HTML 4.01

HTML 5新增

text

email

password

url

radio

search

checkbox

tel,電話號碼。

submit,送出。

number

reset

range

file,上傳檔案→accept設定提交內容類型。

color

image,圖片提交。

date

hidden,隱藏欄位。

time

button

month

select,下拉式選單。

week

textarea

datetime-local,本地日期時間。

  • disabled:取消欄位,使該欄資料無法被接受或提交。

  • 前台的程式透過<form>、<input>等tag設計出的UI和後台做連結,如果後台是單純PC、筆電,那就要安裝伺服器軟體,如:WAMP Server、LAMP Server…。

  • 網頁分割:以前用<div>,HTML5有:

    • <header>頁首

    • <main>主要內容,包含:

      • <section>區塊、區段,如網頁不同主題的區塊,或文章不同的分段。

      • <article>網頁本文,如:文章。

      • 圖片、影片。

    • <nav>導覽列

    • <footer>頁尾:放copyright、解析度、browser等。

    • <aside>側邊欄:包含摘要、廣告等可從區塊內容抽離的其他內容。

Javascript

  • Javascript是由Netscape開發的一種高階物件導向(基於原型)的直譯式(interpreter)程式語言,屬於用戶端(前端)的技術。


直譯式(interpreter)

編譯式(compiler)

做法

看到一行做一行。

  1. 檢查有無語法錯誤。

  2. 全部看完再做。

程式語言

Python、basic、PHP

C語言

  • 程式語言的類型:

    • 高階

    • 低階

    • 網頁

  • Javascript的目的:提高網頁的互動性。
    AJAX:不換頁存取資料→SPA網頁。

  • <script>

    • 在<body>中:馬上執行。

    • 在<head>中:被呼叫的函式或事件。

HTML5以前

HTML5

<script language = “javascript”>或<script type = “text/javascript”>

</script>

<script>

....

</script>

  • 在xxx.js中可放多個javascript的function。
    要和.html放在一起,.js也可用文字文件寫,副檔名存.js。

    • 引用的時候:
      <script src = “xxx.js”>
      </script>

    • 目的:

      • 避免程式碼太多

      • 很多網頁使用同一功能,Debug方便。

  • 寫javascript的注意事項:

    • 英文字母大小寫視為不同

    • Javascript保留字無法當作變數、常數、函式或物件的名稱。
      如:

      • break、case、catch、const、continue、debugger、default、do、else、finally、for、function、if、in、instanceof、new、return、switch、this、throw、try、typeof、var、void、while、with

    • 程式敘述結尾分號

    • 註解符號:

      • 多行:/*...*/

      • 單行://

    • 程式碼內縮,排版美觀方便閱讀。

  • 在javascript中for、while、do...while、if、if...else、if...elseif...、switch...case...用法跟C語言都一樣。
    如:

    • if ( 條件式 )
      {
          敘述;
      }

條件運算子

邏輯運算子

>、>=、<、<=、!=、==、===(全等於)

&&(and)、||(or)、!(not)

  • ++、--、+=、-=、*=、/=、%=

  • 寫程式的良好習慣:

    • 程式要有層次感。→用[tab]鍵縮排。

    • 要寫註解,如:

語言

註解

C

/*...*/

C++

//...

HTML

<! ... >

  • 檔案名稱、變數名稱要取有意義的。

  • 顯示結果的方法(也可用來debug):

    • JS:

      • alert(“字串");
        跳出一個視窗,把結果show在上面。

      • document.write(“字串”);
        直接將結果show在網頁上。

        • 總字串 = "字串1" + name(字串型別的變數) + "<br>"(將HTML的tag當字串,如此可執行此tag的功能。)

        • 顯示特殊符號,如:
          document.write(“&lt;”);→show出<(小於)符號。

    • 用HTML的tag。

  • 變數宣告:

    • 變數名稱不允許使用數字0~9開頭

    • 英文大小寫視為不同。

    • 命名最好有意義且與資料有關連性。

    • 允許使用中文字做變數名稱,但避免混淆不介意使用。

    • 保留字不允許做為變數名稱。

    • 注意原始碼掃描軟體,如:HP Fortify,以特定關鍵字做為變數名稱可能會有資安風險

強型別的程式語言

弱型別的程式語言

C、Java

PHP、Javascript

宣告時就要設定資料型態:
資料型態 變數名稱;
如:
int money;       //宣告整數型態的變數

money = 100;  //賦予值只能是整數

變數依附與值改變資料型態:

var 變數名稱;

如:

var money;        //宣告一變數

money = 100;   //可為int

money = 98.5;  //也可為float

  • 特殊數值:

    • NaN(Not a Number):非數值

    • Infinity:正無限大

    • -Infinity:負無限大

    • 二進位數值:0b/0B(前置詞)

    • 八進位數值:0o/0O

    • 十六進位數值:0x/0X

  • 函式:

    • 五個part:

      • name

      • input

      • output

      • 功能

      • 區域變數

C語言

Javacsript

int ADD( int x , y )  //宣告函式(引數)

{

    int sum;    //區域變數

    sum = x + y;

    [return (sum);]  //中括號表示可有可無

}

<script>

function ADD( x , y)  //宣告函式(引數)

{

    var sum;    //區域變數

    sum = x + y;

    [return (sum);]  //中括號表示可有可無

}

</script>

※回傳值的datatype要寫在函式左邊。

宣告函式只需用保留字:function。
※不管宣告或呼叫,都要包在<script></script>裡。

  1. call by address(傳址)

  2. call by value(傳值)

引數資料型別:

  1. 物件型別(DOM)→傳址。

  2. 基本型別(數值、字串)→傳值。

  • DOM(Document Object Model)文件物件模型:將HTML文件的內容物件化,希望用Javascript來存取HTML tag,為傳址呼叫。
    如:(1)windows物件:瀏覽器視窗、索引標籤(tab)、框架。
            (2)document物件:HTML本身。

    • 物件

      • 屬性

      • 事件

      • 方法,如:alert()、resizeTo(x,y)→IE有Chrome沒支援……。(有些瀏覽器有,有些無)

    • DOM tree:browser解析一份HTML時,建立一個由多個物件構成的集合,方便存取。

      • 如:

    • W3C全球資訊網協會制定標準物件模型,希望解決各browser物件不一致的問題。

      • DOM的節點:

        • Document:文件

        • Element:tag

        • Text:被tag包起來的文字

        • Attribute:tag的相關屬性

    • window.alert(“hi”);
      →全域物件(global object)/預設物件,window可省略不寫。

    • window子物件:

      • 標準內建物件:存取data、運算,如:Array。

      • 環境物件:存取browser或螢幕的資訊。

      • document物件:存取HTML文件元素。

        • document.getElementById()

        • document.getElementByName()

        • document.getElementByClassName()

    • 例子:求最大公因數(GCD)

  • HTML5提供給Javascript很多API撰寫強大功能,如:繪圖、多媒體……。

  • open()外觀參數有些browser有,有些無。

這個網誌中的熱門文章

【醫院資訊系統】筆記整理

【MIS】管理資訊系統Ch1+2

【ngrok】簡易架站