
編可視化程序設計技術及應用培訓
01
HelloWorld
環境安裝
課程簡介
平臺簡介
HelloWorld
Hello World(小程序)
02
控件
參考代碼
網格布局
堆棧布局
滾動視圖
超鏈接按鈕
彈出信息
開關
滑塊與數據綁定
網格布局(小程序)
開關(小程序)
03
高級控件
參考代碼
VisualStateManager
顯示一組數據
控件的套路
顯示一組數據(小程序)
04
管理數據
數據的類型
管理零散的數據:偏好存儲
管理批量的數據:數據庫
訪問遠程數據:Web服務
管理零散的數據:偏好存儲(小程序)
管理批量的數據:數據庫(小程序)
訪問遠程數據:Web服務(小程序)
參考代碼
05
Model-View-ViewModel(MVVM)模式
MVVM模式簡介
ViewModel與可綁定屬性
可綁定命令
ViewModelLocator與依賴注入
全局資源與數據綁定
重新審視MVVM
數據綁定的技術本質
可綁定命令的技術本質
MVVM的小程序實現(小程序)
參考代碼
06
MVVM + IService架構
重構Database項目
RelayCommand與Live Template
IService
實現IService
整合ViewModel與IService
View與ViewModelLocator
反思MVVM + IService架構
定義并實現Service(小程序)
整合ViewModel與Service(小程序)
參考代碼
07
開啟Dpx項目:重新審視數據庫
項目模板
參考代碼
主從項目模板
了解詩詞數據庫
詩詞類與實體關系映射
布局屬性與字符串常量
預覽屬性與可忽略映射
設計詩詞存儲服務接口
編碼規范
實現詩詞存儲1:const與static readonly
實現詩詞存儲2:創建嵌入式資源文件
實現詩詞存儲3:部署嵌入式資源文件
實現詩詞存儲4:追蹤數據庫版本
實現詩詞存儲5:操作數據庫
08
源代碼管理
簡介
創建項目
同步代碼
解決沖突
撤銷更改
分支開發
09
單元測試數據庫
創建測試項目
斷言文件是否存在
測試初始化數據庫
為測試而修改設計1:剝離無法測試的代碼
Mock接口與清理副作用
測算代碼覆蓋率
驗證Mock函數調用
Mock函數功能
測試幫助類
為測試而修改設計2:關閉數據庫
完成測試
10
搜索結果頁View與ViewModel
搜索結果頁View:準備工作
設計時數據
在ListView的底端顯示數據
搜索結果頁ViewModel:準備工作
無限滾動:準備工作
無限滾動:實現
在頁面顯示時加載數據
單元測試可綁定屬性
單元測試可綁定命令
連接View與ViewModel:準備工作
將命令關聯到事件
為測試運行而修改設計
無限滾動:設置控件行為
11
開啟Dpx-Mini項目:小程序數據庫(小程序)
創建項目(小程序)
數據庫服務(小程序)
詩詞存儲服務:定義成員變量(小程序)
詩詞存儲服務:獲取一條數據(小程序)
詩詞存儲服務:獲取一組數據(小程序)
搜索結果頁:定義成員變量(小程序)
搜索結果頁:在頁面顯示時加載數據(小程序)
搜索結果頁:為無限滾動載入數據(小程序)
搜索結果頁:關聯View與ViewModel(小程序)
搜索結果頁:使用wxs處理View數據
搜索結果頁:界面美化
12
導航
導航服務接口
導航功能介紹
訪問MainPage
Xamarin.Forms的NavigationPage
導航與MVVM + ISerivce架構
定義頁面鍵
創建頁面實例:不優雅的做法
緩存頁面實例
使用內容導航服務
創建頁面實例:優雅的做法
帶參數導航:介紹
帶參數導航:自定義可綁定屬性
帶參數導航:綁定到自定義可綁定屬性
帶參數導航:賦值到自定義可綁定屬性
13
值轉換器
詩詞詳情頁
定義值轉換器
單元測試值轉換器
使用值轉換器
向可綁定命令傳遞參數
帶參數的可綁定命令
單元測試帶參數的可綁定命令
使用值轉換器向可綁定命令傳遞參數
反思帶參數導航與值轉換器
14
導航(小程序)
準備工作(小程序)
內容導航服務(小程序)
詩詞詳情頁:按條件生成CSS(小程序)
詩詞詳情頁:處理縮進(小程序)
調用導航服務(小程序)
測試導航服務(小程序)
15
收藏存儲
設計收藏存儲服務
設計收藏Model
更新收藏存儲服務的設計
實現收藏存儲服務
準備單元測試
測試收藏存儲
在詩詞結果頁上顯示收藏狀態:ViewModel部分
在詩詞結果頁上顯示收藏狀態:View部分
Switch控件的神奇問題
修復收藏存儲的錯誤
16
收藏存儲(小程序)
收藏存儲:讀取數據(小程序)
收藏存儲:保存數據(小程序)
在詩詞結果頁上顯示收藏狀態:讀取數據(小程序)
在詩詞結果頁上顯示收藏狀態:保存數據(小程序)
17
LINQ、線程安全與事件
準備詩詞收藏頁ViewModel
LINQ與await
詩詞收藏頁View
詩詞收藏頁的數據重復加載問題
線程安全問題
兩階段加鎖
跨頁面同步數據:簡介
跨頁面同步數據:定義事件
跨頁面同步數據:處理事件
跨頁面同步數據:單元測試事件
18
事件(小程序)
詩詞收藏頁(小程序)
在回調函數中關聯數據(小程序)
回調函數與變量的作用域(小程序)
利用回調函數實現事件(小程序)
19
根導航
設計根導航服務
實現根頁面激活服務
實現根導航服務
導航菜單頁View
導航菜單頁ViewModel
整合導航菜單頁View與ViewModel
初始化App:初始化頁ViewModel
初始化App:初始化頁View
解決根導航的錯誤
20
根導航(小程序)
小程序根導航(小程序)
21
跨設備同步數據
跨設備同步功能介紹
為同步更新設計:本地數據
設計遠程收藏存儲服務
設計同步服務接口
實現同步服務
同步算法
單元測試同步服務
22
與OneDrive同步
安裝Microsoft Graph客戶端
注冊App ID
基于OneDrive的遠程收藏存儲
登錄到OneDrive
測試登錄
其他與登錄有關的函數
壓縮收藏數據
上傳收藏數據到OneDrive
從OneDrive下載收藏數據
數據同步頁ViewModel
數據同步頁View
23
訪問Web服務
設計詩詞推薦服務接口
可以使用拼音命名變量么?
訪問Web服務:錯誤的方法
HttpClient存在的問題
處理網絡異常
在主線程上執行UI交互
優雅地生成錯誤信息
將非正常HTTP狀態碼處理為異常
簡測GetToken函數
獲取詩詞推薦
簡測GetTodayPoetry函數
生成隨機推薦
總結
24
單元測試Web服務
簡介
使用SoapUI Mock Web服務
使用SwitchHosts解析域名
反向代理服務器:簡介
安裝node-http-proxy
準備KeyTool
使用KeyTool生成密鑰存儲
使用KeyStore Explorer生成p12文件
將p12證書導入到操作系統
為服務器生成證書
Mock HTTPS Web服務
單元測試Web服務客戶端
Mock并測試Sentence服務客戶端
總結
25
文件的下載與緩存
簡介
設計今日圖片服務
設計今日圖片存儲服務
利用圖片存儲服務讀取圖片
理解必應每日圖片服務
檢查圖片更新的策略與方法
測試TodayImageService
實現圖片存儲服務
詩詞推薦頁ViewModel
詩詞推薦頁View
將字節數組轉換為圖像源
多線程
深入await/async
深入依賴注入
26
訪問Web服務(小程序)
警告服務(小程序)
偏好存儲(小程序)
生成錯誤信息(小程序)
訪問今日詩詞服務:準備工作(小程序)
訪問今日詩詞服務:獲得Token(小程序)
訪問今日詩詞服務:獲得詩詞推薦(小程序)
生成隨機推薦(小程序)
27
顯示圖片與檢查更新(小程序)
圖片信息存儲服務(小程序)
今日圖片服務(小程序)
今日推薦頁ViewModel(小程序)
今日推薦頁View(小程序)
28
服務器端身份驗證
服務器端開發的基礎設施:自有服務器
服務器端開發的基礎設施:云服務器
服務器端開發的平臺選擇:XaaS
服務器端開發的平臺選擇:Azure Functions
身份驗證服務提供商:Auth0
設計服務器端身份驗證服務
為安卓項目準備身份驗證
安卓項目的身份驗證服務
注冊Auth0
注冊GitHub APP ID
獲得訪問Token
認識JWT Token
iOS項目的身份驗證服務
UWP項目的身份驗證服務
實現自己的身份驗證服務:使用IdentityServer
準備Azure遠程收藏存儲
實現Azure遠程收藏存儲
測試客戶端
設計服務器端身份驗證服務
實現服務器端身份驗證服務
首個Function:Ping
29
服務器端授權
簡介
服務器端鍵值存儲:Azure Table Storage
連接到Table Storage:使用AzureStorageAccountProvider
服務器端授權服務
準備授權數據庫
測試服務器端授權服務
30
服務器端函數
設計并實現服務器端收藏存儲服務
服務器端依賴注入
實現保存函數
測試保存函數
實現讀取函數
完成客戶端
測試客戶端
31
ViewModel in ViewModel
小ViewModel
大ViewModel
用于ViewModel in ViewModel的View
動態LINQ簡介
實現動態LINQ
測試動態LINQ
完結項目
32
ViewModel in ViewModel(小程序)
實現VM in VM(小程序)
用于VM in VM的View(小程序)
支持VM in VM的事件(小程序)
生成動態查詢(小程序)
云函數概覽(小程序)