• 小程序 之 百度智能小程序(第一章)


    智能小程序文档:https://smartprogram.baidu.com/developer/index.html (点击进入文档 - 开发)

    下载开发工具:https://smartprogram.baidu.com/docs/develop/tutorial/index_first/  (根据自己电脑选择下载对应版本:Windows 64版 | Mac版)

    新建 - 下一步 - 填写项目名称(自己取名)、项目目录(存放小程序代码的文件夹,需提前新建好)、AppID(此为项目ID,目前暂不支持个人开发申请,则点击 体验:智能小程序)- 完成

    打开后可看到小程序中的各类组件使用效果,及代码示例,可供开发参考学习。

     以下将分三步学习小程序基础开发:

    第一步: 基本配置 (参考文档:简易教程 - 全局配置)

    1、目录结构

    2、配置界面、路径

    可以通过配置 app.json 文件,设置 SWAN 的界面、路径、多 TAB 等。

    app.json文件

    1 { 2 // 配置页面路径,此为必须配置,否则页面无法编译出来 3 "pages": [ 4 "pages/index/index", 5 "pages/detail/detail" 6 ], 7 // 配置app头部样式以及文字内容等等 8 "window": { 9 "navigationBarTitleText": "Demo" 10 }, 11 // 配置app底部tab样式以及文字内容等等 12 "tabBar": { 13 "list": [{ 14 "pagePath": "pages/index/index", 15 "text": "首页" 16 }, { 17 "pagePath": "pages/detail/detail", 18 "text": "详情" 19 }] 20 } 21 }

    3、了解生命周期,常用的一般是onLoad,页面加载完成的时候触发,相当于vue中的mounted,比如请求数据的方法在vue中mounted里调用,而小程序中则在onLoad中调用

     

     4、事件处理函数

    在小程序中事件函数跟vue.js相似,例子点击事件 vue.js:@click="tapAction"   小程序: bind:tap="tapAction"(也可以省略写为 bindtap="tapAction")

    然而带值给方法  vue.js:@click="tapAction (index, item) "  小程序:bind:tap="tapAction"  data-index="{{index}}"  data-item="{{item}}" (格式为:data-自定义命名="{{所需要带给方法的值}}")

    index.swan文件
    <view s-for="item, index in list">
        <text bind:tap="tapAction" data-index="{{index}}" data-item="{{item}}">{{item}}</text>
    </view>
    index.js文件
    Page({
        data: {
            list: ['列表1', '列表2', '列表3']
        },
        // 页面加载完成的生命周期方法
        onLoad() {
    
        },
        // 方法 - 列表点击
        tapAction(e) {
            console.log(e) // 传过来的值会在e.currentTarget.dataset里接收到,打印出来截图看下方”附上图
       }
    });

    附上图:

     

    第二步: 使用组件,开始开发页面结构布局(参考文档:组件)

    智能小程序中提供了丰富多样的组件,开发者可以在 .swan 文件中,使用组件开始完成自己的智能小程序页面。

    组件示例:

     1、view:视图容器(相当于html中的div,用来当作包裹容器,每个view独占一行)

      text:放文本的元素(相当于html中的span,用来放置文本,在同一行显示)

    index.swan文件
    // view相当于块级标签div,text 相当于行内标签span
    <view class="view">
           <text class="text ">view 相当于块级标签</text>
           <text class="text ">text 相当于行内标签</text>
    </view>

     2、rich-text:富文本(可用于解析包含html标签的文本)

    index.swan文件
    <rich-text nodes="{{nodes}}"></rich-text>
    index.js文件
    Page({
        data: {
            // 绑定的值
            nodes: ‘这是一个span标签<span style="color: red;">高亮</span>’
       }
    })    

     输出结果为:这是一个span标签高亮

    3、input输入框

    index.swan文件
    
    <input value="{{inputValue}}" placeholder="请输入内容" bind:change="inputChange" ></input>
    index.js文件
    Page({
        data: {     
    // input框默认值      inputValue: '',
        },
    // 当slider组件发生改变时绑定的事件      inputChange() {       console.log('input组件改变了');    } });

    以上例子为最常用的布局组件,其他根据开发所需自行看开发文档,文档中均会提供使用例子,基本使用方法与如上例子无异。

     第三步: 使用API,页面结构布局需调用 swan 对象上的端能力方法,一切皆在swan.xxx上实现。(参考文档:API)

    API示例:

    1.、request:发起网络请求(请求接口数据)

    index.swan文件
    // 在.swan上使用data里的数据 <view class="view">{{dataList}}</view>
    index.js文件
    Page({
        data: {
            dataList: ''
        },
        // 页面加载完成的生命周期方法
        onLoad() {
            // 页面加载完成时调用请求数据的方法
            this.getDataAction();
        },
         // 请求数据的方法
        getDataAction() {
            swan.request({
                url: 'https://smartprogram.baidu.com/xxx', // 改为自己的接口地址
                method: 'GET',
                dataType: 'json',
                data: { // 改为自己的接口所需的参数
                        key: 'value' 
                },
                header: {
                        'content-type': 'application/json' // 默认值,不用管
                },
                success: res => { //成功回调
                    console.log(res.data);
                    // 把请求成功返回的res数据赋值给data里的dataList,供页面上.swan使用,然而说到这么设置的原因,可以打印出this,console.log(this),看如下图,可看到里面会有setData方法,用于修改data里的值,而getData可以想到是获取data里的值,但是一般会使用this.data.dataList来代替,比较常用
                    this.setData({
                          dataList: res.data
                    })
              // 赋值之后,console.log(this)打印this,看如下图,可以点开看到data里的数据,如上data里的数据,现在的dataList已为赋值后的值
    console.log(this.data.dataList) }, fail: err
    => { //失败回调 console.log('错误码:' + err.errCode); console.log('错误信息:' + err.errMsg); } }); } });

    console.log(this)打印结果

     

    2.、navigateTo:跳转到某个页面(相当于路由)

    index.swan文件
    
    // 在.swan上加一个点击跳转页面的方法
    <view class="view" bind:tap="clickAction">点击</view>
    index.js文件
    Page({
        data: {
         
        },
        // 页面加载完成的生命周期方法
        onLoad() {
    
        },
         // 点击后的方法
        clickAction() {
            swan.navigateTo({
           // 此路径去到detail页面,为app.json的pages里配置的路径,?后直接传递参数
            url: 'pages/detail/detail?key=value'
         });
      }
    });

    3、showToast:显示消息提示框(提示消息)

    index.swan文件
    
    // 在.swan上加一个点击显示消息提示框的方法
    <view class="view" bind:tap="clickAction">点击</view>
    index.js文件
    
    Page({
        data: {
         
        },
        // 页面加载完成的生命周期方法
        onLoad() {
    
        },
         // 点击后的方法
        clickAction() {
            swan.showToast({
    
            title: '我是标题',
               icon: 'loading',// 如果不想有icon图标则设置为'none'
               duration: 1000// 消息提示框显示多长时间,单位毫秒,默认2000
    
         });
       }
     });

    以上例子为最常用的API方法,其他根据开发所需自行看开发文档,文档中均会提供使用例子,基本使用方法与如上例子无异。

    看完之后应该能够实现一个简单的布局效果。

  • 相关阅读:
    MT【105】待定系数算最大最小
    MT【103】二阶递推找规律
    MT【102】一个常见的因式分解公式
    MT【101】分配问题举例若干
    MT【100】经典计数之分配问题
    MT【99】2005联赛二试题我的一行解法
    Qt Creator键盘快捷键速查
    AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
    图像开源代码
    c++实用技巧
  • 原文地址:https://www.cnblogs.com/nilinmin/p/10342832.html
Copyright © 2020-2023  润新知