美文网首页
Taro小程序跨端方案

Taro小程序跨端方案

作者: 我听过空境的回音i | 来源:发表于2021-11-09 17:12 被阅读0次

    本次展示主要介绍如何实现一套代码跨多端,使用传统的前端方式开发小程序,解决各平台个性化,状态管理,以及自动化打包多平台流程。

    关于Taro

    Taro是有京东凹凸实验室打造的多端统一开发框架,目前支持react、vue等主流框架,写一套代码就可以多端运行

    支持ES6、ES7 8等新规范

    支持npm、yarn安装管理

    支持Redux、MobX进行状态管理

    支持Less、Scss预编译

    支持大部分前端库、组件

    遵循前端开发规范,前端人员皆可参与,极大的解放生产力

    安装脚手架

    npm install -g @tarojs/cli   // 全局安装

    查看版本信息:npm info @tarojs/cli  // 本次演示版本@3.3.9

    初始化:taro init [name]

    开发环境

    "dev:weapp": "npm run build:weapp -- --watch", // 微信

    "dev:swan": "npm run build:swan -- --watch", // 百度系

    "dev:alipay": "npm run build:alipay -- --watch", // 阿里系

    "dev:tt": "npm run build:tt -- --watch", // 头条系

    "dev:h5": "npm run build:h5 -- --watch", // H5

    "dev:rn": "npm run build:rn -- --watch", // react-native

    "dev:qq": "npm run build:qq -- --watch", // QQ

    "dev:jd": "npm run build:jd -- --watch", // 京东系

    "dev:quickapp": "npm run build:quickapp -- --watch" // 快应用

    本地运行

    本次环境主要以微信小程序演示

    npm run dev:weapp // 启动本地环境

    然后打开微信开发者工具,目录为project.config.json配置的miniprogramRoot的值,默认为根目录的dist/,

    使用HTML标签

    多年以来,Web端沉淀了大量优秀的组件库、优秀的前端工程师,使用HTML方式开发有以下优势:

    可以让众多前端工程师0成本上手开发

    大多组件库也可以支持,例如antD

    原生H5代码也可以直接迁移

    使用方法:

    yarn add @tarojs/plugin-html

    config = {

     // ...

      plugins: ['@tarojs/plugin-html']

    }

    百度系小程序

    taro框架没有默认的百度小程序配置,需要手动添加,步骤如下:

    百度小程序配置: project.swan.json

    {

      "libVersion": "2.10.9",

      "setting": {

        "urlCheck": false

      }

    }

    飞书小程序

    yarn add @tarojs/plugin-platform-lark

    plugins: [

    [

    '@tarojs/plugin-platform-lark',

        {

    pc:false

        }

    ]

    ]

    "build:lark": "taro build --type lark",

    "dev:lark": "npm run build:lark -- --watch",

    飞书小程序配置:project.lark.json

    {

    "miniprogramRoot": "./",

      "projectname": "taro-lark",

      "description": "taro-lark",

      "appid": "touristappid",

      "setting": {

    "urlCheck": true,

        "es6": true,

        "postcss": false,

        "minified": false

      },

      "compileType": "miniprogram"

    }

    钉钉小程序

    yarn add @tarojs/plugin-platform-alipay-dd

    plugins: [

    [

    '@tarojs/plugin-platform-alipay-dd'

      ]

    ]

    "build:dd": "taro build --type dd",

    "dev:dd": "npm run build:dd -- --watch",

    环境判断

    可以根据该参数显示相应的平台内容,示例:

    import {useEnv}from "taro-hooks";

    const env = useEnv();

    const envObj = {

    'WEAPP':'这是微信小程序',

      'SWAN':'这是百度小程序',

      'ALIPAY':'这是支付宝小程序',

      'WEB':'这是H5页面',

    }

    {

    envObj[env]

    }

    redux状态管理

    taro项目里可以自由使用react相关的技术栈,比如使用redux解决复杂的数据管理问题。

    使用方法如下:

    安装依赖:npm I redux react-redux

    根目录下新建reducers/index.js

    import {combineReducers} from 'redux';

    function count(state = 0, action) {

    switch (action.type) {

    case 'GET_COUNT':

    return action.data;

        default:

    return state;

    }

    }

    export default combineReducers({

    count

    });

    在入口文件加入配置:

    import {Provider}from 'react-redux';

    import {createStore}from 'redux';

    import reducersfrom './reducers';

    const store =createStore(reducers);

    render() {

    return (

    {this.props.children}

    )

    }

    容器组件内使用

    import {useSelector, useDispatch}from 'react-redux';

    const count =useSelector(state => state.count);

    const dispatch =useDispatch();

    dispatch({

    'type':'GET_COUNT',

      'data': count +1

    });

    自动化

    同时支持多个平台,全部挨个手动打包费时费力,因此可以使用shell脚本实现多平台自动化打包。

    以微信、H5、百度、头条、阿里为例:

    #!/usr/bin/env bash

    count=0

    my_arr=(weapp h5 swan tt alipay)

    fn() {

    name=${my_arr[$1]}

    if [ -d"$name" ];then

        rm -rf"$name"

      fi

      echo "开始打包${name}"

      npm run build:"$name"

      mv dist"$name"

      tar -zcf"$name".tar.gz"$name"

      rm -rf"$name"

      echo "${name}打包结束"

      val=$((${#my_arr[@]} -1))

    if [ $1 -lt $val ];then

        val2=$(($1 +1))

    fn $val2

    fi

    }

    fn $count

    相关文章

      网友评论

          本文标题:Taro小程序跨端方案

          本文链接:https://www.haomeiwen.com/subject/wqfvzltx.html