uni-app的pages.json處理方案示例
uni-pages-hot-modules
uni-app的pages.json的模塊化及模塊熱重載
解決uni-app的pages.json無法模塊化的問題,并且解決模塊熱重載和緩存的問題
安裝
npm i uni-pages-hot-modules -S
注意!
發(fā)現(xiàn)uni-app每次更新對pages.js的支持度會不同,比如某個版本竟然注釋掉了對pages.js的熱重載依賴,這里做了兼容。只要uni-app不推翻自己的設(shè)計,此功能長久有效
uni-pages-hot-modules做了什么
// 做了非常輕便的事情,相當(dāng)于 loader.addDependency(modulePath) delete require.cache[modulePath] require(modulePath)
uni-app的“彩蛋”
uni-app自帶一個webpack loader鉤子文件pages.js,在項目src目錄下建立pages.js(與pages.json同級)即可生效(pages.json仍然需要存在,作為初始值,建議存放一些和路由無關(guān)的配置)。
pages.js要求CommonJS規(guī)范,直接通過module.exports輸出一個鉤子函數(shù)。
pages.js輸出的函數(shù)參數(shù)
pagesJson < Object >
pages.json的解析內(nèi)容
loader < Object >
uni-pages-loader的鉤子屬性,{ addDependency < Function > }
addDependency
用于手動為uni-pages-loader添加依賴模塊
pages.js的模塊化
由于是js,就可以實現(xiàn)模塊的依賴,如果不考慮模塊的熱重載問題,可以直接使用require引入依賴但是大多數(shù)情況下,需要依賴的模塊也可以通過熱重載更新pages.js,由于不是webpack的標(biāo)準(zhǔn)運行依賴,所以需要手動添加依賴項(使用addDependency),并且需要每次清除模塊的緩存,因此uni-pages-hot-modules就誕生了
pages.js示例
module.exports=(pagesJson,loader)=>{ // 需要將loader傳入作為初始化,v0.0.6之后只需要初始化一次 const hotRequire = require('uni-pages-hot-modules')(loader) return { "pages": [ { "path": "pages/about/about", "style": { "navigationBarTitleText": "測試1" } }, ...hotRequire('./module1.js') ], "subPackages":[{ "root": "pages/test", "pages": [{ "path": "about", "style": { "navigationBarTitleText": "測試" } }] }] } }
模塊的規(guī)范
被加載的模塊也是CommonJS規(guī)范,通過module.exports輸出
module1.js示例
// v0.0.6之后,模塊內(nèi)部使用不再需要提供loader const hotRequire = require('uni-pages-hot-modules') module.exports=[ { "path": "pages/sub/sub", "style": { "navigationBarTitleText": "sub" } }, ...hotRequire('./sub-module1.js') ]
其他
不支持條件編譯,需要自己通過process.env.UNI_PLATFORM來判斷,自定義環(huán)境的需要自己添加env變量來判斷
使用uni-pages-hot-modules引入模塊必須輸入全的文件名包括后綴,否則將不會進行熱重載
以上就是uni-app的pages.json處理方案示例的詳細(xì)內(nèi)容,更多關(guān)于uni-app pages.json處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript統(tǒng)計字符串中每個字符出現(xiàn)次數(shù)完整實例
這篇文章主要介紹了JavaScript統(tǒng)計字符串中每個字符出現(xiàn)次數(shù)的方法,以完整實例形式分析了JavaScript針對字符串中字符的遍歷操作相關(guān)技巧,需要的朋友可以參考下2016-01-01High Performance JavaScript(高性能JavaScript)讀書筆記分析
High Performance JavaScript(高性能JavaScript)讀書筆記,讓你的js代碼更有效率。2011-05-05javascript連接mysql與php通過odbc連接任意數(shù)據(jù)庫的實例
下面小編就為大家分享一篇javascript連接mysql與php通過odbc連接任意數(shù)據(jù)庫的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12詳解如何使用JavaScript實現(xiàn)自定義的雙向數(shù)據(jù)綁定
雙向數(shù)據(jù)綁定是一種編程模式,用于在用戶界面和數(shù)據(jù)模型之間實現(xiàn)數(shù)據(jù)的同步更新,它允許用戶界面中的數(shù)據(jù)變化自動更新到數(shù)據(jù)模型中,在這篇文章中,我會使用基于觀察者模式和基于Proxy對象來實現(xiàn)JS的自定義雙向數(shù)據(jù)綁定2023-08-08JS中IP地址與整數(shù)相互轉(zhuǎn)換的實現(xiàn)代碼
這篇文章主要介紹了JS中IP地址與整數(shù)相互轉(zhuǎn)換的實現(xiàn)代碼,需要的朋友可以參考下2017-04-04