2020年1月6日 星期一

關於 React

今天參加了公司內部的一個 React 簡介課程, 雖然之前評估過不需要再去學一套前端技術, 但基於好奇心驅使, 還是去聽聽 React 是怎樣好用. 聽完覺得結論還是一樣, React 想解決的問題對我來說不存在, 因為 React 訴求的目標是解決當專案很龐大時 HTML 與 Javascript 程式碼的互動與管理的困境, 改用 React 可強化系統維護上的便利, 但我又沒在寫大型專案啊! 所以 React 與 Vue 雖然好棒, 但我應該還不需要.

倒是有人提問 Angular, React, 以及 Vue 的取捨, 老師認為 React 目前使用者最多最熱門, 應該用 React, 不建議用 Angular. 至於比較新的 Vue, 因為原創者為中國人, 教學與 API 文件很多還是簡體中文版, 在中國較為廣用, 要國際化才能擴展使用層.

我想每個人需求不同, 如果從事前端設計, 當然最好要學 React/Angular/Vue, 但學習一套技術不是三天兩天的事, 要熟練更是必須經過幾次專案洗禮. 時間有限且寶貴, 盲目追求技術潮流其實很花成本, 尤其是時間成本.

2020年1月4日 星期六

同學會小聚

因老同學大帥伉儷自廈門返台休假, 久未相聚的同學相約, 有蘇董, 建興, 還有仲仔共六人, 今日至南屏別院一樓滴水坊餐敘, 到兩點結束營業轉至至聖路口的路易莎喝咖啡, 聊到四點才散會. 已屆空巢期的我們, 相信未來要更頻繁聚會才好. 下次希望能辦成二月的月靈縱走.

固倫公主與和碩公主

去年看的 "延禧攻略" 據說出了續集 "金枝玉葉", 但主人翁已經變成魏瓔珞與乾隆的愛女昭華公主與爾晴之子福康安, 但我通常不看續集, 怕破壞了對原戲的好感 (不過韓劇 "Voice" 與 "信號" 例外, 超期待 "信號 2").

今天在下面這篇文章中學到一課 :

# 【延禧攻略續集】昭華公主原型同樣受寵 身為公主也有代價

原來前清公主有兩種封號, 皇后之女封固倫公主 (嫡出); 妃嬪之女封和碩公主 (庶出); 我一直以為清朝的公主因為滿州稱謂不同都叫格格, 原來公主與格格稱號在清朝都有, 只是地位不同罷了. 據維基百科記載, 清朝一開始確實所有宗室女皆稱格格, 但從皇太極開始模仿明制, 只有皇帝的女兒才稱公主, 親王與郡王之女才稱格格, 親王之女封為和碩格格, 郡王之女封多羅格格, 參考 :

# 固倫公主
# 和碩公主

但也有庶出皇女破格冊封為固倫公主者, "金枝玉葉" 的女主昭華公主便是一例, 其生母魏瓔珞 (魏佳氏) 生前品位只到皇貴妃, 與皇后只差一步之遙, 但因母親受寵, 七公主便破格封為固倫公主. 後來嫁給蒙古喀爾喀王公拉旺多爾濟, 但婚後五年即逝世, 年僅 20 歲, 參考 :

# 和靜固倫公主

另外一位庶出卻被破格封為固倫公主的皇女是大清最後一位公主, 咸豐皇帝的獨生女榮安公主, 生母是麗妃, 但由於慈禧與慈安無女, 因此將榮安公主視如己出般疼愛, 可惜出嫁後一年多, 就因產後感染天花而死, 年僅 19 歲, 參考 :

# 榮安固倫公主

2020年1月3日 星期五

Django CMS Mezzanine 測試 (二) : 安裝免費的主題佈景

上一篇的 Mezzanine 測試中已完成語言與基本設定, 參考 :

# Django CMS Mezzanine 測試 (一) : 安裝與系統設定

本篇則接續第一篇, 要來為網站妝點門面, 安裝免費版的主題佈景.


1. 下載免費版主題佈景 :

檔案可在 GitHub 下載 :

# https://github.com/thecodinghouse/mezzanine-themes

按右邊的 "Clone or download" 鈕, 選取 "Download ZIP" 即可下載壓縮檔, 解開後將 flat, moderna, nova, 與 solid 這四個目錄複製到第一層專案目錄 mysite 下 :






