微信小程序|小程序的构成(初识小程序详细简介)

小程序的构成

1.项目结构

1.1 项目的基本组成结构
1.1.1 p a g e s ( 目 录 ) \textcolor{MediumBlue}{pages(目录)} pages()
  • 用来存放所有小程序页面

  • 所有的页面都以单独的文件夹放在pages目录中

1.1.2 utils(目录)
  • 用来存放工具性质的模块(例如:格式化事件的自定义模块)
1.1.3 a p p . j s \textcolor{MediumBlue}{app.js} app.js
  • 小程序项目的入口文件
1.1.4 a p p . j s o n \textcolor{MediumBlue}{app.json} app.json
  • 小程序项目的全局配置文件
1.1.5 app.wxss
  • 小程序项目的全局样式文件
1.1.6 project.config.json
  • 项目的配置文件

小程序开发者工具在每个项目的根目录只要载入同一个项目的代码包,开发者工具就自动会帮你恢复到当时你开发项目时的个性化配置,其中会包括编辑器的颜色、代码上传时自动压缩等等一系列选项。

项目配置文件

可以在项目根目录使用 project.config.json 文件对项目进行配置。

字段名类型说明
miniprogramRootPath String指定小程序源码的目录(需为相对路径)
qcloudRootPath String指定腾讯云项目的目录(需为相对路径)
pluginRootPath String指定插件项目的目录(需为相对路径)
compileTypeString编译类型
settingObject项目设置
libVersionString基础库版本
appidString项目的 appid,只在新建项目时读取
projectnameString项目名字,只在新建项目时读取
packOptionsObject打包配置选项
debugOptionsObject调试配置选项
scriptsObject自定义预处理

compileType 有效值

名字说明
miniprogram当前为普通小程序项目
plugin当前为小程序插件项目

setting 中可以指定以下设置

字段名类型说明
es6Boolean是否启用 es6 转 es5
postcssBoolean上传代码时样式是否自动补全
minifiedBoolean上传代码时是否自动压缩
urlCheckBoolean是否检查安全域名和 TLS 版本

setting示例配置:

"setting": {
        "urlCheck": true,
        "es6": true,
        "enhance": true,
        "postcss": true,
        "preloadBackgroundData": false,
        "minified": true,
        "newFeature": false,
        "coverView": true,
        "nodeModules": false,
        "autoAudits": false,
        "showShadowRootInWxmlPanel": true,
        "scopeDataCheck": false,
        "uglifyFileName": false,
        "checkInvalidKey": true,
        "checkSiteMap": false,
        "uploadWithSourceMap": true,
        "compileHotReLoad": false,
        "lazyloadPlaceholderEnable": false,
        "useMultiFrameRuntime": true,
        "useApiHook": true,
        "useApiHostProcess": true,
        "babelSetting": {
            "ignore": [],
            "disablePlugins": [],
            "outputPath": ""
        },
        "enableEngineNative": false,
        "useIsolateContext": true,
        "userConfirmedBundleSwitch": false,
        "packNpmManually": false,
        "packNpmRelationList": [],
        "minifyWXSS": true,
        "disableUseStrict": false,
        "minifyWXML": true,
        "showES6CompileOption": false,
        "useCompilerPlugins": false
    },

scripts 中指定自定义预处理的命令

名字说明
beforeCompile编译前预处理命令
beforePreview预览前预处理命令
beforeUpload上传前预处理命令

packOptions

packOptions 用以配置项目在打包过程中的选项。打包是预览、上传时对项目进行的必须步骤。

目前可以指定 packOptions.ignore 字段,用以配置打包时对符合指定规则的文件或文件夹进行忽略,以跳过打包的过程,这些文件或文件夹将不会出现在预览或上传的结果内。

packOptions.ignore 为一对象数组,对象元素类型如下:

字段名类型说明
valuestring路径或取值
typestring类型

其中,type 可以取的值为 folderfilesuffixprefix,分别对应文件夹、文件、后缀、前缀。

