微信小程式開發系列(一)小程式開發初體驗

来源:http://www.cnblogs.com/rennix/archive/2017/01/15/6287432.html
-Advertisement-
Play Games

開發小程式所需的基本技能 關於小程式的介紹和使用場景這裡不作介紹,這個系列的文章會一步一步地帶領大家快速地學習和掌握小程式的開發。 關於還沒有接觸過小程式的開發者來說,最關心的問題無非就是,開發小程式,我需要掌握哪些技能? 從我學習小程式的經驗中得出,開發小程式的基本要求: 如果你是一名已經工作1年 ...


 

開發小程式所需的基本技能

 

關於小程式的介紹和使用場景這裡不作介紹,這個系列的文章會一步一步地帶領大家快速地學習和掌握小程式的開發。

關於還沒有接觸過小程式的開發者來說,最關心的問題無非就是,開發小程式,我需要掌握哪些技能?

 

從我學習小程式的經驗中得出,開發小程式的基本要求:

如果你是一名已經工作1年以上的前端工程師,你幾乎不用學習任何新的東西就可以快速上手;

如果你是一名剛剛大學畢業的大學生,你需要熟練使用HTML、CSS、JS

如果你是一名沒有任何基礎的小程式愛好者,我建議你先去系統學習HTML、CSS、JS、JSON、XML再來學習小程式。

 

註意:小程式不是BS架構,它是一個完全屬於CS架構的產品。我這裡將他與web聯繫起來只是為了使大家更好的去理解和學習。

 

小程式不會使用的知識有:jQuery,DOM操作,以及你所知道的目前的任何前端框架,這就是說,小程式的程式邏輯和佈局全部得自己寫,沒有像web前端那樣,有豐富的插件。但是,騰訊為了使開發者更快速的開發小程式,節約開發成本,已經為開發者封裝了很多組件,如輪播、滑塊、彈層等,如果看到這裡,你覺得自己還有繼續學習的興趣,請繼續往下學習。

 

環境的搭建

 

小程式環境的搭建非常簡單,其實就是一個開發者工具,當然這個工具目前除了模擬器之外,沒什麼強大的地方,甚至語法提示也很是感人。

官方入口地址:

https://mp.weixin.qq.com

 

 

點擊“開發”,跳轉到小程式首頁,依次點擊“工具”、“下載”

 

 

根據你的電腦系統選擇合適的版本下載安裝即可。

安裝步驟省略,安裝成功後的快捷方式如下圖

 

 

 

寫一個Hello World

先啟動開發者工具,提示掃描二維碼登錄,使用微信掃碼即可。

 

 

登錄之後點擊“添加項目”

 

 

AppID選擇“無AppID”,項目名稱和項目目錄自己填寫,完成後點擊“添加項目”

隨後你會驚奇的發現,HelloWorld都為我們寫好了,真是尷尬..

小程式不需要按F5運行,而是直接編譯就能看到效果,所以我們每次修改之後,只需要編譯一下就會自動展示我們所做的修改了。

 

既然HelloWorld已經寫完了,那我們就來認識一下開發者工具

 

 

左側是編譯調試的TAB菜單,中間是模擬器,我們寫好的程式就是在模擬器中看效果的,右側樹狀的是代碼結構,知道這些就夠了。

這裡不會對開發者工具進行詳細的說明,就像我們學習HTML的時候一樣,不會把HTML每個標簽講的很細。因為之後的每一天,我們都會去接觸這個工具,所以完全沒必要花費時間去研究它(而且這個工具本身不是很強大,我開篇已經說過,所以,即使是一個新人,面對這個開發者工具也是沒有任何難度的)

 

從前端到小程式

我個人不大喜歡那些上來就開始講小程式目錄結構的文章,有兩點:

第一、  前端工程師或後端工程師,對於HTML、CSS、JS已經是相當的熟悉了,但是小程式恰好不是完全用的這些東西,確切的說只能說是類似,既然是類似,那麼就是說你之前的東西對你學習小程式只是有輔助性作用,小程式裡面仍然有許多新的東西。如果一開篇就去那些新的東西,不去與之前的開發做對比,那麼,你會花更多的時間去適應這個突然的改變。

第二、  對於一些新人來說,更需要從前端轉換到小程式的適應。

 

下麵我們就來一起做一個小的頁面,你會發現小程式的目錄結構和數據綁定原理你已經快速掌握了。

 

我們就以這個HelloWorld頁面為例,我們用大家最熟悉的HTML把它寫出來。

 

 

