在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

思考對于微信小程序的開發過程

思考對于微信小程序的開發過程

更新時間:2025-09-30 文章作者:未知 信息來源:網絡 閱讀次數:

微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創新,經過將近兩年的發展,已經構造了新的小程序開發環境和開發者生態。
若無小程序開發經驗,可先閱讀 玩轉微信小程序 一文。

微信小程序正式上線已有幾周時間,相信它的開發模式你已爛熟于胸,可能你也有所疑問,我竟能用 web 語言開發出如此流暢的幾乎原生體驗的應用。可能你又會猜這不就是 h5 么,厲害點的想不就是 hybrid 么。但是在我們的開發旅途中至始至終都沒有使用過 webview ,為啥呢?開發時用的 view 一類的標簽,瀏覽器又是怎么解析成頁面的呢?帶著重重疑惑,進入微信小程序源碼分析吧!

開發平臺

這個 IDE 是如何保證我們小程序的開發和預覽的?簡要分析兩點。

1. 文件目錄

打開 微信web開發者工具目錄 ,進入 package.nw ,嗯?熟悉的味道來了。里面就3個文件:appnode_modulespackage.json 。顯然我們開發時構建階段所用資源來自于 node_modules ,于是我嘗試找下 react模塊,結果沒有收獲...

進入 app 目錄下,呈現的四個文件夾分別是:htmlstyleimagesdist 。而你開發時使用的 IDE 的實現正是通過這些文件,不妨用瀏覽器打開其中一個 html 看看。

思考關于微信小程序的開發過程

這不就是從桌面打開后看到的效果嗎(其中 nodeWebkit 提供了 web 到桌面應用的轉換)。并且在 index.html 中找到我們的主腳本文件 ../dist/app.js ,整個 IDE 從編輯,開發,預覽,發布等一系列操作都在 app.js 及其引用的腳本中。

2. 邏輯關系

接下來開始分析下 dist 下有什么鬼。 不要怕,也就幾十行的源碼。

思考關于微信小程序的開發過程

不過每行都是壓縮過后的而已...好吧,丟去反壓縮一下。在 Sublime Text3 中裝一個 jsFormat 的插件,對要格式化的代碼進行 Ctrl + Alt + F 即可,接下來對我們的文件進行一個邏輯劃分。

思考關于微信小程序的開發過程

顯然,微信小程序 IDE 本身是用 React 組件并且以 Flux 的架構來構建的,那我們所編寫的小程序又是如何運行起來的呢?首先從 ./app/dist/components/sidebar/sidebar.js 開始看起,找到 React Render 出的 restart 按鈕(編譯按鈕的上方)。

// sidebar.jsa.createElement('p', {    className: 'sidebar-item sidebar-item-sep'
}), a.createElement('p', {    className: 'sidebar-item-toolbar',    style: p
}, a.createElement(g, null), a.createElement('p', {    title: `${'darwin'===process.platform?'Command':'Ctrl'} + b`,    onClick: this.handleAppRestart,    className: 'sidebar-item',    style: {        paddingBottom: 0
    }
}, a.createElement('i', {    className: 'sidebar-item-icon  sidebar-item-icon-reset'
}));

每當點擊這個按鈕時,IDE 都會重新展現當前 app 。所以這個 handleAppRestart 就是關鍵之處了。

頁面構建

1. 構建流程

觸發 handleAppRestart 的 200ms 后會調用 ./actions/projectActions.js 中的 restart 方法,構建流程正式開始。

// sidebar.js
handleAppRestart: function(l) {
    clearTimeout(j), j = setTimeout(() => {
        e.restart(this.props.project); // e為projectActions.js輸出對象        let m = 'edit' === this.props.show ? `project_compile` : `project_restart`;
        i(m, this.props.project.appid)
    }, 200)
}

在 projectActions.js 中,可以清楚的看到 flux 架構的部分 actions ,這些 actions 都會隨著 dispatch 傳入到 store 當中,進行一個狀態的改變,最后重新渲染到應用中。

// projectActions.jsdel: function(b) {    a.dispatch({
        actionType: 'DELETE_PROJECT',
        projectid: b
    })
},
add: function(b, c) {    a.dispatch({
        actionType: 'ADD_PROJECT',
        project: b,
        needInitQuickStart: c
    })
},
close: function(b) {    a.dispatch({
        actionType: 'CLOSE_PROJECT'
    })
},
restart: function(b) {    a.dispatch({
        actionType: 'RESTART_PROJECT',
        project: b
    })
}

projectActions.js 的每一個 action 都會通過 projectDispatcher.js 映射到 projectStores.js 中,應用的 restartadd方法在 store 中也有具體實現。

