前端筆記之微信小程式(一)初識微信小程式&WXSS與CSS|WXML與HTML的差異&像素和DPR

来源:https://www.cnblogs.com/rope/archive/2019/08/07/10744553.html
-Advertisement-
Play Games

一、小程式概述 2017 年 1 月 9 日小程式正式上線,騰訊開放了個人開發者開發小程式,小程式從此就開始火爆,這一年,小程式狂攬 4 億用戶、1.7 億的日常活躍,上線 58 萬個。這是一個巨大的機會,對於企業宣傳,拉新用戶存在變革性的影響。 小程式的本質是:輕應用,就是不用安裝就能使用的手機A ...


小程式概述

2017 1 9 日小程式正式上線,騰訊開放了個人開發者開發小程式,小程式從此就開始火爆這一年,小程式狂攬 4 億用戶、1.7 億的日常活躍,上線 58 萬個。這是一個巨大的機會,對於企業宣傳,拉新用戶存在變革性的影響。

 

小程式的本質是:輕應用,就是不用安裝就能使用的手機APP

“跳一跳”養成了大家下拉尋找常用小程式的習慣。

小程式對開發者而言也是非常友好的。

微信就是一個“虛擬機”,小程式使用JavaScript編程,小程式將JavaScript翻譯為機器能夠識別的JavaOC等語言,能操作硬體,比如蜂鳴器、陀螺儀、相冊、閃關燈、攝像頭。

小程式屏蔽了手機操作系統之間的差異,我們寫iOS的小程式、安卓的小程式是不需要考慮系統的差異的。


二、小程式開發賬號註冊

一個人最多只能有5個小程式項目,只能有5個小程式AppID,公司賬戶可以有20個小程式項目。

https://mp.weixin.qq.com/

 

去自己的郵箱點擊激活右鍵的超級鏈接:

 

然後在打開的頁面選擇個人開發者,需要讓你填寫身份證號碼和用戶真實姓名,這裡為了隱私就不截圖了。


 

三、獲得AppID下載使用開發者工具

https://mp.weixin.qq.com/ 登錄

 

3.1 添加小程式信息

 


3.2 添加開發者

可以有15個人為我們的小程式進行測試。

 

 

最高管理員有所有的許可權:

 

 

添加了一些同學當做體驗者許可權:

 


3.3 獲得AppID

 

即可看到AppID,備份好。

 


3.4 開發者工具

微信官方的開發者工具,集項目創建、開發、調試於一身。

下載地址:

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

 

安裝完畢之後,使用:

 

勾選「建立普通快速啟動模板」後,會為項目生成一份Hello World代碼,這樣可以方便我們瞭解小程式框架的代碼目錄結構。你也可以對比看看不勾選時建立的空項目是如何的。

 

微信小程式開發工具集成度很高:

實時調試熱更新

腳手架起步

預覽自動打包

控制台有網路請求和console,集成了Chrome瀏覽器的功能

 

由於開發條件的限制,不可能對所有尺寸手機的屏幕進行測試,但往往很多bug出現在屏幕適配的問題上,所以這些提供了很多屏幕尺寸進行測試。

 


四、小程式程式開發初步

4.1 認識預設的文件夾結構

當創建“預設普通快速啟動模板”之後,項目會自動創建了一些文件。把這樣的能夠幫我們起步的工具叫做“腳手架”。React,有腳手架React-cliVue有腳手架vue-cli還有第三方腳手架,比如yeoman

 

零散文件:

 

app.js

微信小程式本質上JavaScript開發,程式都是.js結尾的。

app.js這個文件是整個小程式的第一個入口文件。寫法必須是App({})App函數是小程式內置的,每個項目必須有且只能有一個,必須出現在app.js中。大括弧中描述這個App的一些生命周期全局數據

app.json

小程式當前項目的“程式配置”。可以配置小程式有哪些頁面,標題欄,tab欄等內容。

app.wxss

小程式的全局的樣式表,小程式使用wxss而不是css,基本上和css差不多。這個樣式表是所有頁面都能夠看見的樣式。

