我在小程序工程化方面的一些实践

我在小程序工程化方面的一些实践

早期做小程序时,还是原始时代,项目结构混乱,各种冗余代码,每次迭代时由于高昂的维护成本,极为头疼。遂在一次次的更迭中完成了基础组件的初版,极为酸爽。从此之后在当时的情况下只需要关注于业务,对于通用的该封装封装,该分层分层,该解耦解耦,也出了一款独立于业务之外的基础组件。洋洋自得。

后来入职新公司,遇到的问题也是同样的,在工作之余计划将此前抽象的基础组件集成进来,发现了不少问题,其中之一就是上手极为不易,在这个过程中又有一些改进。

更迭

此前公司的小程序开发模式是:
在这里插入图片描述
此前的问题对于页面的创建是极为的不便,对于代码的调试也不方便,代码结构也没有进行分层。

接入基础组件之后,目前的小程序优化为以下结构:
在这里插入图片描述
相比之前添加了一层隔离层,好处与未来的规划可以下图解释:
在这里插入图片描述
当前小程序此前就采用glup进行构建的,于是我在这个基础之上添加了一些任务,使用工具自动引入基础组件,而对编写上层业务代码来说是无感知、无侵入的,还可以按照之前的原生方式写,这是它的一大优势。

目前还有的问题是页面之间的Intent通信耦合还是很严重,解决思路为可以提供一个中介者来完成,不过这个对目前来说问题不大。

目前已经完成的功能有:

  • 开发者模式,可以用来切换环境,目前有生产,预发,测试。
  • 对App的注册进行了代理,可以在基础层完成一些初始化工作。目前有监控的初始化。
  • 对每个Page的生命周期与setData方法做了代理,setData在编译时替换为了setMFData。
  • setMFData目前对setData的调用做了节流。可以提升页面的渲染性能。
  • 将运行时环境所提供的方法挂载到了每个页面实例下。不需要再通过wx.xx调用,可直接通过this.xx调用。这样的好处在于使业务代码与运行时api进行了隔离,也方便使用。
  • 对此前的网络层再做了一层隔离,这一层只是用来承载网络访问,并桥接了网络监控的能力。而上层会做更多的业务处理。

将来可以做的事:

  • 可以采用类vue的编写方式,将4个文件合并至一个文件,扩展名可以为*.mp。
  • 可以写一个脚手架用来创建*.mp文件。
  • 需要写一个mp-loader将*.mp转换为对应的微信文件。
  • 可以写一个转换工具将之前的代码合并至一个*.mp文件中。

*.mp文件的结构可以如下:

// *.mp
// <!-- wxml内容 -->
<template><view id="page"></view>
</template>// <!-- js内容 -->
<script>Page({data: {},onLoad() { },reload() {},onUnload() {}})
</script>// <!-- css内容 -->
<style>#page {padding: 40rpx 50rpx;text-align: center;}
</style>// <!-- 小程序特有的配置 -->
<config>{"navigationBarTitleText": "小程序开发者"}
</config>

以上就是我目前可以根据当前的一些问题进行的一些探索,这也是一个循序渐进的过程,将来在业务需要时也会催生出更好的方案,权当给大家分享一个实践的思路。

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

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

相关文章

LeetCode 430. 扁平化多级双向链表(DFS)

1. 题目 您将获得一个双向链表&#xff0c;除了下一个和前一个指针之外&#xff0c;它还有一个子指针&#xff0c;可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项&#xff0c;依此类推&#xff0c;生成多级数据结构&#xff0c;如下面的示例所示。 扁平化列表…

详解:多模态知识图谱种类及其应用

详解&#xff1a;多模态知识图谱种类及其应用 本文系统的讲述了一些关于多模态知识图谱的相关知识&#xff0c;作者介绍了一些重要的开源多模态知识图谱&#xff0c;基于百科多模态知识图谱Richpedia以及相关使用网站和多模态知识图谱的应用。>>加入极市CV技术交流群&am…

Android Hook技术防范漫谈

背景 当下&#xff0c;数据就像水、电、空气一样无处不在&#xff0c;说它是“21世纪的生产资料”一点都不夸张&#xff0c;由此带来的是&#xff0c;各行业对于数据的争夺热火朝天。随着互联网和数据的思维深入人心&#xff0c;一些灰色产业悄然兴起&#xff0c;数据贩子、爬虫…

论文浅尝 - ICML2020 | 跨域对齐的图最优运输算法

陈卓&#xff0c;浙江大学在读博士&#xff0c;主要研究方向为图神经网络和知识图谱表示学习。论文链接&#xff1a;https://arxiv.org/pdf/2006.14744代码&#xff1a;https://github.com/LiqunChen0606/Graph-Optimal-Transport发表会议&#xff1a;ICML 2020动机该论文的出发…

张俊林:对比学习研究进展精要

文 | 张俊林知乎对比学习(Contrastive Learning)最近一年比较火&#xff0c;各路大神比如Hinton、Yann LeCun、Kaiming He及一流研究机构比如Facebook、Google、DeepMind&#xff0c;都投入其中并快速提出各种改进模型&#xff1a;Moco系列、SimCLR系列、BYOL、SwAV…..&#x…

前端开发者的福音!通过拖拽就可生成Vue代码的平台来了!