add: function(F, G) {
    F.hash = a(F.projectid), F.es6 = !0, F.watcher = !0, F.editWebview = !0, F.newFeature = {        time: Date.now(),
        show: !1,
        check: !1
    }, F.initPath = {
        enable: !1
    }, F.uploadPath = {
        enable: !1
    }, w.unshift(F), c(F, G), b(), h.info(`projectStores.js add ${JSON.stringify(F)}`), this.emit('ADD_PROJECT', w)
},
close: function() {
    this.emit('CLOSE_PROJECT')
},
restart: function(F) {
    this.emit('RESTART_PROJECT', F)
},

對于 Flux,如果還不清楚,這張圖可以做個簡單的詮釋。nw 中用的是 facebook 官方給出的 Flux 架構,github 上比較活躍的 reduxmobx 都是比較好用的狀態管理架構。

思考關于微信小程序的開發過程

2. 三端運行

在未安裝 android/ios sdk 時,我們的 app 依然能夠呈現在 IDE 中,此時是通過云端的 webpack 將 .wxml,.wxss,.js 轉換成 nw 可解析的 html,css,js 。當然在 android/ios 的微信客戶端上,依然可以訪問,這便是 Write Once, run anywhere ,所以微信小程序和阿里 weex 是異曲同工的,只不過微信小程序的 API 都是基于微信的。

以 IOS 為例

思考關于微信小程序的開發過程

微信小程序與傳統 hybrid 使用 webview 不同,后者是提供了 stringByEvaluatingJavaScriptFromString 方法讓 js 能在當前 context 上執行,實質上還是 web 應用。而前者是通過 JsBrigde 定義模塊的方法映射到 OcBrigde 中,調用 native module ,其中還有很多回調,但其實質上是 native 應用。

native化

在你工作或者實習公司的前端組,可能已經出現了 native 化這些目標,這給公司客戶端人員帶來了不小的危機感,的確,前端能做的事越來越多(依托于強大的開源社區)。

在合適的應用場景下,比如頻率一般流量不大的產品上,native 化的確是很好的選擇,因為對于業務復雜度高以及產品需要頻繁更新迭代的公司來講可以很大的提升開發效率,一個前端工程師能完成曾經一個前端+一個android客戶端+一個IOS客戶端需要完成的任務,同時又能避開多次發版的痛點,所以native 化將是前端未來幾年一個必修的方向。

那它究竟帶來了哪些好處,之于 web app , native app 以及 hybrid app 又有哪些優勢呢?

更低的開發成本

Write Once, Run Anywhere ,只要你會 Web 技術,同樣也能開發出 native 應用。這大大降低了前端開發者進入原生開發領域的門檻。

比 hybrid 更接近原生的用戶體驗

解決了傳統 Webview 帶來的性能瓶頸,因為調用的是原生的模塊,而非直接執行 js 腳本。

解決 native 頻繁發版問題

對于敏捷開發的團隊來說,為了能快速上線產品,一個版本的迭代周期可能幾天就行了,所以發布新版本就成了一個新問題,有時新版本完成開發,而上一個版本還沒有完成審核。而對于用微信小程序/ weex / React Native 開發的 app 只需要加載 jsbundle 即可,這個文件是可以隨時更新,從而 app 就可以避免重新發布。

以上就是思考關于微信小程序的開發過程的詳細內容,更多請關注php中文網其它相關文章!