示例配置如下:

{
  "packOptions": {
    "ignore": [{
      "type": "file",
      "value": "test/test.js"
    }, {
      "type": "folder",
      "value": "test"
    }, {
      "type": "suffix",
      "value": ".webp"
    }, {
      "type": "prefix",
      "value": "test-"
    }]
  }
}

: value 字段的值不支持通配符、正则表达式。若表示文件或文件夹路径,以小程序目录 (miniprogramRoot) 为根目录。

debugOptions

debugOptions 用以配置在对项目代码进行调试时的选项。

目前可以指定 debugOptions.hidedInDevtools 字段,用以配置调试时于调试器 Sources 面板隐藏源代码的文件。

hidedInDevtools 的配置规则和 packOptions.ignore 是一致的。

当某个 js 文件符合此规则时,调试器 Sources 面板中此文件源代码正文内容将被隐藏,显示为:

// xxx.js has been hided by project.config.json

注:配置此规则后,可能需要关闭并重新打开项目才能看到效果。

项目配置示例:

{
  "miniprogramRoot": "./src",
  "qcloudRoot": "./svr",
  "setting": {
    "postcss": true,
    "es6": true,
    "minified": true,
    "urlCheck": false
  },
  "packOptions": {},
  "debugOptions": {}
}

⚠**“checkSiteMap”: false, 可以取消黄色警告(取消sitemap的索引提示)**

  • sitemap.json-用来配置小程序及其页面是否允许被微信索引
1.2 页面的基本文件(组成部分)
  • .js-逻辑交互(脚本文件)

    • 存放页面的数据、事件处理函数等
  • .json-配置(配置文件)

    • 配置当前页面窗口的外观、表现等
  • .wxss-美化页面结构(样式文件)

    • 当前页面的样式表页面
  • .wxml-渲染页面结构(结构文件)

    • 页面的模板结构文件

2.JSON-配置文件(配置文件)

app.json是当前小程序的 全 局 配 置 \textcolor{red}{全局配置} ,包括了小程序的 所 有 页 面 路 径 、 窗 口 外 观 、 界 面 表 现 、 底 部 t a b \textcolor{red}{所有页面路径、窗口外观、界面表现、底部tab} tab

每个页面自己的json内容与app.json冲突时会优先使用自身的json内容

2.1 p a g e s \textcolor{MediumBlue}{pages} pages

用来记录当前小程序所有的页面路径

新建页面只需要在app.js文件的"pages":[]列表中加入"pages/页面名/页面名"即可

"pages":[
    "pages/home/home",    //放在第一个位置的页面会被当做首页显示
    "pages/user/user",
    "pages/index/index",
    "pages/logs/logs",
    "pages/msg/msg"
  ],
2.2 w i n d o w \textcolor{MediumBlue}{window} window

全局定义小程序所有页面的背景色、文字颜色等

"window":{
    "backgroundTextStyle":"light",  // 小圆点的主题颜色light/dark
    "navigationBarBackgroundColor": "#ffe23b",  // 导航栏背景颜色  
    "navigationBarTitleText": "Jc图片表情Hub",  // 导航栏文字标题内容
    "navigationBarTextStyle":"black",  // 导航栏文字颜色
    "enablePullDownRefresh": true,  // 是否开启下拉刷新
    "backgroundColor": "#ffe29b"  // 背景颜色(下拉刷新时才能看到)
  },
2.3 s t y l e \textcolor{MediumBlue}{style} style

全局定义小程序组件所使用的样式版本

  "style": "v2",
2.4 sitemapLocation

用来指明sitemap,json的值

  "sitemapLocation": "sitemap.json",

3.WXSS-美化页面(样式文件)

3.1 新增了 rpx 尺寸单位

WXSS支持新的尺寸单位 $\textcolor{red}{rpx} $ ,在不同大小屏幕上可以自动进行换算适配

3.2 提供全局样式和局部样式

项目根目录中的app.json会作用于所有小程序页面

