uni-app的pages.json处理方案示例

 更新时间:2023年01月17日 09:34:06   作者:天堂里的花大咩  
这篇文章主要为大家介绍了uni-app的pages.json处理方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

uni-pages-hot-modules

github uni-app项目示例

npm包源码

uni-app的pages.json的模块化及模块热重载

解决uni-app的pages.json无法模块化的问题,并且解决模块热重载和缓存的问题

安装

npm i uni-pages-hot-modules -S

注意!

发现uni-app每次更新对pages.js的支持度会不同,比如某个版本竟然注释掉了对pages.js的热重载依赖,这里做了兼容。只要uni-app不推翻自己的设计,此功能长久有效

uni-pages-hot-modules做了什么

// 做了非常轻便的事情,相当于
loader.addDependency(modulePath)
delete require.cache[modulePath]
require(modulePath)

uni-app的“彩蛋”

uni-app自带一个webpack loader钩子文件pages.js,在项目src目录下建立pages.js(与pages.json同级)即可生效(pages.json仍然需要存在,作为初始值,建议存放一些和路由无关的配置)。
pages.js要求CommonJS规范,直接通过module.exports输出一个钩子函数。

pages.js输出的函数参数

pagesJson < Object >

pages.json的解析内容

loader < Object >

uni-pages-loader的钩子属性,{ addDependency < Function > }

addDependency

用于手动为uni-pages-loader添加依赖模块

pages.js的模块化

由于是js,就可以实现模块的依赖,如果不考虑模块的热重载问题,可以直接使用require引入依赖但是大多数情况下,需要依赖的模块也可以通过热重载更新pages.js,由于不是webpack的标准运行依赖,所以需要手动添加依赖项(使用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": "测试"
                }
            }]
        }]
    }
}

模块的规范

被加载的模块也是CommonJS规范,通过module.exports输出

module1.js示例

// v0.0.6之后,模块内部使用不再需要提供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来判断,自定义环境的需要自己添加env变量来判断
使用uni-pages-hot-modules引入模块必须输入全的文件名包括后缀,否则将不会进行热重载

以上就是uni-app的pages.json处理方案示例的详细内容,更多关于uni-app pages.json处理的资料请关注脚本之家其它相关文章!

相关文章

  • 学习JavaScript设计模式之责任链模式

    学习JavaScript设计模式之责任链模式

    这篇文章主要为大家介绍了JavaScript设计模式中的责任链模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 分享JavaScript与Java中MD5使用两个例子

    分享JavaScript与Java中MD5使用两个例子

    这篇文章主要为大家分享了JavaScript与Java中MD5使用两个例子,
    2015-12-12
  • javascript 操作cookies及正确使用cookies的属性

    javascript 操作cookies及正确使用cookies的属性

    在 JS(JavaScript) 操作cookies比较复杂,在 ASP 里面我们只需要知道 cookie 的名称、cookie 的值就行了,而 JS 里面,我们面对的是 cookie 的字符串,你自己编写这个字符串写入客户端,然后自己解析这个字符串。
    2009-10-10
  • TypeScript 数组Array操作的常用方法

    TypeScript 数组Array操作的常用方法

    本文主要介绍了TypeScript 数组Array操作的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Javascript实现字数统计

    Javascript实现字数统计

    现在流行的Twitter等微博客网站,有一个很好的用户体验,就是在文本框中输入文字的时候,会自动统计输入的字符,并显示用户还能输入的字符,在限制了140个字的微博客中,这样的小提示可以很好的增强用户体验。
    2015-07-07
  • JS根据奖品权重计算中奖概率

    JS根据奖品权重计算中奖概率

    这篇文章主要介绍了JS计算中奖概率实现抽奖的方法,对算法感兴趣的同学,可以参考下
    2021-05-05
  • js实现移动端导航点击自动滑动效果

    js实现移动端导航点击自动滑动效果

    这篇文章主要为大家详细介绍了js实现移动端导航点击自动滑动效果,导航可左右滑动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • JavaScript动态插入CSS的方法

    JavaScript动态插入CSS的方法

    这篇文章主要介绍了JavaScript动态插入CSS的方法,两个步骤就可以实现JavaScript动态插入CSS
    2015-12-12
  • layer扩展打开/关闭动画的方法

    layer扩展打开/关闭动画的方法

    今天小编就为大家分享一篇layer扩展打开/关闭动画的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • layer.open 获取不到表单信息的解决方法

    layer.open 获取不到表单信息的解决方法

    今天小编大家分享一篇layer.open 获取不到表单信息的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09

最新评论