project.config.json

項目配置文件

通常大家在使用一個工具的時候,都會針對各自喜好做一些個性化配置,例如界面顏色、編譯配置等,當你換另外一臺電腦重新安裝工具時,還要重新配置。

project.config.json文件就是為了減少開發者重覆配置開發工具而產生的,通過json數據格式,每個小程式項目都在配置文件里定義了開發者習慣的配置參數,無論開發環境如何變更,只要載入同一個項目的代碼包,開發者工具就通過project.config.json自動恢復開發項目的個性化配置,其中會包括編輯器的顏色、編輯設置、代碼上傳時自動壓縮等等一系列選項。

關於其他配置項細節可以參考文檔「開發者工具的配置」 。

事實上這個文件不需要手動更改,可以在菜單中可視化面板進行更改。

 

 

page.json頁面配置文件

作為頁面的個性化配置,page.json里只能定義app.jsonwindow 相關的配置項,這部份比較簡單,可以直接參考文檔「小程式的配置 page.json」,這裡不作贅述。

 

刪除app.js文件大括弧中的預設配置:

App({ });

看一下pages文件夾,文件夾中的子文件夾就是小程式的一個個頁面。一個頁面就是一個文件夾。

 

每個頁面文件夾中,有四個文件,都是同名文件。

.js

頁面的程式邏輯

.json

頁面的配置

.wxml

頁面的結構,類似於HTML

.wxss

頁面的樣式表

 

 

index.wxml的頁面刪除乾凈:

<view class="container">
    <view>你好,我是小程式</view>
</view>

 

index.js文件刪乾凈:

Page({  });

這裡Page函數是內置的函數,表示創建一個頁面。大括弧中的內容是頁面的一些生命周期、數據。

 

刪除logs文件頁面,和utils文件夾,此時項目非常乾凈:

 


4.2 app.json全局配置

每個小程式都是由多個頁面組成的,但在這些頁面之上,存在被所有頁面共用的內容,比如標題顏色,網路超時設置等,這些被統稱為「全局配置」,而app.json文件里保存的就是這些配置內容。

全局配置」包含5個部份,包括 :

 pages 「頁面路徑」:用於指定小程式里所有頁面對應的目錄路徑,只有加入到這個配置項里,頁面才會生效

 window「視窗表現」:用於指定小程式視窗的外觀表現,比如上面提到的標題顏色、背景顏色等等

 tabBar「底部tab:小程式允放進開發者設置底部tab進行頁面切換,這個配置項就是用於定義底部tab按鈕樣式

 networkTimeout「網路請求超時」:在開發小程式的開發過程中,不可避免會出現網路請求失敗的情況,如果沒有設置一個網路超時時間,在出現錯誤的時候,小程式就會一直等待請求響應數據,如果有了超時時間,在超過設置的時間沒有收到數據時,我們可以為用戶輸出異常反饋信息,並引導用戶後續可以嘗試的操作,提高程式代碼的可用性

 debug「調試模式」:開啟調試模式時,調試信息會輸出到控制台里,包括頁面路由,數據更新,事件觸發等,可以幫助開發者快速定位常見問題。
關於其他配置項細節可以參考文檔「小程式的配置 app.json

 

手冊:https://developers.weixin.qq.com/miniprogram/dev/framework/config.html


4.2.1 pages配置

接受一個數組,每一項都是字元串,來指定小程式由哪些頁面組成。每一項代表對應頁面的【路徑+文件名】信息,數組的第一項代表小程式的初始頁面。小程式中新增/減少頁面,都需要對 pages 數組進行修改。

 

文件名不需要寫文件尾碼,因為框架會自動去尋找路徑下 .json, .js, .wxml, .wxss 四個文件進行整合。

 


4.2.2 window配置

程式就兩個東西:API、演算法,API不用背,演算法忘不掉。

 

{
    "pages": [
        "pages/index/index",
        "pages/haha/haha"
    ],
    "window": {
        "backgroundTextStyle": "light",
        "navigationBarBackgroundColor": "#2bb",
        "navigationBarTitleText": "小灰灰的家",
        "navigationBarTextStyle": "white",
        "backgroundColor" : "#eee"
    }
}
示例代碼

 