局部页面的 .wxss 样式仅对当前页面生效

3.3 仅支持部分CSS选择器
  • .class 和 #id
  • element
  • 并集选择器、后代选择器
  • ::after 和 ::before 等伪类选择器

4.WXML-渲染页面(结构文件)

4.1 WXML标签名称

HTML标签名称(div,span,img,a)

WXML标签名称(view,text,image,navigator)

4.2 属性节点

HTML:超链接

WXML:

4.3 类似于Vue中的模板语法
  • 数据绑定
  • 列表渲染
  • 条件渲染

5.JS-逻辑交互(脚本文件)

小程序中js文件分为三大类:

5.1 app.js
  • 是**$\textcolor{red}{整个小程序的入口文件} ∗ ∗ , 通 过 调 用 ∗ ∗ **,通过调用** \textcolor{red}{App()} $**函数来启动整个小程序
5.2 页面的 .js 文件
  • 是**$\textcolor{red}{页面的入口文件} ∗ ∗ , 通 过 调 用 ∗ ∗ **,通过调用** \textcolor{red}{Pages()} $**函数来创建并运行页面
5.3 普通的.js文件
  • 是**$\textcolor{red}{普通的功能模块文件} ∗ ∗ , 用 来 封 装 ∗ ∗ **,用来封装** \textcolor{red}{公共的函数或属性}$**供页面使用

6.小程序的宿主环境

宿 主 程 序 是 程 序 运 行 所 必 须 的 依 赖 环 境 \textcolor{red}{宿主程序是程序运行所必须的依赖环境} 宿
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VFnT1uP-1646726421630)(image-20220308144815408.png)]

6.1 小程序宿主环境的内容
6.1.1 通信模型

小程序中通信的主题是 渲 染 层 \textcolor{red}{渲染层} 逻 辑 层 \textcolor{red}{逻辑层} ,其中:

① WXML模板和WXSS样式工作在渲染层

② JS脚本工作在逻辑层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEtv5kKu-1646726609198)(image-20220308145441495.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kWdK8Vhn-1646726609199)(image-20220308145519817.png)]

6.1.2 运行机制
小程序的启动过程
  1. 把小程序的代码包下载到本地
  2. 解析app.json 全局配置文件
  3. 执行app.js 小程序入口文件,调用APP()创建小程序实例
  4. 渲染小程序首页
    • 加载解析页面的 .json配置文件
    • 加载页面的 .wxml模板和 .wxss样式
    • 执行页面的 .js文件,调用Page()创建页面实例
    • 页面渲染完成

​ 5.小程序启动完成

6.1.3 组件
6.1.3.1 常用的视图容器类组件
  • view

    • 普通视图区域
    • 类似于HTML中的 div,是一个块级元素
    • 常用来实现页面的布局效果
    <view class="container1">
        <view>A</view>
        <view>B</view>
        <view>C</view>
    </view>
    
  • scroll-view

    • 可滚动的视图区域
    • 常用来实现滚动列表效果
    <view><text>纵向滚动</text></view>
    <scroll-view class="container2" scroll-y>
        <view>A</view>
        <view>B</view>
        <view>C</view>
    </scroll-view>
    
  • swiper 和 swiper-item

    • 轮播图容器组件 和 轮播图 item 组件
    <view>轮播图</view>
    <!-- indicator-dots                小圆点   
         indicator-color="white"       默认颜色
         indicator-active-color="grey" 激活颜色
         autoplay                      自动轮播
         interval="3000"               自动轮播时间间隔
         circular                      循环轮播
    -->
    <swiper class="swiper-container" indicator-dots indicator-color="white" indicator-active-color="grey" autoplay interval="3000" circular>
        <!-- 第一个轮播图 -->
        <swiper-item>
            <view class="item">A</view>
        </swiper-item>
        <!-- 第二个轮播图 -->
        <swiper-item class="item">
            <view class="item">B</view>
        </swiper-item>
        <!-- 第三个轮播图 -->
        <swiper-item class="item">
            <view class="item">C</view>
        </swiper-item>
    </swiper>
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UAfG20Ny-1646726421632)(image-20220308151151174.png)]