小程序是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 日韩视频一二三| 美女黄色免费看| 日韩av综合在线观看| 国产一级片中文字幕| 成人性生生活性生交12| 毛片av免费在线观看| 欧美成人免费在线观看视频| 国产美女永久无遮挡| 国产激情片在线观看| 欧美日韩激情四射| 97在线国产视频| 国产美女无遮挡网站| 欧美一级片中文字幕| 免费不卡av在线| av免费观看网| 免费一级特黄录像| 免费av不卡在线| 伊人成人免费视频| 丰满少妇久久久| 日韩av一二三四| 高清av免费看| 亚洲第一精品区| 美女扒开大腿让男人桶| 久色视频在线播放| 久久久久久久久久久久91| 毛片毛片毛片毛| 久草免费福利在线| 天天碰免费视频| 欧美少妇在线观看| 爆乳熟妇一区二区三区霸乳| 天天综合成人网| 欧美一区二区中文字幕| 91最新在线观看| 久操手机在线视频| 午夜dv内射一区二区| 一区二区三区四区免费观看| 凹凸国产熟女精品视频| 咪咪色在线视频| 日韩 欧美 高清| 欧美精品卡一卡二| 天堂视频免费看| www国产精品内射老熟女| 一起操在线视频| 男女超爽视频免费播放| 在线观看岛国av| 国产精品又粗又长| 青春草在线视频免费观看| 国产日韩一区二区在线观看| 韩国无码av片在线观看网站| 国产三级三级看三级| 国产欧美日韩小视频| 国产女同无遮挡互慰高潮91| 日韩五码在线观看| 老司机激情视频| 色乱码一区二区三区熟女| 成人3d动漫一区二区三区| 亚洲中文字幕无码av永久| 国产三级中文字幕| 亚洲色图 在线视频| 无码播放一区二区三区| a级免费在线观看| 成人短视频在线观看免费| 国产a级片免费看| 亚洲欧美日韩网站| 久久精品一二三四| 三年中文在线观看免费大全中国| 国产三级日本三级在线播放| 免费毛片网站在线观看| 国产精品网站免费| 无码人妻丰满熟妇区96| 69堂免费视频| 国产极品美女高潮无套久久久| 美女日批免费视频| 国产人妻777人伦精品hd| 日日摸日日碰夜夜爽无码| 日韩av中文字幕第一页| 国产一级爱c视频| 免费在线激情视频| 男人操女人免费软件| 激情视频综合网| 中文字幕第80页| 911av视频| 国产精品自拍合集| 乱妇乱女熟妇熟女网站| 亚洲欧美另类动漫| 天天干天天色天天爽| 国产亚洲精品久久久久久久| www.69av| 激情网站五月天| 亚洲av毛片在线观看| 久久av高潮av| 欧美精品一区二区三区免费播放| 在线观看av日韩| www.国产亚洲| 少妇性l交大片| 久久久久久久久久毛片| 日韩成人三级视频| 杨幂毛片午夜性生毛片 | 国模吧无码一区二区三区| 欧美精品一区免费| 天天干天天色天天干| 大伊香蕉精品视频在线| 亚洲天堂网一区| 国产成人永久免费视频| 日韩一区二区三区不卡视频| bt天堂新版中文在线地址| 超碰影院在线观看| 97在线免费视频观看| 久久婷婷国产91天堂综合精品| 久久天天东北熟女毛茸茸| 国产精品亚洲a| 9色porny| 国产农村妇女精品久久| 亚洲色图久久久| 欧洲精品一区二区三区久久| 在线视频日韩欧美| 国产视频一区二区视频| 轻点好疼好大好爽视频| 网站在线你懂的| 国产精品久久a| 亚欧在线免费观看| 日本精品一区二区三区四区| 日本一级黄视频| 男人天堂成人网| 中文字幕剧情在线观看| 中文字幕天天干| 成年人视频在线免费| 亚洲国产精品无码观看久久| 一区二区三区四区免费观看| www.国产福利| 久久综合在线观看| 永久免费黄色片| 99中文字幕在线| www.五月天色| 奇米777在线视频| 中文字幕一区二区三区四区五区人| 不卡的在线视频| 亚洲女人在线观看| 影音先锋男人的网站| 日本三级福利片| 超碰超碰超碰超碰超碰| 大片在线观看网站免费收看| 欧美大黑帍在线播放| 福利视频一区二区三区四区| 国产精品专区在线| 国产日韩欧美精品在线观看| 一二三四视频社区在线| 国产免费一区二区三区视频| 青青在线视频观看| 亚洲欧美aaa| 熟女视频一区二区三区| 日韩成人三级视频| 成人av一级片| 老司机午夜性大片| 国产精品69久久久| 不卡影院一区二区| 欧美少妇一级片| 国产一区二区在线视频播放| 成人性生生活性生交12| 一级 黄 色 片一| 亚洲 欧美 综合 另类 中字| 日韩欧美在线播放视频| 538在线视频观看| 国产精品videossex国产高清 | 一区二区传媒有限公司| 欧美成人免费高清视频| www.午夜av| 成年人在线看片| 警花观音坐莲激情销魂小说| 久久久久久久久久久免费视频| 中文字幕免费高清在线| 人妻少妇精品无码专区二区 | 天堂网成人在线| 欧美老熟妇喷水| 伊人再见免费在线观看高清版| 免费无码av片在线观看| 99热一区二区三区| 久久久久久久中文| 国产av不卡一区二区| 久草综合在线观看| 欧美 国产 精品| 天天爽人人爽夜夜爽| 欧美日韩不卡在线视频| 亚洲第一天堂久久| 人妻精品无码一区二区三区 | 日韩伦理在线免费观看| 日本三级中文字幕在线观看| 国产高清视频网站| 北条麻妃在线视频| 欧美日韩黄色一级片| 国产制服91一区二区三区制服| 91香蕉视频导航| 国产淫片av片久久久久久| 日韩精品―中文字幕| 国产精品一色哟哟| 欧美狂野激情性xxxx在线观| 日本精品福利视频| 日韩国产小视频| 搞av.com| 丰满少妇久久久|