4.2.3 tabBar配置

tabBar的屬性:

 

 

其中list屬性數組項的屬性

 

 

更改之後的完整的app.json文件:

{
  "pages":[
    "pages/index/index",
    "pages/meishi/meishi",
    "pages/lvyou/lvyou"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#2bb",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  },
  "tabBar": {
        "color": "#eee",
        "selectedColor": "#2bb",
        "backgroundColor": "#fff",
        "list": [
            {
                "text": "首頁",
                "pagePath": "pages/index/index",
                "iconPath": "images/i1_a.png",
                "selectedIconPath" : "images/i1_b.png"
            },
            {
                "text": "美食",
                "pagePath": "pages/meishi/meishi",
                "iconPath": "images/i2_a.png",
                "selectedIconPath": "images/i2_b.png"
            },
            {
                "text": "旅游",
                "pagePath": "pages/lvyou/lvyou",
                "iconPath": "images/i3_a.png",
                "selectedIconPath": "images/i3_b.png"
            }
        ]
    }
}

 


4.3小程式開發語言

小程式採用 WXML + WXSS + JS 三種開發語言組合,其和網頁編程採用的 HTML + CSS + JS 類似,WXML 用來描述當前這個頁面的結構,WXSS 用來描述頁面的樣式,JS 用來處理這個頁面和用戶的交互。


4.3.1 WXML

WXMLWeXin Markup Language)和 HTML 類似,也有標簽和屬性,但針對小程式平臺做了些優化。

相較 HTML,小程式的標簽顯得更加簡潔,比如 divsectionheader等塊級標簽統一為view、pspanb 等文案類標簽統一為text,同時新增很多實用標簽,比如 picker 滾動選擇器、map 地圖、web-view 網頁容器等。

可以簡單理解為,小程式所有的標簽都是原生組件。

 


4.3.2 WXSS

WXSSWeXin Style Sheets)是微信定義的一套樣式語言,其具有 CSS 大部分特性,同時為了更適合開發微信小程式,WXSS CSS 進行了擴充以及修改。

小程式使用 rpxresponsive pixel)作為尺寸單位。屏幕寬度固定為 750rpx,設置了 rpx 單位的元素可以根據屏幕寬度進行自適應,所以設計稿統一以 750px 輸出(iPhone 6 標準)。

小程式沒有 html body標簽,如果想要設置頁面的樣式,可以直接使用 page 選擇器:

