關於開發文檔閱讀說明編程
後文中爲了保持簡單,經過如下格式來展現上述的代碼邏輯,使用第一段註釋來代表 WXML 對應的腳本文件中的 data 結構。json
代碼清單2-7 展現格式小程序
<!--
{
time: (new Date()).toString()
}
-->
<text>當前時間:{{time}}</text>
小程序由配置代碼JSON文件、模板代碼 WXML 文件、樣式代碼 WXSS文件以及邏輯代碼 JavaScript文件組成。微信小程序
配置代碼JSON文件數組
JSON 語法瀏覽器
這裏說一下小程序裏JSON配置的一些注意事項。安全
JSON文件都是被包裹在一個大括號中 {},經過key-value的方式來表達數據。JSON的Key必須包裹在一個雙引號中,在實踐中,編寫 JSON 的時候,忘了給 Key 值加雙引號或者是把雙引號寫成單引號是常見錯誤。微信
JSON的值只能是如下幾種數據格式,其餘任何格式都會觸發報錯,例如 JavaScript 中的 undefined。網絡
還須要注意的是 JSON 文件中沒法使用註釋,試圖添加註釋將會引起報錯。app
小程序根目錄下的 app.json 文件用來對微信小程序進行全局配置,決定頁面文件的路徑、窗口表現、設置網絡超時時間、設置多 tab 等。
每個小程序頁面也可使用同名 .json 文件來對本頁面的窗口表現進行配置,頁面中配置項會覆蓋 app.json 的 window 中相同的配置項。
模板代碼 WXML 文件
<!-- 在此處寫註釋 -->
<標籤名 屬性名1="屬性值1" 屬性名2="屬性值2" ...> ...</標籤名>
在 Web 開發中,開發者使用 JavaScript 經過Dom 接口來完成界面的實時更新。在小程序中,使用 WXML 語言所提供的數據綁定功能,來完成此項功能。
(1).WXML 經過 {{變量名}} 來綁定 WXML 文件和對應的 JavaScript 文件中的 data 對象屬性。
(2). 屬性值也能夠動態的去改變,有所不一樣的是,屬性值必須被包裹在雙引號中
<text data-test="{{test}}"> hello world</text>
(3). 沒有被定義的變量的或者是被設置爲 undefined 的變量不會被同步到 wxml 中
(4). 還支持字符串的拼接,{{ }}中還能夠直接放置數字、字符串或者是數組
(1). 經過 {{ 變量名 }} 語法可使得 WXML 擁有動態渲染的能力,除此外還能夠在 {{ }} 內進行簡單的邏輯運算。
(2). WXML 中,使用 wx:if="{{condition}}" 來判斷是否須要渲染該代碼塊:
(3). 若是要一次性判斷多個組件標籤,可使用一個 <block/> 標籤將多個組件包裝起來,並在上邊使用 wx:if 控制屬性。
(1). 在組件上使用 wx:for 控制屬性綁定一個數組,便可使用數組中各項的數據重複渲染該組件,默認數組當前項的下標變量名默認爲 index,數組當前項的變量名默認爲 item
(2). 使用 wx:for-item 指定數組當前元素的變量名,使用 wx:for-index 指定數組當前下標的變量名:
(3). 若是列表中項目的位置會動態改變或者有新的項目添加到列表中,而且但願列表中的項目保持本身的特徵和狀態(如 <input/> 中的輸入內容, <switch/> 的選中狀態),須要使用 wx:key 來指定列表中項目的惟一的標識符。
wx:key 的值以兩種形式提供:
當數據改變觸發渲染層從新渲染的時候,會校訂帶有 key 的組件,框架會確保他們被從新排序,而不是從新建立,以確保使組件保持自身的狀態,而且提升列表渲染時的效率。
(1).WXML提供模板(template),能夠在模板中定義代碼片斷,而後在不一樣的地方調用。使用 name 屬性,做爲模板的名字。而後在 <template/> 內定義代碼片斷,
(2). 使用 is 屬性,聲明須要的使用的模板,而後將模板所須要的 data 傳入
(1). WXML 提供兩種文件引用方式import和include。
import 能夠在該文件中使用目標文件定義的 template
include 能夠將目標文件中除了 <template/> <wxs/> 外的整個代碼引入,至關因而拷貝到 include 位置
WXSS 樣式
(1). 項目公共樣式:根目錄中的app.wxss爲項目公共樣式,它會被注入到小程序的每一個頁面。
(2). 與app.json註冊過的頁面同名且位置同級的WXSS文件
其它樣式:其它樣式能夠被項目公共樣式和頁面樣式引用
(3). 在小程序中,咱們依然能夠實現樣式的引用,樣式引用是這樣寫:
@import './test_0.wxss'
因爲WXSS最終會被編譯打包到目標文件中,用戶只須要下載一次,在使用過程當中不會由於樣式的引用而產生多餘的文件請求。
JavaScript 腳本
小程序中的 JavaScript 是由ECMAScript 以及小程序框架和小程序 API 來實現的。同瀏覽器中的JavaScript 相比沒有 BOM 以及 DOM 對象,因此相似 JQuery、Zepto這種瀏覽器類庫是沒法在小程序中運行起來的,一樣的缺乏 Native 模塊和NPM包管理的機制,小程序中沒法加載原生庫,也沒法直接使用大部分的 NPM 包。
瀏覽器中,全部 JavaScript 是在運行在同一個做用域下的,定義的參數或者方法能夠被後續加載的腳本訪問或者改寫。同瀏覽器不一樣,小程序中能夠將任何一個JavaScript 文件做爲一個模塊,經過module.exports 或者 exports 對外暴露接口。
小程序的執行的入口文件是 app.js 。而且會根據其中 require 的模塊順序決定文件的運行順序
當 app.js 執行結束後,小程序會按照開發者在 app.json 中定義的 pages 的順序,逐一執行
(1).同瀏覽器中運行的腳本文件有所不一樣,小程序的腳本的做用域同 NodeJS 更爲類似。在文件中聲明的變量和函數只在該文件中有效,不一樣的文件中能夠聲明相同名字的變量和函數,不會互相影響,
(2).當須要使用全局變量的時,經過使用全局函數 getApp() 獲取全局的實例,並設置相關屬性值,來達到設置全局變量的目的
(3).須要注意的是,上述示例只有在 a.js 比 b.js 先執行纔有效,當須要保證全局的數據能夠在任何文件中安全的被使用到,那麼能夠在 App() 中進行設置