代碼:

 1 <!DOCTYPE html>
 2 
 3 <html lang="en">
 4 
 5 <head>
 6 
 7    <meta charset="UTF-8">
 8 
 9    <title>Document</title>
10 
11    <style type="text/css">
12 
13    body{
14 
15             text-align: center;
16 
17    }
18 
19             #content{
20 
21                      margin-top: 100px
22 
23             }
24 
25    </style>
26 
27 </head>
28 
29 <body>
30 
31    <div id="header">
32 
33             <img id="avatar" src="" alt="">
34 
35             <div id="nickName"></div>
36 
37    </div>
38 
39    <div id="content"></div>
40 
41 </body>
42 
43 </html>
44 
45 <script type="text/javascript" src="jquery.js"></script>
46 
47 <script type="text/javascript">
48 
49    //假設這是從伺服器端獲得的數據
50 
51    var data={avatar:'avatar.png',nickName:'BeibeiTec',content:'Hello World'};
52 
53   
54 
55    //頁面渲染完成後將data的值賦值到相應的DOM元素中,以達到我們的效果。
56 
57     var avatar=$('#avatar');
58 
59     var nickName=$('#nickName');
60 
61     var content=$('#content');
62 
63     avatar.attr('src',data.avatar);
64 
65     nickName.html(data.nickName);
66 
67     content.html(data.content);
68 
69 </script>

 

 

效果如圖:

 

 

這樣寫代碼真的是太爽了,熟練的HTML和CSS,優美的JS,好用的jQuery…

 

我們來分析一下我這段代碼,因為我的數據data是變化的,每次都是動態加到頁面上的,所以,我HTML的部分,div中沒有寫任何要顯示的內容。但是,我心中很明白,我一定會有一個叫做data的JSON數據,恰好能夠綁定到相應的DOM上,如我知道我的data.avatar會綁定到<img id="avatar" src="" alt="">的src這個屬性上。

 

然後我們發現,我們的HTML中變化的點就只有三個地方:

Img的src、兩個div的innerHtml

 

 

 

下麵我們來看看小程式實現這個頁面是怎麼做的:

依次展開pages/index/index.wxml

 

代碼如下:

 

 

 1 <!--index.wxml-->
 2 
 3 <view class="container">
 4 
 5   <view  bindtap="bindViewTap" class="userinfo">
 6 
 7     <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
 8 
 9     <text class="userinfo-nickname">{{userInfo.nickName}}</text>
10 
11   </view>
12 
13   <view class="usermotto">
14 
15     <text class="user-motto">{{motto}}</text>
16 
17   </view>
18 
19 </view>

 

 

這應該是一段你從來沒有接觸過的“HTML”代碼,似懂非懂。

我先不對裡面出現的新標簽進行介紹,而是先把view當做是div,把text當做是p標簽。

 

 1 <!--index.wxml-->
 2 
 3 <div class="container">
 4 
 5   <div  bindtap="bindViewTap" class="userinfo">
 6 
 7     <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
 8 
 9     <p class="userinfo-nickname">{{userInfo.nickName}}</p>
10 
11   </div>
12 
13   <div class="usermotto">
14 
15     <p class="user-motto">{{motto}}</p>
16 
17   </div>
18 
19 </div>

 

 

聰明的你已經看出來了,和我們的自己寫的HTML其實是一樣的,只是有兩個地方略微不同:

1、 標簽的名字不同了,需要重新學習。

2、 我們頁面中的變化點,都變成“{{}}”了。

 

這就是小程式的數據驅動機制,它把頁面中變化的點,都用兩個大括弧的這種語法替換了,我們要改變頁面的顯示內容,只需要改變這些大括弧中的變數就可以了,和模板引擎

差不多。

 

那麼,數據是從哪裡來的呢?

 

是的,其實你已經猜到了JS是寫在哪裡了,只是在好奇,這個數據是怎麼傳到頁面上的。打開index.js,我們看看代碼:

 

 1 //index.js
 2 
 3 //獲取應用實例
 4 
 5 var app = getApp()
 6 
 7 Page({
 8 
 9   data: {
10 
11     motto: 'Hello World',
12 
13     userInfo: {}
14 
15   },
16 
17   //事件處理函數
18 
19   bindViewTap: function() {
20 
21     wx.navigateTo({
22 
23       url: '../logs/logs'
24 
25     })
26 
27   },
28 
29   onLoad: function () {
30 
31     console.log('onLoad')
32 
33     var that = this
34 
35     //調用應用實例的方法獲取全局數據
36 
37     app.getUserInfo(function(userInfo){
38 
39       //更新數據
40 
41       that.setData({
42 
43         userInfo:userInfo
44 
45       })
46 
47     })
48 
49   }
50 
51 })

 

 