page{ background: #FFFFFF; }

4.3.3 JavaScript

小程式中JavaScript沒有 windowdocument 等變數,大部分瀏覽器中全局方法會被禁用,比如 alert。但也有部分被支持,比如 setTimeoutencodeURIComponent等,具體可以在開發者工具中嘗試使用,官方文檔並沒有詳細的介紹


 

 

五、WXSS與CSS的開發差異

5.1選擇器

小程式官網上只列出6種可支持的選擇器,實際上可支持的選擇器很多。通過圖表,我們可以對比WXSS與CSS選擇器的差異:

 

選擇器

WXSS官方公佈可用

目前WXSS版本實際可用

CSS版本可用

.class

O

O

CSS1

#id

O

O

CSS1

*

X

X

CSS2

element

O

O

CSS1

element,element

O

O

CSS1

element element

X

O

CSS1

element>element

X

X

CSS2

element+element

X

X

CSS2

element1~element2

X

X

CSS3

[attribute]

X

X

CSS2

[attribute=value]

X

X

CSS2

[attribute-=value]

X

X

CSS2

[attribute\=value]

X

X

CSS2

:link

X

X

CSS1

:visit

X

X

CSS1

:active

O

O

CSS1

:hover

X

X

CSS1

:focus

X

O

CSS2

:first-letter

X

O

CSS1

:first-line

X

O

CSS1

:first-child

X

O

CSS2

:last-child

X

O

CSS3

:before

O

O

CSS2

:after

O

O

CSS2

:lang

X

X

CSS2

:first-of-type

X

O

CSS3

:last-of-type

X

O

CSS3

:only-of-type

X

O

CSS3

:only-child

X

O

CSS3

:nth-child(n)

X

X

CSS3

:nth-last-child(n)

X

X

CSS3

:nth-of-type(n)

X

X

CSS3

:nth-last-of-type(n)

X

X

CSS3

:root

X

O

CSS3

:empty

X

X

CSS3

:target

X

X

CSS3

:enabled

X

X

CSS3

:disabled

X

X

CSS3

:checked

X

X

CSS3

:not(selected)

X

X

CSS3

::selection

X

X

CSS3

                   註:表格中的可用性是經過測試得出,小程式升級迭代可能發生變化。


5.2適配

rpx,即responsive pixel,是微信小程式團隊推出的彈性單位。它規定屏幕寬度為750rpx,可以根據屏幕寬度進行自適應。

rpx最大的優勢在於,寬度為750px的設計稿不再需要進行任何轉換即可完成適配。750px的設計稿上,量出來是多少px,就是多少rpx。舉個例子,iphone6的屏幕寬度為375px,共有750個物理像素,也就是1px有2個物理像素,則750rpx=375px=750物理像素,即:1rpx=0.5px=1物理像素。

如果設計稿尺寸為640px,那麼1px=640/750rpx,。所以小程式的視覺設計稿應該儘量使用750px。

另外,微信小程式也支持rem尺寸單位,rem和rpx的換算關係:
rem: 規定屏幕寬度為20rem;
在寬度為750px的設計稿中,1rem = (750/20)rpx = 37.5px;
在寬度為640px的設計稿中,1rem = (640/20)rpx = 32px。

rpx實際上就是系統級的rem(把頁面按比例分割750份,1rpx=window.innerWidth/750),或者scale伸縮佈局的width=750。也就是說,微信小程式的rpx幫大家把rem中設置根元素字體尺寸這步省了,或者減少了scale伸縮佈局不能開啟GPU raster的問題。


5.3樣式級聯

表格中提到的“element element”,是一種常見的級聯方式。

<!-- WXML-->

上面一段代碼中,我們讓圖片具2像素,色值為#f00的實線邊框,該怎麼寫樣式呢?
首先來看級聯寫法:

view image{ border:2px solid #f00 }

很明顯,這樣的寫法非常低效。更高效的寫法應該為:

.demo_img_1{ border:2px solid #f00 }

WXSS中,雖然現在還能使用級聯寫法,但從提高WXSS性能的角度上看,建議大家儘量不適用級聯。微信小程式團隊推薦使用BEM,即Block(塊)、Element(元素)、Modifier(修飾符),是有Yandex團隊提出的CSSClass命名方法。


六、WXML與HTML

歸根結底,小程式的頁面與H5網頁,一樣是運行在客戶端WebView組件中的,而這些頁面也同樣經過腳本引擎和渲染引擎處理。那為什麼不能直接沿用網頁的HTML+CSS+JavaScript的組合呢?WXML與HTML的差異主要體現在哪些地方?

6.1小程式沙盒模型

隨著前端開發技術的發展,H5頁面的能力越來越大,我們既可以利用IndexedDB建立瀏覽器本地資料庫,也可以通過WebRTC進行網路間點對點實時通信,甚至於利用FileReader和Blob等對本地文件進行讀取和修改等操作。另一方面,小程式在設計上,也需要為開發者提供許多微信獨有的API,比如獲取用戶微信昵稱,調用微信支付介面等等。如果這些API與現有的前端能力相結合,開發者的能力將被極大擴展,更可能超過微信保護用戶的可控範圍。為了在“保護用戶數據”和“對開發者開放能力”之間找到平衡,自然有必要把這兩者放在自己力所能及的「沙盒模型」中實現。而這個沙盒,也就是我們的小程式框架,我們使用WXML+WXSS+JavaScript構建的小程式,都是運行在這個沙盒模型中。

 

 


 

6.2組件化

傳統的網頁開發,是使用HTML進行頁面構建的,開發者經常會用到div、span、ul/li等標簽進行頁面佈局,這些基礎標簽通過互相結合併與CSS定義的樣式搭配,從而實現許多功能組件,比如用戶確認視窗、日曆選擇器、滑動廣告板等等。在小程式中,開發者同樣也會用到標簽,但這些標簽,已經過微信的一層封裝,以組件的形式提供給開發者使用,每個組件都會實現自己特有的功能,提高了開發效率,而佈局一般是採用view組件來實現。「組件化」使WXML標簽更具語義,通過名稱就可以知道組件的具體功能。

 


6.3數據綁定

WXML還有一個特點與HTML有所不同,就是「數據綁定」。傳統的HTML需要通過JavaScript對DOM結點進行操作,才能動態改變頁面內容。而在WXML里,數據可以跟頁面結構進行綁定,JavaScript只對數據進行操作,而這些數據的修改,最終會反饋給綁定數據的頁面結構並動態更新。這種機制類似於Vue.js的聲明式渲染,實現了頁面和數據的分離。

 


6.4邏輯控制

WXML里,我們還可以通過特定的語法對結構進行邏輯控制,包括條件控制和迴圈控制,使頁面開發更加靈活。而HTML只能依賴於JavaScript生成或刪除結構,開發人員不只要關心數據,還要關心對頁面結構的操作,數據和展示往往耦合在一起,增加管理代碼的成本。

 


七、像素和DPR

web開發的過程中,經常會提到「像素」這個詞,那麼,像素到底是什麼?移動端的像素與桌面端是否有區別?同樣大小的手機屏幕,為什麼有的像素高,有的像素低?下麵讓我們通過資料閱讀找到這些問題的答案吧。

7.1像素的定義

像素」是圖像顯示的基本單位,譯自英文「pixel」,一個像素就是屏幕上能夠顯示一種特定顏色的最小區域。如下圖右側圖片中,每一小格子代表一像素:

 

當設備尺寸相同,但像素變得更密集時,屏幕能顯示的畫面過渡更細緻,圖像看起來就更清晰明快。由此定義了「屏幕像素密度PPI(pixel per inch)」,用於代表屏幕上每英寸可以顯示的像素點的數量:

 


7.2像素的分類

像素實際上分為兩種:
1.物理像素:又稱設備像素(device pixels),指設備屏幕的物理像素,一個屏幕里的物理像素數量是固定的。
2. 邏輯像素:又稱CSS像素(CSS pixels),是為web開發而創造的抽象概念,用於在CSS和JavaScript中以「px」描述位置、大小和間距的單位尺寸。

由於不同的設備屏幕,特別是移動端手機屏幕尺寸千差萬別,物理像素也不一而同,在web開發過程中都是使用邏輯像素,物理像素很少會被用到。

隨著移動設備屏幕技術的發展,手機的PPI(屏幕像素密度)越來越高。一個典型的例子就是,從iPhone4開始,蘋果公司推出了retina視網膜屏幕。之所以叫做視網膜屏幕,是因為屏幕的PPI太高,人的視網膜無法分辨出屏幕上的像素點。iPhone4的PPI提高了一倍,但屏幕尺寸卻沒有變化,這意味著同樣大小的屏幕上,像素多了一倍。

 

像素的增加對於同樣大小的網頁圖像,在舊手機里全屏展示,在新手機里卻只需要一半的屏幕就顯示出來了,剩下的另一半屏幕將成為空白,這降低了web用戶的體驗。如何適配不同的手機屏幕,成為web開發者需要關心的問題。

 


7.3 DPR

設備像素比DPR(devicePixelRatio),是指預設屏幕內容無縮放時,物理像素和邏輯像素的比值:

DPR = 物理像素 / 邏輯像素

JavaScript里可以通過window.devicePixelRatio獲取到用戶設備的DPR值。

 


7.4屏幕適配方案

瞭解了DPR的概念之後,我們就可以通過規則,將邏輯像素進行相應的轉換,滿足不同屏幕的顯示需要,具體規則如下:

 DPR1時,使用11×1)個物理像素顯示1個邏輯像素;

 DPR2時,使用42×2)個物理像素顯示1個邏輯像素;

 DPR3時,使用93×3)個物理像素顯示1個邏輯像素。

 

