每日优鲜小程序基础组件介绍

每日优鲜小程序基础组件介绍

    • 1.基础组件介绍
    • 2.基础组件的结构与作用
    • 3.基础组件的接入方法
      • 初次引入
      • 初始化
      • 更新与维护
      • 基础组件接入

1.基础组件介绍

小程序基础组件基于每日优鲜主商城小程序业务实践演变而来。

基础组件的名称为:mini_app_base_module。

基础组件的项目地址为:https://github.com/sahadev/mini_app_base_module。

2.基础组件的结构与作用

我们理想的项目结构应该是这样的:
在这里插入图片描述
也就是说,合理的项目结构应该讲究层的概念,各个层之间是绝对分离的。上下层彼此通过开放接口相互通信,杜绝跨层访问。也就是说不应该使业务组件直接访问RuntimeFrameworkApi层,页面不应该直接访问基础组件层等等。而mini_app_base_module正是处于第三级的基础组件层。

mini_app_base_module基础组件提供的功能有:

baseApplication:为整个应用提供了与运行平台隔离的环境,并做了运行时保护机制,为后期接入第三方SDK提供统一入口。目前的功能有:全局变量管理、setData方法执行校验、页面常用的各种状态方法等。

baseMonitorManager:用于为运行时API提供监控。具体实现需要业务组件提供网络访问实现。

baseNetRequestManager:用于发起网络请求。业务组件的埋点、监控、业务网络访问都需要通过它进行访问。

baseStorageManager:用于管理序列化存储功能,并提供了一键清除序列化值的方法。

baseUtils:提供调试模式管理、日志输出、UUID创建、字符串格式化等基础工具。

performanceUtil:性能调试工具,用于方法执行速度的性能调试。

thirdApi:提供除网络访问外的运行时api。

thirdNetApi:用于访问运行时网络api。

3.基础组件的接入方法

基础组件了解了,该怎么接入它呢?

初次引入

在项目中通过命令git submodule add https://github.com/sahadev/mini_app_base_module.git 进行引入。

引入后,将在项目中产生两个文件:

        .gitmodulesmini_app_base_module

初次引入的开发者需要将这两个文件/文件夹commit并push。

初始化

在完成引入之后,基础组件的代码并没有存在与项目中,还需要进行初始化操作:git submodule update --init --rebase。小程序开发团队的每位开发者都需要执行一次。

更新与维护

进行以上操作之后,项目中会多出一个文件夹mini_app_base_module以及一个文件.gitmodules。当mini_app_base_module有更新或者有更改时,都需要进入mini_app_base_module文件夹中单独进行fetch、rebase操作或commit push操作。

基础组件接入

如果顺利完成了引入,则开始进行接入操作。基础组件功能的使用视业务而定。但接入BaseApplciation是必须要做的。

1.在业务代码中创建好application.js文件,application.js将作为业务组件的全局管理器,需要在application.js添加如下代码:

// Application 全局管理入口
const {MFApp, MFPage, getApplication, registObserver
} = require('./mini_app_base_module/baseApplication');
==================
//视业务情况而定的业务代码
=================
module.exports = {MFApp, MFPage, getApplication
}

2.在app.js中引入application:

const { MFApp } = require('./application');//将App方法调用替换为MFAppApp(param) => MFApp(param);

3.在对应的页面中引入application:

// 示例 pages/mainPages/home/home.jsconst { getApplication, MFPage } = require('../../../application');const app = getApplication();//将Page方法的调用替换为MFPagePage(param) => MFPage(param)

===============================================================

在完成以上基本接入之后,后续可视情况而定完善基础组件的其它功能。

每日优鲜主商城小程序经过大量的版本迭代之后,已经到了不得不重构的阶段。该基础组件也正是基础主商城小程序重构的设计思路进行实现的。多个新业务小程序项目已经在此基础之上进行了实践,并且已经实现了大量的可共用的组件,但这些组件还需要与业务代码进行拆分,请大家关注后续进展,也希望大家可以一起参与进来完善壮大这个基础组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 高负载下的中断优化

背景 2017年年初以来,随着Redis产品的用户量越来越大,接入服务越来越多,再加上美团点评Memcache和Redis两套缓存融合,Redis服务端的总体请求量从年初最开始日访问量百亿次级别上涨到高峰时段的万亿次级别,给运维和架构…

LeetCode 394. 字符串解码(栈)

1. 题目 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格&…

90TB显存!英伟达发布新一代SuperPod超算,AI算力新巅峰!

周一,黄教主又很淡定的在自家厨房里开完了GTC发布会众所周知,NLP领域的模型一个比一个大,自从百亿参数的Google T5出来后,大部分AI研究者只能望着手里的蹩脚算力兴叹。如今动辄就是千亿、万亿参数模型,目前比较流行的V…

VS Code HtmlFindClass 插件介绍

这款插件诞生于工作中,在写大量的前端代码之后,发现有的工作比较重复,浪费时间,于是想能不能通过工具来解决。起初是拿Java写的,但是它不利于推广,因为很多前端同学不掌握Java。以至于是一直我自己在使用。…

