• 应用
  • 页面
  • 小程序配置
  • 自定义组件
  • 基础库
  • 场景值
  • 错误码
  • npm 功能
  • SJS 语法参考
  • 小程序配置

    收藏
    我的收藏

    全局配置

    app.json 是小程序的全局配置文件,用来配置页面文件的路径、窗口样式、网络超时时间、多 tab 等属性的表现。
    app.json示例如下:
    { "pages": ["pages/index/index", "pages/logs/logs"], "window": { "navigationBarTitleText": "Demo" }, "tabBar": { "list": [ { "pagePath": "pages/index/index", "text": "首页" }, { "pagePath": "pages/logs/logs", "text": "日志" } ] }, "permission": { "scope.userLocation": { "desc": "用于提供个性化服务及体验" } }, "networkTimeout": { "request": 60000, "connectSocket": 60000, "uploadFile": 60000, "downloadFile": 60000 }, "cookie": { "enableStore": true }, "skeleton": { "page": { "pages/index/index": "pages/index/index.sk" }, "config": { "timeout": 1500 } } }

    配置项说明

    属性
    类型
    必填
    描述
    最低支持版本
    entryPagePath
    string
    小程序默认启动首页
    pages
    string[]
    配置页面路径
    window
    object
    配置默认页面的窗口表现
    tabBar
    object
    配置底部 tab 的表现
    navigateToMiniProgramAppIdList
    array
    需要跳转的小程序列表,相关 API 请参见 tt.navigateToMiniProgram
    1.15.0
    permission
    object
    配置部分授权弹窗的副标题
    networkTimeout
    object
    网络超时时间
    subpackages
    array
    分包结构配置
    1.88.0
    preloadRule
    object
    分包预下载规则
    1.88.0
    component2
    boolean
    支持在 created 生命周期中修改自定义组件初始数据,开启后,自定义组件将在 created 生命周期执行完成后开始渲染。从而解决当初始数据依赖计算逻辑时,自定义组件展示数据由默认值到真正数据切换时的闪动问题。
    注意:不涉及初始渲染数据的逻辑放到其他生命周期中,避免影响整体渲染耗时
    2.45.0
    cookie
    object
    Cookie 机制配置
    2.45.0
    skeleton
    object
    框架骨架屏配置
    2.47.0
    workers
    string
    Worker 代码放置的目录或单个文件路径
    2.78.0
    referrerPolicy
    object
    支持开发者自定义配置网络资源添加 referer 请求头,详情可见:网络资源请求添加 referer 规则
    3.16.0
    usePrivacyCheck
    boolean
    启用隐私相关功能,详情可见:小程序隐私协议开发指南
    3.19.0
    publishVideoHookPriorityList
    string[]
    配置 openType="uploadDouyinVideo" 以外的其他「视频发布和挂载」场景,使用 Page.onShareAppMessage 还是 Page.onShareAppMessage 钩子函数,详见 publishVideoHookPriorityList
    3.2.0
    说明:
      小程序仅支持竖屏,不支持横屏配置;不支持配置窗口大小。
      配置 navigationStyle: custom 需要在“小程序开发者平台-功能管理-页面结构自定义”申请权限,否则会阻碍代码包上传,2022 年 5 月 23 日会强制变动。但是 custom 即使申请通过了白名单,能力也会受到限制,主要体现在左上角按钮(新增样式,于 5 月 23 日上线)部分不能定制化。如果要获取左上角按钮位置信息可以参考 getCustomButtonBoundingClientRect。

    entryPagePath

    指定小程序的默认启动路径(首页)。如果不填,默认为 pages 列表的第一项。不支持带页面路径参数。
    { "entryPagePath": "pages/index/index" }

    pages

    这个字段用于配置小程序用到的所有页面路径,配置每项是 路径 + 文件名 这个结构。配置项的第一个页面路径就是小程序启动展示的第一个页面
    需要注意:保证单个页面的 .json、.js、.ttml、.ttss 资源都放在每个页面路径的首层
    如开发目录是:
    |____app.ttss |____app.json |____project.config.json |____pages | |____index | | |____index.js | | |____index.json | | |____index.ttml | | |____index.ttss |____app.js
    那么 app.json 应该这样配置:
    { "pages": ["pages/index/index"] }

    window

    这个字段用于设置小程序的状态栏、导航条、标题、窗口背景色。
    注意:这里的窗口是指由端上控制的页面,与开发者用代码绘制的页面不是同一个概念。
    因此对于 backgroundColor 这类配置项,与开发者在代码中编写的样式不会有优先级覆盖关系。
    属性
    类型
    默认值
    描述
    最低支持版本
    navigationBarBackgroundColor
    HexColor
    #000000
    导航栏背景颜色,如"#000000";
    不支持 alpha 值,如"#AABBCCDD"。
    navigationBarTextStyle
    String
    white
    导航栏标题颜色,仅支持 black/white,同时影响:标题颜色、右胶囊颜色、左返回箭头颜色。
    navigationBarTitleText
    String
    导航栏标题文字内容
    navigationStyle
    String
    default
    导航栏样式,仅支持 default/custom。custom 模式可自定义导航栏,具体效果样式效果参照页面自定义结构文档
    具体申请入口在「控制台」-「我的应用」-「具体小程序」-「能力」-「互动能力」中完成自定义导航栏权限申请。
    注意:custom 需要申请权限,否则会阻碍代码包上传,2022 年 5 月 23 日会强制变动。详细参考获取小程序页面结构自定义能力规范
    backgroundColor
    HexColor
    #ffffff
    窗口的背景色
    backgroundTextStyle
    String
    dark
    下拉 loading 的样式,仅支持 dark/light。
    backgroundColorTop
    HexColor
    同 backgroundColor
    顶部窗口的背景色,仅 iOS 支持。
    backgroundColorBottom
    HexColor
    同 backgroundColor
    底部窗口的背景色,仅 iOS 支持。
    enablePullDownRefresh
    Boolean
    false
    是否开启下拉刷新,详见页面相关事件处理函数
    onReachBottomDistance
    Number
    50
    页面上拉触底事件触发时距页面底部距离,单位为 px。
    transparentTitle
    String
    N/A
    仅在 navigationStyledefault 时该字段生效,用来控制导航栏透明设置。支持:
      always:一直透明
      auto:滑动自适应
      none:不透明
    默认为 none。
    skeleton
    object
    框架骨架屏配置,仅支持配置 config 属性,优先级高于 app.json
    2.47.0

    tabBar

    如果你的小程序包含多个 tab(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。比如设置 tab 展示标题和 tab 颜色等。
    属性
    类型
    必填
    默认值
    描述
    color
    HexColor
    tab 上的文字默认颜色
    selectedColor
    HexColor
    tab 上的文字选中时的颜色
    backgroundColor
    HexColor
    tab 的背景色
    borderStyle
    String
    black
    tabbar 上边框的颜色,仅支持 black/white。
    list
    Array
    tab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab
    custom
    Boolean
    false
    自定义 tabbar,主要解决开发者调用 tt.hideTabBar 出现的闪烁问题,后续支持更多辅助开发者自定义 tabbar 的能力。
    其中 list 接受一个数组,数组中的每个项都是一个对象,其属性值如下:
    属性
    类型
    必填
    描述
    pagePath
    String
    页面路径,必须在 pages 中先定义。
    text
    String
    tab 上按钮文字
    iconPath
    String
    图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px。
    注意:不支持网络图片路径。
    selectedIconPath
    String
    选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px。
    当小程序需要使用 tt.navigateToMiniProgram 接口跳转到其他小程序时,需要先在配置文件中声明需要跳转的小程序appId列表,最多允许填写 10 个。

    permission

    部分授权弹窗的副标题支持开发者自定义,每次提审后会审核该文案,如不通过,直接打回。
    不可自定义副标题的权限是:个人信息、手机号。
    副标题如下图所示:
    如果开发者没有填写某个 scope,就使用该 scope 的默认文案,各 scope 的默认文案如下:
    scope
    默认文案
    scope.userLocation
    通过 GPS 或网络位置信息获取你的大致地理位置,用于向你推荐附近的服务。用于提供个性化服务及体验。
    scope.address
    请求读取你在”抖音/抖音极速版/...“中的地址簿,帮助你填写地址信息。
    scope.record
    用于录制音频,帮助你发布音视频内容,或使用其他需要使用此权限的功能。
    scope.album
    用于读取相册中的图片、视频,或在相册中保存图片、视频。
    scope.camera
    用于拍摄照片或视频,帮助你发布音视频内容,或使用其他需要使用此权限的功能。

    networkTimeout

    各类网络请求的超时时间,单位均为毫秒。
    属性
    类型
    必填
    默认值
    描述
    request
    number
    60000
    tt.request 的超时时间,单位:毫秒。
    connectSocket
    number
    60000
    tt.connectSocket 的超时时间,单位:毫秒。
    uploadFile
    number
    60000
    tt.uploadFile 的超时时间,单位:毫秒。
    downloadFile
    number
    60000
    tt.downloadFile 的超时时间,单位:毫秒。

    subpackages

    基础库 1.88.0 及以上版本支持。
    启用分包加载时,声明项目分包结构。
    写成 subPackages 也支持。

    preloadRule

    基础库 1.88.0 及以上版本支持。
    声明分包预下载的规则。
    基础库 2.45.0 及以上版本支持。
    配置小程序 Cookie 相关功能,详见小程序 Cookie 机制。
    属性
    类型
    必填
    默认值
    描述
    enableStore
    Boolean
    false
    是否开启小程序 Cookie 存储

    skeleton

    基础库 2.47.0 及以上版本支持。
    配置小程序框架骨架屏能力,详见小程序框架骨架屏
    object 类型,其属性值如下:
    属性名
    类型
    默认值
    必填
    说明
    config
    Config
    包含超时移除及自动生成配置等
    page
    object
    页面路径同骨架屏文件的对应关系

    Config 类型说明

    object 类型,属性如下:
    属性名
    类型
    默认值
    必填
    说明
    timeout
    number
    2000
    设置骨架屏超时移除时间,单位为 ms。为 0 时关闭超时移除。
    loading
    'spin' | 'chiaroscuro' | 'shine'
    'spin'
    骨架屏显示时的动画
    image
    object
    {shape:'rect', color:'#efefef'}
    该配置接受 2 个字段,colorshapecolorshape 用于确定骨架页面中图片块的颜色和形状,颜色值支持 16 进制,形状支持两个枚举值,circle (圆形)和 rect(矩形)。
    button
    object
    {color:'#efefef'}
    该配置接收 1 个字段colorcolor 用来确定骨架页面中被视为按钮块的颜色。
    backgroundColor
    string
    '#fff'
    骨架屏背景色
    mode
    'fullscreen' | 'auto'
    'fullscreen'
    默认为使用绝对定位占满全屏。当对自定义组件使用,作为局部加载的样式时,可设置为 auto,高度随内容高度撑开。
    cssUnit
    'px' | 'rem' | 'vw' | 'vh' | 'vmin' | 'vmax'
    'vw'
    CSS单位。元素绝对定位都使用 vwvh
    decimal
    number
    4
    生成骨架屏页面中 css 值保留的小数点位数,默认为 4。

    workers

    基础库 2.78.0 及以上版本支持。
    使用 Worker 处理多线程任务时,设置 Worker 代码放置的目录或单个文件路径。

    referrerPolicy

    基础库 3.16.0 及以上版本支持。
    支持开发者自定义配置网络资源添加 referer 请求头,详情可见:网络资源请求添加 referer 规则
    referrerPolicy 是一个 string key-object value 键值对,目前支持以下能力配置 referer 规则:
    能力
    默认规则
    canvasImage
    no-referrer,不添加 referer
    video
    origin,添加 referer
    previewImage
    origin,添加 referer
    livePlayer
    origin,添加 referer
    innerAudioContext
    no-referrer,不添加 referer
    backgroundAudioManager
    no-referrer,不添加 referer
    具体规则是一个 object,属性如下:
    参数
    类型
    描述
    policy
    string
    添加 referer 的规则,有效值有且仅有两个:
      origin:发送完整的 referer
      no-referrer:不发送 referer
    若 urlList 和 domainList 都不传,则 policy 规则适用于所有 url。
    若 urlList 或 domainList 有值,policy 规则只适用于匹配上的 url。
    例:policy="no-referrer", urlList=["www.abc.com"],则只有 www.abc.com 不添加 referer,其余 url 均添加 referer
    urlList
    string[]
    适用 policy 规则的 url 列表,完全匹配。若 urlList 和 domainList 都不传,则 policy 规则适用于所有 url。
    domainList
    string[]
    适用 policy 规则的域名列表,支持泛域名,配置了 abc.com,那么 *.abc.com 都适用 policy 规则。若 urlList 和 domainList 都不传,则 policy 规则适用于所有 url。

    publishVideoHookPriorityList

    基础库 3.2.0 及以上版本支持,用于配置 openType="uploadDouyinVideo" 以外的其他「视频发布和挂载」场景,使用 Page.onUploadDouyinVideo 还是 Page.onShareAppMessage 钩子函数。
      1.以下配置代表优先使用 Page.onUploadDouyinVideo 钩子函数,没有才会使用 Page.onShareAppMessage 钩子函数。
    { "publishVideoHookPriorityList": ["onUploadDouyinVideo", "onShareAppMessage"] }
      2.不配置 publishVideoHookPriorityList 或者其他配置方式,都代表使用 Page.onShareAppMessage 钩子函数。

    页面配置

    小程序的每一个页面的窗口表现也可以通过页面目录下的 .json文件进行配置,这个页面的独立配置会比 app.json 要简单。
    如果 app.json 的 window 字段里面配置了某个页面的窗口样式,同时该页面也在自己的 .json 文件中做了对应字段的配置的话,框架会优先采用页面里面的 .json 相应配置项。
    具体的配置字段如下:
    属性
    类型
    默认值
    描述
    最低支持版本
    navigationBarBackgroundColor
    HexColor
    #000000
    导航栏背景颜色,如"#000000"。
    navigationBarTextStyle
    String
    white
    导航栏标题颜色,仅支持 black/white。
    navigationBarTitleText
    String
    导航栏标题文字内容
    navigationStyle
    String
    default
    导航栏样式,仅支持 default/custom。custom 模式可自定义导航栏,具体效果样式效果参照页面自定义结构文档
    具体申请入口在「控制台」-「我的应用」-「具体小程序」-「能力」-「互动能力」中完成自定义导航栏权限申请。
    注意:custom 需要申请权限,否则会阻碍代码包上传,2022 年 5 月 23 日会强制变动。
    backgroundColor
    HexColor
    #ffffff
    窗口的背景色
    backgroundTextStyle
    String
    dark
    下拉 loading 的样式,仅支持 dark/light。
    enablePullDownRefresh
    Boolean
    false
    是否开启下拉刷新,详见页面相关事件处理函数。
    disableScroll
    Boolean
    false
    设置为 true 则页面整体不能上下滚动;
    只在 page.json 中有效,无法在 app.json 中设置该项
    disableSwipeBack
    Boolean
    false
    禁止页面右滑手势返回
    onReachBottomDistance
    Number
    50
    页面上拉触底事件触发时距页面底部距离,单位为 px。
    usingComponents
    Object
    自定义组件配置,详情请见“使用自定义组件”。
    hideRecordMenuButton
    Boolean
    false
    是否要隐藏右上角菜单栏 “拍抖音” 按钮。
    hideAnchorButton
    Boolean
    false
    是否要对所有场景隐藏 “添加到视频/将此页添加到直播” 按钮。
    hideAnchorButtonConfig
    Object
    可针对具体场景进行隐藏添加到视频/将此页添加到直播”按钮,此字段在 hideAnchorButtonfalse 时生效。
    2.56.0
    示例:
    { "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black", "navigationBarTitleText": "头条接口功能演示", "backgroundColor": "#eeeeee", "backgroundTextStyle": "light", "usingComponents": { "my-component": "path/to/a/custom/component" }, "hideAnchorButton": false, "hideAnchorButtonConfig": { "023009": true"021014": false"021017": true } }

    项目配置

    project.config.json是小程序的项目配置文件,主要包括了针对小程序项目配置的一些信息,例如项目名称,App ID,项目语法,编译配置等内容。这些内容可以在开始创建项目的过程中通过开发者工具生成,开发者也可以根据需要进行修改和配置。

    配置项说明

    字段名
    类型
    说明
    appid
    string
    小程序的 AppID
    miniprogramRoot
    string
    指定小程序源码的目录(需为相对路径)
    setting
    object
    项目配置
    projectname
    string
    项目名字
    disablePrivate
    boolean
    是否开启私有配置
    packOptions
    object
    打包配置选项

    setting

    setting 中可以指定以下设置:
    字段名
    类型
    说明
    es6
    boolean
    是否启用 es6 转 es5
    urlCheck
    boolean
    不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书
    autoCompile
    boolean
    修改文件的时候自动编译
    mockUpdate
    boolean
    下次编译模拟更新
    scripts
    boolean
    启动自定义处理命令
    mockLogin
    boolean
    开启宿主登录模拟
    compileHotReLoad
    boolean
    是否开启热重载
    nativeCompile
    boolean
    是否开启原生语言快速编译
    IDEPreviewHotRestartCache
    boolean
    是否开启预览热启动缓存
    useCompilerPlugins
    string[]
    编译配置
    bigPackageSizeSupport
    boolean
    调试阶段放宽包体积限制
    webDetect
    boolean
    是否开启 Web 化配置检测

    useCompilerPlugins

    编译插件配置,目前支持 typescript。
    例如:
    { "setting": { "useCompilerPlugins": ["typescript"] } }
    表示项目支持编译 typescript 文件。

    packOptions

    注:此配置自 4.2.7 版本起支持。
    packOptions 用以配置项目在打包过程中的选项。
    目前该配置支持includeignore两个配置,其中include用以配置打包过程中需要强制带上的文件(仅限后缀白名单内),匹配的这些文件将会出现在预览或上传的结果内(该字段的优先级高于ingore字段)。ignore用以配置打包过程中需要忽略的文件,被忽略的文件不会出现在预览或上传的结果内,并且包体积计算时也会忽略这些文件。
    packOptions.ignorepackOptions.include 为一对象数组,对象元素类型如下:
    字段名
    类型
    说明
    value
    string
    路径后取值
    type
    string
    类型
    其中,type 可以取的值为 folderfilesuffixprefixregexpglob,分别对应文件夹、文件、后缀、前缀、正则表达式、Glob 规则。
    注: value 字段的值若表示文件或文件夹路径,以小程序目录 (miniprogramRoot) 为根目录。
    示例配置如下。
    { "packOptions": { "ignore": [ { "type": "file", "value": "test-folder/test.js" }, { "type": "folder", "value": "test-folder" }, { "type": "suffix", "value": ".jpeg" }, { "type": "prefix", "value": "img" }, { "type": "glob", "value": "test-folder/**/*.js" }, { "type": "regexp", "value": "\\.sjs$" } ] } }