Pages是一個很大的JSON,裡面存放的有一個叫做data的JSON和一些方法,因為我是.Net學科的,所以習慣了把函數叫做方法,後續文章中我說的方法,就表示一個function

 

先來看這個data:

1  data: {
2 
3    motto: 'Hello World',
4 
5    userInfo: {}
6 
7  } 

 

motto的值正是我們要輸出的內容

 

 

但是問題來了,userInfo是空的,我們卻能顯示頭像和昵稱,這我們就想到了,一定是頁面在載入的時候,通過什麼途徑獲取到了這個userInfo,然後賦值給了data的userInfo對象,所以才能正常展示。

 

 

 

這不就是我們再熟悉不過的頁面onLoad嗎?

 

從這個方法中,你學習到了第一條小程式代碼:

 

1 this.setData({
2 
3          userInfo:{userName:’xx’,userAvatar:’xx’}
4 
5 })

 

改變Pages對象中data的值

 

所以我們得出結論:index.js裡面聲明瞭index.wxml裡面所需要的data,頁面的載入以及頁面中的元素的事件也是在這裡做處理。而我們不用關心我們改變data的值之後如何刷新頁面,因為當你改變data後,頁面的值就跟著變了。

 

而我們的樣式,都寫在index.wxss裡面,和CSS幾乎一模一樣的語法,這裡就不過多闡述 了。

 

 

由此我們發現了:

小程式的頁面由三部分組成:

 

 

視圖(.wxml)、邏輯(.js)、樣式(.wxss)。


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

-Advertisement-
Play Games
更多相關文章
  • 一直不想升級Xcode,但是沒辦法項目進度只能升級Xcode8,果然不出所料出現了不少bug, Xcode7運行一直沒有問題,但是在Xcode8上一直輸出AQDefaultDevice (173): skipping input stream 網上查到解決辦法 1.選擇 Product -->Sch ...
  • 假如下麵的一張圖片,是用來做按鈕的背景圖片的,原始尺寸是76 × 40 我們通過代碼將這張圖片設置為按鈕的背景圖片,假如我們將創建好的按鈕的寬高設置為:(W=200, H=50)代碼如下: 結果如下:圖片被拉伸了。 原因分析:是將原是尺寸為76 × 40 的圖片拉伸成了W=200, H=50;解決方 ...
  • 自定義彈框 效果 特點 1.可以定製彈框的樣式和內容。 2.例子中寫了三種不同的彈框樣式,可根據需求增加彈窗樣式。 用法 1.將父類文件夾中的文件拖入自己的工程中,然後定製自己需要的彈窗。(代碼中寫了三個形式彈窗,大家可參考例子編寫自己需要的形式) 2.定製的彈窗都得繼承這個父類,並實現它的方法。 ...
  • 最近在做下拉框,本來想用spinner,可是spinner達不到項目要求,跟同學同事問了一圈,都在用popwindow, 網上看了一下,popwindow挺簡單的,可定製性挺強的,符合我的要求,所以,借鑒網上看的代碼,自己擼了一 遍。寫篇博客以防忘記。 首先,先寫個自定義佈局,代碼如下 <?xml ...
  • 這裡是放代碼的地方嗎? ...
  • 設計師很多時候會有一像素線的需求,怎麼去實現有下麵幾種方法。 一、 Image 1. 資源圖片 找設計師要個圖片,用UIImageView 或者 CALayer的方式顯示出來 2. CoreGraphics繪製 用CoreCraphics的方式畫一個 UIImage,然後用1的方法展示出來 此類方法 ...
  • 此開源框架官網地址:https://github.com/astuetz/PagerSlidingTabStrip 可以理解為配合ViewPager使用的互動式頁面指示器控制項。 話不多說,先上效果圖: 為了演示其中的pstsIndicatorHeight與pstsUnderlineHeight 的區 ...
  • 前兩天群里有兄弟在吐槽,做遠程推送的時候:老闆要求APP桌面圖標的右上角顯示紅色未讀數字(數字角標)要精準,有多少未讀通知就顯示數字幾;但是後臺的弟兄在發送推送通知的時候,每次的角標是1,然後要移動端這邊自己去把這個未讀數字去累加,然後顯示在APP上;並且後臺非常固執的認為這個累加未讀消息數量是在移 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...