6.1.3.2 常用的基础内容组件
  • text

    • 文本组件
    • 类似于HTML中的span标签,是一个行内元素

    text组件的user-select 或 selectable属性,实现长按选中文本内容效果

    <!-- user-select用户长按可选中复制 -->
    <view>
        手机号码为:
        <text user-select="true">13088888888</text>
    </view>
    
  • rich-text

    • 富文本组件
    • 支持把HTML字符串渲染为WXML结构

    rich-text组件的nodes属性节点,把HTML字符串渲染为对应的UI结构

    <!-- rich-text可以通过nodes属性把html字符串渲染成对应的UI结构 -->
    <rich-text nodes="<h1 style='color:red'>标题<h1>"></rich-text>
    
  • button

    • 按钮组件
    • 主要属性:type(类型:默认、primary、warn)、size(尺寸)、bind(绑定事件函数)
    <!--button组件-->
    <view>~~~~~~~~~~通过 type 指定按钮类型~~~~~~~~~~</view>
    <button>默认按钮</button>
    <button type="primary">主色调按钮</button>
    <button type="warn">警告按钮</button>
    
    <view>~~~~~~~~~~size="mini" 小尺寸按钮~~~~~~~~~~</view>
    <button size="mini">默认按钮</button>
    <button type="primary" size="mini">主色调按钮</button>
    <button type="warn" size="mini">警告按钮</button>
    
    <view>~~~~~~~~~~plain 镂空按钮~~~~~~~~~~</view>
    <button size="mini" plain>默认按钮</button>
    <button type="primary" size="mini" plain>主色调按钮</button>
    <button type="warn" size="mini" plain>警告按钮</button>
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-68wEejQs-1646726421632)(image-20220308151959264.png)]

  • image

    • 图片组件
    • 主要属性:src(路径)、mode(裁剪和缩放模式)
    <view>~~~~~~~~~~image组件~~~~~~~~~~</view>
    <!-- image 的 mode属性-->
    <image src="/images/mountain.jpg" mode="scaleToFill" ></image>
    <image src="/images/mountain.jpg" mode="widthFix" ></image>
    <image src="/images/mountain.jpg" mode="heightFix" ></image>
    <image src="/images/mountain.jpg" mode="aspectFit" ></image>
    

​ mode属性值如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5hsXjJUW-1646726421632)(image-20220308152557768.png)]

6.1.4 API

小程序的API是由宿主环境提供的,通过这些小程序的API,开发者可以方便的调用微信提供的能力,例如:获取用户信息、本地储存、支付功能等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxuFoSqW-1646726421633)(image-20220308152819876.png)]

7.小程序协同分工与分布

7.1 协同分工
7.1.1 项目成员的组织结构

在这里插入图片描述

7.1.2 开发者权限说明
  • 开发者权限:可使用小程序开发工具及对小程序的功能进行代码开发
  • 体验者权限:可使用体验版小程序
  • 登录权限:可登录小程序管理后台,无需管理员确认
  • 开发设置:设置小程序服务器域名、消息推送及扫描普通链接二维码打开下程序
  • 腾讯云管理:云开发相关设置
7.1.3 小程序成员管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rRZfynNQ-1646726421633)(image-20220308155054669.png)]

7.1.4 小程序的开发流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Feh2hrUK-1646726813067)(image-20220308155206065.png)]

7.2 小程序的发布
7.2.1 小程序的版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t5zBZHId-1646726421634)(image-20220308155330305.png)]

7.2.2 发布上线
1.上传代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kCnwzDEf-1646726421635)(image-20220308155529655.png)]

2.后台查看上传的版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfxrpwR6-1646726856846)(image-20220308155617315.png)]

3.发布

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IZBRS6Xw-1646726421636)(image-20220308155659660.png)]

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值