论文浅尝 - ACL2020 | 一种用于关系三元组提取的级联二进制标记框架

论文笔记整理:窦春柳,天津大学硕士。链接:https://arxiv.org/pdf/1909.03227.pdf动机首先作者提出了问题,传统的关系抽取是不能很好的解决三元组重叠,如下图。从图中可以发现,传统的关系抽取针对Normal 类型…

LeetCode 733. 图像渲染(DFS/BFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜…

美团外卖Android平台化架构演进实践

美团外卖自2013年创建以来,业务一直高速发展。目前美团外卖日完成订单量已突破1800万,成为美团点评最重要的业务之一。美团外卖的用户端入口,从单一的外卖独立App,拓展为外卖、美团、点评等多个App入口。美团外卖所承载的业务&…

Vue源码探究笔记

对于源代码分析有一个基本原则:要找到它的最早期的版本,比如1.0版本。1.0版本奠定了一款框架的基础结构,之后的版本迭代都是基于这套结构进行更新的。所以掌握了基础结构,那也就掌握了这个框架。这个原则适用于世界上绝大多数事务…

Jarvis:一个值得关注的多模态端到端人机对话框架,针对所有行业适配

说到应用级的人机对话框架,很多人可能首先想到的是RASA开源项目。不过,今天跟大家简要分享一个功能更为丰富、性能更为强劲的多模对话框架——Jarvis,非常值得对话系统从业者关注一下。Jarvis是英伟达于2019年发布的人机对话服务,…

技术动态 | 知识图谱构建的研究已走入下半场,但大规模落地应用仍需时间

本文转载自公众号:AI前线。作者 | 李冬梅 采访嘉宾 | 唐杰知识图谱是近年来人工智能技术蓬勃发展的核心驱动力之一,已广泛应用在金融、电商、医疗、政务等众多领域,经过短短几年的发展,热度依旧不减,未来,知…

LeetCode 542. 01 矩阵(BFS DP)

文章目录1. 题目2. 解题2.1 BFS2.2 DP动态规划1. 题目 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0示例 2: 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0…

美团旅行销售绩效系统研发实践

背景 O2O是目前互联网竞争最激烈的领域之一,其重要的业务特征是有大规模的线下业务团队,他们分布在五湖四海,直接服务着数以百万的商家,责任很重,管理的难度巨大。能否通过技术手段,打造高效的线下团队&…

深入解析Node.js setTimeout方法的执行过程

深入了解setTimeout源码之前,本有两个选择。一是通过chromium源码分析,二是通过Node.js源码分析。后来发现第一种方案的源码获取成本太大,于是从Node官网获取了几十兆的代码用来了解。 当前的Node版本为:v10.16.0 setTimeout方法定…

别只关注GPT3!细如发丝的模型更具现实杀伤力!

这个世界上有两种极具难度的工程:第一种是把很平常的东西做到最大,例如把语言模型扩大成能够写诗写文写代码的GPT-3;而另一种恰恰相反,是把很平常的东西做到最小。 ----王苏语录GPT3自从诞生以来,便受到…

论文浅尝 - EMNLP2020 | 基于分组式对比学习的神经对话生成

论文笔记整理:叶宏彬,浙江大学计算机博士生。论文地址:https://arxiv.org/abs/2009.07543摘要:近年来,神经对话问答的产生已广受欢迎。现有对话模型学习中广泛采用了最大似然估计目标(MLE)。但是…

LeetCode 841. 钥匙和房间(DFS/BFS)

文章目录1. 题目2. 解题2.1 DFS2.2 BFS1. 题目 有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。 在形式上&#xff…

容器中用uwsgi协议部署注意的问题以及用flask部署

1 表示当前容器名 一般通过 docker exec -it 容器名 /bin/bash , 进入容器内部进行操作,比如安装环境,传输文件 2 4888 容器内部访问端口地址,如果对外开放api,需要对其进行映射,比如映射成11022,11022是对外访问的端…

美团点评金融平台Web前端技术体系

背景 随着美团点评金融业务的高速发展,前端研发数量从 2015 年的 1 个人,扩张到了现在横跨北上两地 8 个事业部的将近 150 人。业务新,团队新,前端领域框架技术又层出不穷,各个业务的研发团队在技术选择上没有明确的指…

参会邀请 - CCKS2020 | 2020全国知识图谱与语义计算大会(CCKS2020)明日开幕

本文转载自公众号: 中国中文信息学会。第十四届全国知识图谱与语义计算大会将于2020年11月12日-15日在南昌召开。会议由中国中文信息学会语言与知识计算专业委员会主办,由江西师范大学承办,智源社区提供社区支持。本次会议讲习班采用线上举行…

Linux 程 序 员 失 业 警 告

文 | 小戏有多少人期待过像贾维斯一样的强人工智能?尽管老实说看当下的技术离这一期待还很遥远,但用用类似 GPT-3 这样的技术去实现些朴素的愿望似乎并没有那么困难。就在昨天,来自 Facebook 的 Elvis 在推特上发布了一个借助 OpenAI 的 GPT-…