圖示如下:

 

對應到web開發中,就是需要根據不同的DPR縮放網頁內容,計算公式為:

圖片縮放尺寸 = 圖片邏輯像素 x DPR

具體以iPhone6為例,其屏幕寬度的物理像素共750個,邏輯像素是375px,所以DPR = 750 / 375 = 2,為了適配iPhone6,應該使用2倍大小的圖片進行展示。

小程式為開發者提供了更方便的像素單位「rpx(responsive pixel)」實現屏幕適配,在後續的小程式課程里我們再詳細講解其使用方法。


7.5自定義屏幕尺寸

如何知道自己手機屏幕尺寸?

1通過手機購買網站查詢手機屏幕的「物理像素」(解析度);

2使用微信的示例小程式獲取手機屏幕的邏輯像素:

 

微信掃碼進入 – 底部「介面」按鈕 – 「設備」選項 - 「獲取手機系統信息」選項 - 「獲取手機系統信息」按鈕 – 「屏幕寬度」和「屏幕高度」。

 

計算DPR後在下圖所示入口進行尺寸設置。

 


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、雙花括弧{{}}插值和MVVM模式 1.1 體會{{}}插值 index.wxml的標簽不是html的那些標簽,這裡的view就是div。 {{}}這樣的插值寫法,叫做mustache語法。mustache是鬍子的意思,因為{{}}像鬍子。 要在同名js文件下的data屬性中定義: 所有的框架: ...
  • 1.1、自動生成目錄 效果如下: (1)頁腳js代碼 首先得有js許可權 (2)頁面定製css代碼 1.2.增加返回頂部按鈕 (1)頁面定製css代碼 (2)頁首html代碼 1.3.愛心特效(滑鼠點擊頁面) 滑鼠點擊頁面效果: 把下麵代碼複製到公告欄裡面 1.4.公告欄時鐘 公告裡面 1.5.公告欄 ...
  • 轉自阮一峰http://www.ruanyifeng.com/home.html console.log(),console.info(),console.debug() console.log方法用於在控制台輸出信息。它可以接受一個或多個參數,將它們連接起來輸出。 console.log方法會自動 ...
  • 自定義導航欄。 效果如下: 1.1.自定義導航欄 我的博客皮膚用的是AnotherEon001,假如你的博客用的是其它皮膚,樣式需要自己修改,要想達到一樣的效果,建議也用同款皮膚 (1)把預設的導航欄給隱藏掉 既然我們想要自定義導航欄,預設的導航欄就不能顯示 (2)頁首html代碼 裡面一個ul包含 ...
  • 獲取時間: 獲取1997年10月1號日期 new Date: 當使用 - 拼接年月日時將會使用UTC時區解析參數,會比北京時間快八小時。 當時用 / 拼接年月日時會使用北京的時區去解析參數,取到的是北京時間。 Date.parse 獲取UTC時間:使用 - 拼接 獲取北京時間: 使用 / 拼接 ...
  • 1.禁止div點擊 //css屬性: pointer-events: none; //或者定義屬性,在js中添加: $(".原類名").addClass("新類名"); //js: //禁用 $.fn.disable = function () { $(this).addClass("disable ...
  • HTML代碼 <select id="s1"> <option value="0">~請選擇省份~</option> <option value="1">湖北省</option> <option value="2">江西省</option> </select> <select name="" id= ...
  • Vue+Typescript中在Vue上掛載axios使用時報錯 在 項目開發過程中,為了方便在各個組件中調用 ,我們通常會在入口文件將axios掛載到vue原型身上,如下: 這樣的話,我們在各個組件中進行請求時,就可以直接使用 ,但是在ts中使用 進行請求時,會進行報錯,如下所示: 從圖中我們可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...