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è)計(jì),此功能長久有效
uni-pages-hot-modules做了什么
// 做了非常輕便的事情,相當(dāng)于 loader.addDependency(modulePath) delete require.cache[modulePath] require(modulePath)
uni-app的“彩蛋”
uni-app自帶一個webpack loader鉤子文件pages.js,在項(xiàng)目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,就可以實(shí)現(xiàn)模塊的依賴,如果不考慮模塊的熱重載問題,可以直接使用require引入依賴但是大多數(shù)情況下,需要依賴的模塊也可以通過熱重載更新pages.js,由于不是webpack的標(biāo)準(zhǔn)運(yùn)行依賴,所以需要手動添加依賴項(xiàng)(使用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引入模塊必須輸入全的文件名包括后綴,否則將不會進(jìn)行熱重載
以上就是uni-app的pages.json處理方案示例的詳細(xì)內(nèi)容,更多關(guān)于uni-app pages.json處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript統(tǒng)計(jì)字符串中每個字符出現(xiàn)次數(shù)完整實(shí)例
這篇文章主要介紹了JavaScript統(tǒng)計(jì)字符串中每個字符出現(xiàn)次數(shù)的方法,以完整實(shí)例形式分析了JavaScript針對字符串中字符的遍歷操作相關(guān)技巧,需要的朋友可以參考下2016-01-01
High Performance JavaScript(高性能JavaScript)讀書筆記分析
High Performance JavaScript(高性能JavaScript)讀書筆記,讓你的js代碼更有效率。2011-05-05
javascript連接mysql與php通過odbc連接任意數(shù)據(jù)庫的實(shí)例
下面小編就為大家分享一篇javascript連接mysql與php通過odbc連接任意數(shù)據(jù)庫的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
詳解如何使用JavaScript實(shí)現(xiàn)自定義的雙向數(shù)據(jù)綁定
雙向數(shù)據(jù)綁定是一種編程模式,用于在用戶界面和數(shù)據(jù)模型之間實(shí)現(xiàn)數(shù)據(jù)的同步更新,它允許用戶界面中的數(shù)據(jù)變化自動更新到數(shù)據(jù)模型中,在這篇文章中,我會使用基于觀察者模式和基于Proxy對象來實(shí)現(xiàn)JS的自定義雙向數(shù)據(jù)綁定2023-08-08
JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼
這篇文章主要介紹了JS中IP地址與整數(shù)相互轉(zhuǎn)換的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-04-04

