作者:ru xu,來自原文地址
基礎描述
微信小程序分為app 實例和page實例
數據流小程序 分為邏輯層和視圖層。 邏輯層用來處理數據和方面。 視圖層用來做展現。 邏輯層用setData來更新視圖層。 視圖層通過事件來驅動邏輯層。 頁面生命周期 vs app生命周期頁面的生命周期 * onload : 頁面加載 只調用一次 * onReady: 頁面初次渲染完成。 * onshow 頁面顯示,每次打開頁面都會調用 * onHide: 頁面隱藏,當navigateTo或底部tab切換時調用 * onUnload: 頁面卸載。 頁面出棧 server端剛開始時 先加載頁面,然后調用onshow 服務端等待。 前端發來通知我要數據,發送數據給前端頁面渲染。 渲染完成。前端發來通知 ,我好了。 server端把狀態改為onReady狀態。這時候可以通過setData來修改前端頁面了。 路由小程序維護了一個頁面棧,類似于瀏覽器的location push 棧。
項目架構根據前面的描述,微信只希望有一個app, 然后下面有很多page這樣的結構,然后將這個文件傳到微信端,發布。 但是我們開發的時候,
分析其他人的項目 1 組件化– wepy特性
對所有東西都重新封裝了一遍。 構建wepy-cli 是wepy的構建工具。 通過babel編譯的,命令行。 github地址:https://github.com/hxw319726/wepy-cli 分析 wepy.js // 腳手架的入口,主要做了這幾件事 // 生成一個目錄,下面拼了package.json , // 將template的文件拷貝到當前文件。 // 然后, 用command 定義了很多命令。 compile.js // 編譯文件的入口 // 針對各個文件類型,有各種文件的 編譯器。 compile-wpy.js // 編譯wpy文件 包含 app, page, component // 將 wpy文件,解析成 ret={style: {}, template:{}, script:{}} // 然后依次對各個模塊調用不同的編譯器。 compile-script.js // compile-style.js // 獲取對應的compiler 主要是 // 然后依次對各個模塊調用不同的編譯器。 // 比如下面文件。wepy-compiler-less // 如果有component 將component 的css import進來 // wepy-compiler-less 文件 // 引用 less 然后用less對sass文件進行render一遍,輸出promise import less from 'less'; import path from 'path'; export default function (content, config, file) { return new Promise ((resolve, reject) => { let opath = path.parse(file); config.paths = [opath.dir]; less.render(content, config).then(res => { resolve(res.css); }).catch(reject); }); }; compile-template.js // // 然后依次對各個模塊調用不同的編譯器。 然后你就可用做以下事情了
包裝小程序代碼分析組要也就幾個文件。 當我們創建page的時候需要 class A extend Page{} class B extend Component{} class C extend APP{} 這些都是在wepy的包里面實現的。
2 redux將redux重新寫了一遍,然后引入到了微信中。 |