這四個目錄就是免費的主題佈景目錄.


2. 修改 setting.py 專案設定檔 : 

到第二層 mysite 專案目錄開啟專案設定檔 settings.py, 搜尋 "INSTALLED_APPS" (在 236 行左右), 在最前面加入這四個主題佈景名稱, 將選用的主題佈景名稱前面的 # 刪除 (例如此處選用 moderna) :

INSTALLED_APPS = (
    #"flat", 
    "moderna", 
    #"nova", 
    #"solid", 
    "django.contrib.admin",
    ......




將 settings.py 存檔後, 重新整理網站即變裝了, 下面是這四種布景截圖 :


moderna

Solid

nova

flat

不過主題佈景只套用到給客戶看的網站外觀, 管理頁面不受影響.

Django CMS Mezzanine 測試 (一) : 安裝與系統設定

我在市圖借了一本何敏煌寫的 "Python 新手使用 Django 架站的16堂課 (2016)", 覺得此書實用性強, 應用範例豐富, 是一本好書. 此書後來有因應 Django 2.0 出了新版 :

# Python新手使用Django架站技術實作:活用Django 2.0 Web Framework建構動態網站的16堂課 (2018)


Source : 博客來


新舊版主要的差異除了 urls.py 路由部分改寫外, 最主要的是第 14 章由原先的 "二級網域管理網站建置實務" 改為 "使用 Mezzanine 快速打造 CMS 網站", 我照其說明只用了下列四個指令就架好了一個網站:

pip3 install mezzanine
mezzanine-project mysite
python manage.py createdb
python manage.py runserver

以下就是這次的實驗記錄.

Mezzanine 意思是 '夾層', 我猜作者可能認為 Mezzanine 是 dummy 與網站架設兩者之間的夾層吧? 其官網有展示網站可試用其功能, 參考 :

# http://mezzanine.jupo.org/

教學文件參考 :

# http://mezzanine.jupo.org/docs/

以 Mezzanine 架設之網站展示參考 :

# http://mezzanine.jupo.org/sites/

原來 FireFox 網站也是用 Mezzanine 架設的, 除了可用來架設公司網站, 入口網站. 個人網站, 購物網站外, 也可以用來架設部落格, Mezzanine 可說是 Python 版的 Wordpress.

觀察 Mezzanine 測試網站原始碼, 可知它使用了 jQuery 與 Bootstrap 技術打造一個功能強大, 穩定而具有彈性的內容管理平台, 比較重要的特點如下 :
  • 內建所視即所得編輯器
  • 可選擇免費或付費之主題佈景
  • 有使用者帳號 e-mail 驗證功能
  • 可製作多語言網站 (超過 35 種語言)
  • 可與第三方 Django App 整合
參考 Pypi 網站的說明 :

# https://pypi.org/project/Mezzanine/

以下就來測試看看如何使用 Mezzanine 架設網站.


1. 安裝 mezzanine 套件 : 

使用 Mezzanine App 架站需先安裝 mezzanine 套件 :

pip3 install mezzanine 

D:\test\python\myblog>pip3 install mezzanine
Collecting mezzanine
  Downloading https://files.pythonhosted.org/packages/7f/cf/0f2cbd27edfc9568c7fad26ca217e02d209031e0298562a29040e2b75a5e/Mezzanine-4.3.1-py2.py3-none-any.whl (5.9MB)
Requirement already satisfied: requests>=2.1.0 in c:\python37\lib\site-packages (from mezzanine) (2.21.0)
Collecting requests-oauthlib>=0.4 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/a3/12/b92740d845ab62ea4edf04d2f4164d82532b5a0b03836d4d4e71c6f3d379/requests_oauthlib-1.3.0-py2.py3-none-any.whl
Collecting grappelli-safe>=0.5.0 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/3e/af/10804d792cfe4eb0029959c55169086e2d4ab02b99d88bd4d85281f48245/grappelli_safe-0.5.2-py2.py3-none-any.whl (163kB)
Collecting django-contrib-comments (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/95/df/e6f3f465d12db886262644c5fdf5cc998800232a164b981d418e9a78742c/django_contrib_comments-1.9.2-py2.py3-none-any.whl (403kB)
Collecting future>=0.9.0 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz (829kB)
Requirement already satisfied: pillow in c:\python37\lib\site-packages (from mezzanine) (5.4.1)
Requirement already satisfied: chardet in c:\python37\lib\site-packages (from mezzanine) (3.0.4)
Collecting tzlocal>=1.0 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/ef/99/53bd1ac9349262f59c1c421d8fcc2559ae8a5eeffed9202684756b648d33/tzlocal-2.0.0-py2.py3-none-any.whl
Requirement already satisfied: beautifulsoup4>=4.5.3 in c:\python37\lib\site-packages (from mezzanine) (4.7.1)
Collecting bleach>=2.0 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/ab/05/27e1466475e816d3001efb6e0a85a819be17411420494a1e602c36f8299d/bleach-3.1.0-py2.py3-none-any.whl (157kB)
Collecting filebrowser-safe>=0.5.0 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/77/f2/373598a98fe4643f4e2aeb99b2af5861a8cff75e0ab814f056b91f4d9c76/filebrowser_safe-0.5.0-py2.py3-none-any.whl (230kB)
Collecting django<1.12,>=1.8 (from mezzanine)
  Downloading https://files.pythonhosted.org/packages/a6/2b/fbd71ae0980c899c0df70779d36c5897a6b56518eb5942ddd53b0b969b30/Django-1.11.27-py2.py3-none-any.whl (6.9MB)
Requirement already satisfied: certifi>=2017.4.17 in c:\python37\lib\site-packages (from requests>=2.1.0->mezzanine) (2018.11.29)
Requirement already satisfied: idna<2.9,>=2.5 in c:\python37\lib\site-packages (from requests>=2.1.0->mezzanine) (2.8)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in c:\python37\lib\site-packages (from requests>=2.1.0->mezzanine) (1.24.1)
Collecting oauthlib>=3.0.0 (from requests-oauthlib>=0.4->mezzanine)
  Downloading https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl (147kB)
Requirement already satisfied: six in c:\python37\lib\site-packages (from django-contrib-comments->mezzanine) (1.12.0)
Requirement already satisfied: pytz in c:\python37\lib\site-packages (from tzlocal>=1.0->mezzanine) (2018.9)
Requirement already satisfied: soupsieve>=1.2 in c:\python37\lib\site-packages (from beautifulsoup4>=4.5.3->mezzanine) (1.7.3)
Collecting webencodings (from bleach>=2.0->mezzanine)
  Downloading https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
Installing collected packages: oauthlib, requests-oauthlib, grappelli-safe, django, django-contrib-comments, future, tzlocal, webencodings, bleach, filebrowser-safe, mezzanine
  Found existing installation: Django 2.2.5
    Uninstalling Django-2.2.5:
      Successfully uninstalled Django-2.2.5
  Running setup.py install for future ... done
Successfully installed bleach-3.1.0 django-1.11.27 django-contrib-comments-1.9.2 filebrowser-safe-0.5.0 future-0.18.2 grappelli-safe-0.5.2 mezzanine-4.3.1 oauthlib-3.1.0 requests-oauthlib-1.3.0 tzlocal-2.0.0 webencodings-0.5.1

可見 Mezzanine 4.3.1 版使用 Django 1.11.27, 直接安裝會把原先的 Django 2.2.5 移除, 所以最好還是用 virtualenv 於虛擬環境中做測試比較好.


2. 建立專案 : 

首先建立一個目錄 mezzanine 資料夾存放所有 Mezzanine 專案 :

D:\test\python>mkdir mezzanine
D:\test\python>cd mezzanine

然後下 "mezzanine-project 專案名稱" 指令來建立專案, 例如 :

mezzanine-project mysite

這會建立一個 mysite 專案 :

D:\test\python\mezzanine>mezzanine-project mysite 

用 tree 指令查看檔案目錄結構 :

D:\test\python\mezzanine>tree mysite /F 
列出磁碟區 Data 的資料夾 PATH
磁碟區序號為 D8A8-5056
D:\TEST\PYTHON\MEZZANINE\MYSITE
│  .gitignore
│  .hgignore
│  fabfile.py
│  manage.py
│  requirements.txt
│
├─deploy
│      crontab.template
│      gunicorn.conf.py.template
│      local_settings.py.template
│      nginx.conf.template
│      supervisor.conf.template
│
└─mysite
        local_settings.py
        settings.py
        urls.py
        wsgi.py
        __init__.py

可見基本上就是 Django 的架構.


3. 建立資料庫與後台管理帳密 : 

首先切換到專案目錄 mysite 底下 :

D:\test\python\mezzanine>cd mysite   

然後執行下列命令來建立資料庫, 它會建立 Mezzanine 網站系統運作所需之資料表, 建完後會要求設定後台管理者帳密 :

python manage.py createdb

D:\test\python\mezzanine\mysite>python manage.py createdb
Operations to perform:
  Apply all migrations: admin, auth, blog, conf, contenttypes, core, django_comments, forms, galleries, generic, pages, redirects, sessions, sites, twitter
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sites.0001_initial... OK
  Applying blog.0001_initial... OK
  Applying blog.0002_auto_20150527_1555... OK
  Applying blog.0003_auto_20170411_0504... OK
  Applying conf.0001_initial... OK
  Applying core.0001_initial... OK
  Applying core.0002_auto_20150414_2140... OK
  Applying django_comments.0001_initial... OK
  Applying django_comments.0002_update_user_email_field_length... OK
  Applying django_comments.0003_add_submit_date_index... OK
  Applying pages.0001_initial... OK
  Applying forms.0001_initial... OK
  Applying forms.0002_auto_20141227_0224... OK
  Applying forms.0003_emailfield... OK
  Applying forms.0004_auto_20150517_0510... OK
  Applying forms.0005_auto_20151026_1600... OK
  Applying forms.0006_auto_20170425_2225... OK
  Applying galleries.0001_initial... OK
  Applying galleries.0002_auto_20141227_0224... OK
  Applying generic.0001_initial... OK
  Applying generic.0002_auto_20141227_0224... OK
  Applying generic.0003_auto_20170411_0504... OK
  Applying pages.0002_auto_20141227_0224... OK
  Applying pages.0003_auto_20150527_1555... OK
  Applying pages.0004_auto_20170411_0504... OK
  Applying redirects.0001_initial... OK
  Applying sessions.0001_initial... OK
  Applying sites.0002_alter_domain_unique... OK
  Applying twitter.0001_initial... OK

A site record is required.
Please enter the domain and optional port in the format 'domain:port'.
For example 'localhost:8000' or 'www.example.com'.
Hit enter to use the default (127.0.0.1:8000):

Creating default site record: 127.0.0.1:8000 ...


Creating default account ...

Username (leave blank to use 'user'): admin     (網站管理員帳號)
Email address: blablabla@ms5.hinet.net           (網站管理員郵箱)
Password:                                                           (網站管理員密碼)
Password (again):
Superuser created successfully.
Installed 2 object(s) from 1 fixture(s)

Would you like to install some initial demo pages?
Eg: About us, Contact form, Gallery. (yes/no): yes    (建立預設網頁)

Creating demo pages: About us, Contact form, Gallery ...

Installed 16 object(s) from 3 fixture(s)

D:\test\python\mezzanine\mysite>

這樣就架好一個網站了. 但是在瀏覽這個網站之前, 需先將專案設定檔 settings.py 中的 ALLOWED_HOSTS 設定為任何主機皆可瀏覽 :


4. 設定允許瀏覽之主機 :

開啟專案設定檔 settings.py, 大約在 94 行左右有一個 專案設定檔 ALLOWED_HOSTS 參數, 原本為一個空陣列 :

ALLOWED_HOSTS = [ ]

在陣列中加入 '*' 後存檔 :

########################
# MAIN DJANGO SETTINGS #
########################

# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
ALLOWED_HOSTS = ['*']


5. 開啟開發伺服器瀏覽網站 :

開啟命令提示字元視窗, 以下列指令開啟開發伺服器 :

python manage.py runserver

若出現如下訊息表示伺服器已啟動成功 :

D:\test\python\mezzanine\mysite>python manage.py runserver   
              .....
          _d^^^^^^^^^b_
       .d''           ``b.
     .p'                `q.
    .d'                   `b.
   .d'                     `b.   * Mezzanine 4.3.1
   ::                       ::   * Django 1.11.27
  ::    M E Z Z A N I N E    ::  * Python 3.7.2
   ::                       ::   * SQLite 3.21.0
   `p.                     .q'   * Windows 10
    `p.                   .q'
     `b.                 .d'
       `q..          ..p'
          ^q........p^
              ''''

Performing system checks...

System check identified no issues (0 silenced).
January 03, 2020 - 00:21:22
Django version 1.11.27, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

在瀏覽器網址列輸入 http://127.0.0.1:8000/ 即可看到此專案之預設網頁了 :




Bingo! 一個專業網站馬上就架好了!

按首頁第一個超連結 "Log in to the admin interface" 以上面安裝時設定之管理者帳密登入即可進入後台管理介面的 dashboard (後台儀錶板) :






正中央就是部落格貼文區, 輸入標題與內容後按 "Save Draft" 儲存會出現文章列表頁面, status 欄顯示此文為 Draft (草稿), 必須將其切換為 Published 才會真正顯示在網站上, 按 Dashboard 右上角的 "View site" 即可瀏覽網站 :




6. 語言介面設定 :   

Mezzanine 預設為英文版, 但這是指管理介面而言, 內容貼任何語言都沒有問題. Mezzanine 支援 I18N 國際化 (至少 35 種語言), 如果要將 Mezzanine 介面中文化, 需修改 Django 的 settings.py 設定檔.

開啟專案目錄 mysite 底下的 settings.py, 搜尋 "USE_I18N" 會在 130 行找到原始設定 USE_I18N = False, 將其改為 True :

USE_I18N = True 




其次要修改 TIME_ZONE 時區設定 (104 行), 將原始值 'UTC' 改為 'Asia/Taipei' :

TIME_ZONE = 'Asia/Taipei' 

接著修改 LANGUAGE_CODE 語言碼設定 (111 行), 將預設值 "en" 改為 "zh-tw" :

LANGUAGE_CODE = "zh-tw"

然後是修改 LANGUAGES 列表, 將預設的 ('en', _('English') 改為 ('zh-tw', _('繁體中文') :

LANGUAGES = (
    ('zh-tw', _('繁體中文')),
)




這樣就修改完畢了, 但最後最重要的一點是, 因為在 settings.py 中使用了中文, 所以必須在第一行添加 # coding=UTF-8 :

# coding=UTF-8

而且在存檔時必須選擇用 UTF-8 格式 :




然後回命令提示字元視窗按 Ctrl+C 停止開發伺服器, 再重新啟動伺服器 :

D:\test\python\mezzanine\mysite>python manage.py runserver 

這時重新整理 Dashboard 管理網頁即變成中文介面了 :




注意, 上面 settings.py 第一行添加 # coding=UTF-8 以及用 UTF-8 存檔缺一不可, 否則會在啟動開發伺服器時出現錯誤.


7. 網站基本設定 :

在 Dashboard 後台儀表板往下拉, 有一個 "站點 (Site)" 區塊, 點其中的 "設定 (Setup)" 可進行網站基本設定, 例如網站標題 (Title), 是否允許吳帳號留言, 留言通知信箱, twitter 認證金鑰等等 :







2020年1月2日 星期四

購買樂捷一年份 (12 盒)

爸的樂捷已吃完, 他說效果感覺不錯, 所以繼續買一年份 :




這次沒有折價券可用, 故單價每盒 1375 元, 平均每顆約 22.9 元.

之前購買紀錄 :

# 購買長春樂活樂捷
# 購買樂活樂捷

2020年1月1日 星期三

關於 ionic 框架

最近在 Amazon 看到一些 ionic 的書, 好奇這又是甚麼新玩意, 就去稍微了解一下, 原來這是一套開發跨平台 App 的框架 (開源), 底層是基於 AngularJS 與 Cordova, 可以使用 Angular, React, 與 Vue 的 UI 元件於手機軟體設計, 參考 :

# https://en.wikipedia.org/wiki/Ionic_(mobile_app_framework)

原來 Angular/React/Vue 還有這用途, 但看了下面兩個教學之後, 覺得設計 App 就用 App Inventor 或者用 HTML5 + Cordova 去轉就好啦, 幹嘛這麼費力氣去學新的東西呢?

# 初探 ionic framework
# Ionic 4 第一次接觸

好書 : 專買黑馬股 出手就賺30%

今天收到城邦網站信函 :

"「城邦讀書花園」祝您生日快樂!2020-01-07 前於城邦讀書花園網站購買城邦全書系單書,可享7天7折購書優惠。(不限結帳次數喔)"

上城邦網站挑選想看的書, 找到陳忠憲這本 "專買黑馬股 出手就賺30%", 可惜要二月才出版, 這次不能用生日禮 7 折價買, 因此先記錄下來.


Source : 城邦


投資最重要的是吸取別人的智慧, 建立自己的系統, 然後重複自動操作, 多出來的時間要用來追求自己的興趣. 學問有層次, 哲學與藝術是頂層, 科學與技術在中間, 投資屬於最底層, 但沒有底層的支持, 上層結構哪能踏實呢.

2020 新年計畫

今天是 2020 開春第一天, 應該為新的一年釐清戰略目標, 所以我昨晚盤點了那興趣過於廣泛的腦子, 拋棄不切實際的空泛妄想, 濃縮成下列四大項期望清單 :

1. 資料科學 & 機器學習 :
  • PyTorch 學習
  • Julia
2. 網路服務 :
  • AWS 實作與認證
  • Git/GitHub 學習
3. 物聯網 :
  • Arduino & ESP32 & ESP8266 物聯網實作
  • LoRa 技術學習
4. 學術 :
  • 統計學 with R & Python
  • 重讀微積分
物聯網實作部分主要是已拖了兩年的菜園灌溉給水與居家安全監控系統, 希望在新的一年能真的實現這些項目. AWS 是 2020 第一季的重中之重, 既然被挑選上戰場, 就要打一場漂亮的勝仗. 雖然 AWS 不是我口袋內的學習目標, 但人生偶然有時卻是必然, 誰知道呢.

IT 基礎技術除了 Python 與 R 語言的學習需要再深化外, 其它都已在過去一年充分掌握且整理好筆記, 只要偶而複習充電一下維持戰力即可 :

程式語言 :
  • Python
  • R 語言
  • Javascript 
  • PHP
網頁框架 :
  • Django
  • jQuery UI
  • EasyUI
  • Bootstrap
嗯, 這樣就夠了, 不要再去妄想學習 Go, Vue, Azure 還是 Wireshark 甚麼的, 並不是心有多大路就有多寬, 老狗只要專心玩自己的老把戲就好棒棒了.

jQuery 學習筆記索引

我大概在 2008 年開始接觸學習與使用 jQuery, 十幾年來斷斷續續寫下少許筆記, 但最近用 Google 搜尋卻沒找到幾篇, 所以還是靠自己手工做索引較實在. 最近因為重寫系統需要用到 Ajax, 把十年前學過的 jQuery 複習了一遍, 因為當時沒時間寫筆記, 所以現在才要花時間找書重讀, 如果有筆記就可以迅速恢復功力了.

這次改採打游擊策略, 以主題為軸心來整理較靈活, 放棄按部就班的系統性寫法, 前後關係就靠索引來編排啦. jQuery 參考書目如下 :
  1. 鋒利的 jQuery (佳魁)
  2. 打造 jQuery 網頁風暴 (佳魁)
  3. jQuery 應用程式設計極速上手 (上奇)
  4. jQuery 高手精技 (旗標)
  5. jQuery 實戰手冊第三版 (碁峰)
  6. jQuery 最強圖解實戰講座 (旗標)
  7. JavaScript 函數活用範例速查辭典 (博碩)
  8. JavaScript & jQuery-The Missing Manual (O'Reilly)

2013~2014 年 :

# 模仿 jQuery 的 $ 工廠函數
# 測試 jQuery 的 Ajax 方法 load()
# jQuery 的 val() 設值問題 (setter)
# 核取方塊 Checkbox 的存取方法

2019 年 :

# jQuery 還要學嗎?
# 測試 jQuery 的 Ajax 函數 $.ajax()
# jQuery 的工具函數測試
# 擴充 jQuery 的工具函數
# jQuery 的 Ajax 捷徑函數測試

2020 年 :

# jQuery 常用技法整理


jQuery 官方教學文件參考 :

# https://api.jquery.com/
# jQuery API 中文文档

2020 筆記第一篇就給 jQuery 吧! 學了一半的 Vue 的決定暫停, 因為學多不如學精, 所以我想從最熟悉的 jQuery 再出發!

~進行中~