Vue组件代码生成平台 Vue组件代码生成平台是一款面向Vue开发者的拖拽式组件代码生成工具。通过它可以快速搭建Vue组件的代码骨架结构。开发者可在此基础上进行二次开发。 目前该平台非常适合快速搭建一个常见的数据查询组件&#xff0c;仅需要拖三个组件进来即可完成&#xf…

LeetCode 523. 连续的子数组和(求余 哈希)

1. 题目 给定一个包含非负数的数组和一个目标整数 k&#xff0c;编写一个函数来判断该数组是否含有连续的子数组&#xff0c;其大小至少为 2&#xff0c;总和为 k 的倍数&#xff0c;即总和为 n*k&#xff0c;其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k 6 输出: …

知识图谱简介

01 什么是知识图谱 我们可以从不同的视角去审视知识图谱的概念。 在Web视角下&#xff0c;知识图谱如同简单文本之间的超链接一样&#xff0c;通过建立数据之间的语义链接&#xff0c;支持语义搜索。 在自然语言处理视角下&#xff0c;知识图谱就是从文本中抽取语义和结构化的…

流量运营数据产品最佳实践——美团旅行流量罗盘

背景 互联网进入“下半场”后&#xff0c;美团点评作为全球最大的生活服务平台&#xff0c;拥有海量的活跃用户&#xff0c;这对技术来说&#xff0c;是一个巨大的宝藏。此时&#xff0c;我们需要一个利器&#xff0c;来最大程度发挥这份流量巨矿的价值&#xff0c;为酒旅的业务…

开源开放 | OMAHA 联合 OpenKG 发布新冠诊疗图谱数据

本文转载在公众号&#xff1a;OMAHA联盟。今年新型冠状病毒肺炎爆发期间&#xff0c;大数据、云计算、人工智能等新一代信息技术支撑着我国建立和健全疫情防控机制。知识图谱作为机器认知智能实现的基础之一&#xff0c;是人工智能的重要组成部分&#xff0c;在“抗疫”行动中赋…

LeetCode 498. 对角线遍历

1. 题目 给定一个含有 M x N 个元素的矩阵&#xff08;M 行&#xff0c;N 列&#xff09;&#xff0c;请以对角线遍历的顺序返回这个矩阵中的所有元素&#xff0c;对角线遍历如下图所示。 输入: [[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ] ]输出: [1,2,4,7,5,3,6,8,9]2. 解题 横…

图灵奖得主Jeff Ullman:机器学习不是数据科学的全部!统计学也不是!

文 | Jeff Ullman源 | 智源社区3月31日&#xff0c;2020年图灵奖重磅出炉&#xff0c;颁给了哥伦比亚大学计算机科学名誉教授 Alfred Vaino Aho 和斯坦福大学计算机科学名誉教授 Jeffrey David Ullman。Jeff Ullman 是数据科学领域的巨擘&#xff0c;他的研究兴趣包括数据库理论…

深度学习及AR在移动端打车场景下的应用

本文内容根据作者在美团Hackathon 4.0中自研的项目实践总结而成。作为美团技术团队的传统节目&#xff0c;每年两次的Hackathon已经举办多年&#xff0c;产出很多富于创意的产品和专利&#xff0c;成为工程师文化的重要组成部分。本文就是2017年冬季Hackathon 4.0一个获奖项目的…

开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT

1 背景及下载地址为了促进自然语言处理技术在金融科技领域的应用和发展&#xff0c;熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 FinBERT 1.0。相对于Google发布的原生中文BERT、哈工大讯飞实验室开源的BERT-wwm 以及 RoBERTa-wwm-ext 等模型&#xff0…

前端如何做极致的首屏渲染速度优化

这里说的极致是技术上可以达到最优的性能。 这里不讨论常见的优化手段&#xff0c;比如&#xff1a;Script标签放到底部、DNS预解析、HTTP2.0、CDN、资源压缩、懒加载等。 这里讨论的是如何使First Contentful Paint的时间降到最低&#xff0c;这个指标决定了白屏的时间有多长…

LeetCode 209. 长度最小的子数组(滑动窗口)

1. 题目 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的连续子数组。 如果不存在符合条件的连续子数组&#xff0c;返回 0。 示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连…

京东 | NLP人才联合培养计划

01 京东AI项目实战课程安排覆盖了从经典的机器学习、文本处理技术、序列模型、深度学习、预训练模型、知识图谱、图神经网络所有必要的技术。项目一、京东健康智能分诊项目第一周&#xff1a;文本处理与特征工程| Bag of Words模型| 从tf-idf到Word2Vec| SkipGram与CBOW| Hiera…

论文小综 | Pre-training on Graphs

本文转载自公众号&#xff1a;浙大KG。作者&#xff1a;方尹、杨海宏&#xff0c;浙江大学在读博士&#xff0c;主要研究方向为图表示学习。在过去几年中&#xff0c;图表示学习和图神经网络(Graph Neural Network, GNN)已成为分析图结构数据的热门研究领域。图表示学习旨在将具…

初探下一代网络隔离与访问控制

概述 安全域隔离是企业安全里最常见而且最基础的话题之一&#xff0c;目前主要的实现方式是网络隔离&#xff08;特别重要的也会在物理上实现隔离&#xff09;。对于很小的公司而言&#xff0c;云上开个VPC就实现了办公网和生产网的基础隔离&#xff0c;但对于有自建的IDC、网络…