获得徽章 0
什么时候会请求异常
我们都知道 await 后面一般都是异步请求,异步请求发生异常的原因大致有以下几种:

网络问题导致,网络断开连接,请求不到;
网络慢导致异步请求超时。
什么情况下需要处理请求异常
一旦有以上情况出现,这个异步请求就会产生异常,而 JavaScript 又是一个单线程语言,代码报错后就会导致后面的代码无法继续执行,所以此时就需要添加 try-catch 来捕获异步请求的异常,使得代码可以继续向后执行。 #挑战每日一条沸点#
展开
评论
Rome 是什么?
Rome 是一个全新的前端工具链,旨在重新定义前端开发体验。它是一个一站式解决方案,涵盖了许多前端开发中常见的问题和任务。Rome 的主要目标是提供一致性和高性能,以加速前端开发流程。它的核心特点包括:

1. 依赖管理
Rome 提供了强大的依赖管理系统,可用于管理你的项目中的依赖关系。它支持 JavaScript、TypeScript 和 Flow,并能够准确地分析和处理依赖项,以确保你的项目始终保持一致。

// 安装依赖
rome deps add react

// 查看依赖树
rome deps list
这个特性非常有用,因为它将所有的依赖关系都纳入统一管理,无需依赖其他工具 #挑战每日一条沸点#
展开
评论
程序员和资本眼中的低代码是一回事儿么?

对于程序员来说,低代码的概念更接近于DSL。比如,JSX是对DOM的抽象。

如果将直接书写操作DOM的方法看作代码,那么使用JSX这套DSL编写的React代码就是低代码。

因为前者是开发者面向宿主环境(浏览器)直接命令式的书写代码。

后者是开发者声明式地操作状态,React这个低代码平台再将状态变化转化为操作DOM的方法。

而对于资本来说,低代码的概念更接近于珍妮纺纱机,有了他,就能革了纺纱工(程序员)的命。

#挑战每日一条沸点#
展开
评论
要做权限控制,肯定需要一个code,无论是权限码还是角色码都可以,一般后端会一次性返回,然后全局存储起来就可以了,Vue vben admin是在登录成功以后获取并保存到全局的store中:

import { defineStore } from 'pinia';
export const usePermissionStore = defineStore({
state: () => ({
// 权限代码列表
permCodeList: [],
}),
getters: {
// 获取
getPermCodeList(){
return this.permCodeList;
},
},
actions: {
// 存储
setPermCodeList(codeList) {
this.permCodeList = codeList;
},

// 请求权限码
async changePermissionCode() {
const codeList = await getPermCode();
this.setPermCodeList(codeList);
}
}
})
接下来它提供了三种按钮级别的权限控制方式,一一来看。 #挑战每日一条沸点#
展开
评论
function pushList(type, component) {
const actions = {
common: (commonComponent) => componentCommonList.push(commonComponent),
dataShow: (dataShowComponent) =>
componentDataShowList.push(dataShowComponent),
form: (formComponent) => componentFormList.push(formComponent),
button: (buttonComponent) => componentButtonList.push(buttonComponent),
icons: (iconsComponent) => componentIconList.push(iconsComponent),
};
return actions[type](component);
}
在单独的物料中调用该返回函数,获取其中的type以及其他值,type的作用是用来区分该组件属于哪个种类,例如:

registerConfig.register({
type: "common",
preview: () => <NavigationTd />,
render: (blockStyles, block) => (
<NavigationTd
style={blockStyles.value}
class="renderNavigationBase"
{...block.componentProps}
></NavigationTd>
),
key: "一级导航栏",
}); #挑战每日一条沸点#
展开
评论
中心画布区域
承载左侧小组件组装成一个大屏页面,有标尺、标线等,小组件在画布中可随意拖动并支持8点放大缩小,支持鼠标放置小组件上后鼠标右键菜单,功能有撤销上一步、删除该小组件等;

右侧配置项
主要有三个部分,小组件数据源配置,小组件外观属性配置,小组件事件配置;

3.拖拽原理
html5中的支持拖拽的属性「draggable」,draggable设置为"true"时,表示该元素可拖拽;当元素为图片、链接、文本时,draggable属性默认为"true",无需手动设置,除非将上述三种元素禁用拖拽时,需手动设置draggable="false";其它元素需要手动设置draggable="true"来支持该元素的可拖拽; #挑战每日一条沸点#
展开
评论
最近AIGC(AI Generated Content,利用AI生成内容)非常热,技术圈也受到了很大冲击。目前来看,利用LLM(Large Language Model,大语言模型)辅助开发还停留在非常早期的阶段,主要应用是辅助编码,即用自然语言输入需求,模型输出代码。更近一步的探索也仅仅是在此基础上的一层封装(比如copilot X、cursor)。

但即使在如此早期阶段,也对开发者的心智产生极大震撼,AI让程序员失业这样的论调甚嚣尘上。

LLM的爆发对前端意味着什么?本文尝试预测一波2024年之后的前端开发模式,这个预测遵循如下原则:

尊重技术客观发展规律。以当前已有技术为基础预测,而不是将预测建立在某种虚无缥缈的高端技术,或者假想某些技术突破重大瓶颈

尊重人性。程序员只是谋生的职业,新的开发模式即使再厉害,如果让程序员赚不到钱,那也是很难推广开的 #挑战每日一条沸点#
展开
评论
2014年,研究机构Forrester Research发表的报告中提到“面向客户应用的新开发平台出现”,低代码开发平台的概念正式被提出,并且对低代码技术,用途和市场进行了基本概述。

2016年,Forrester确定使用低代码平台可以使应用程序生成速度提高六到二十倍。

2017年是一个分界点,在大型软件供应商中,17年之前只有Salesforce采用低代码平台。随后,微软、甲骨文、IBM和SAP等企业都纷纷加入了这个市场。此后,低代码行业迎来爆发期。 #挑战每日一条沸点#
展开
评论
基于amis-editor的低代码编辑器的封装

优缺点
优点:

首先值得肯定是社区生态、文档是很好的,包括上手程度其实并不难
缺点:

lowcode-editor只是暂时不开源文档补全,带来了未知的风险。在处理中也要大量翻阅源码做实践。
功能生态并不面向未来,你可以看到并没有出码、生产低代码组件等
并没有协议约束,术语约束,带来的沟通成本可能会更高
amis核心原理
amis官网其实也描述的很简单,amis 的渲染过程是将 json 转成对应的 React 组件。先通过 json 的 type 找到对应的 Component,然后把其他属性作为 props 传递过去完成渲染 #挑战每日一条沸点#
展开
评论
通常一门编程语言只要支持条件分支判定,变量赋值,循环或递归结构以及四则运算,就能认为是图灵完备的了。假如一个低代码平台支持嵌入执行图灵完备的自定义代码(如 Javascript)并与低代码系统内部联动,即是说完备性传递给了低代码平台,或者这个低代码系统本身就图灵完备,那么理论上凡是传统编程能实现的任务,低代码平台也能实现(图灵等价)。根据此逻辑,用这类低代码平台去搭建低代码平台本身理论上是可行的,本文仅探讨此类低代码。 #挑战每日一条沸点#
展开
评论
Android架构共分五层,分别是:

应用层(Application)

各种上层运行的的app,包括系统内置app和第三方app,例如Launcher、Settings等

框架层(Java Framework)

提供给应用层使用的Java库,例如WMS,AMS,PMS,各种View等

Native层/Android运行环境

提供给Java Framework层使用的C/C++库,例如OpenGL

HAL层(硬件抽象层)

为Java Framework层提供硬件功能,例如相机、蓝牙、各种传感器等

内核层

支撑Android系统运行的Linux内核

#挑战每日一条沸点#
展开
评论
在过去十年,不管是前端的工具链还是客户端的版本交付效能等都在快速演进,面向未来,我们升级工程体系走向终端工程一体化,覆盖前端及客户端工程师从研发交付到运维的全生命周期,利用低代码、极速构建、全链路运维、Serverless 等新型的工程技术,在卓越工程标准推动下引领终端工程师走向卓越。

可以看到,低代码是可以作为实践终端的一种技术方案,并且将其放在了第一位,那么什么是低代码,低代码能做什么事情,为什么使用低代码可以让终端开发工程师变的更加卓越?低代码对我们普通的一线开发又能带来什么改变或者赋能? 好,接下来,我们就来聊一聊低代码。

#挑战每日一条沸点#
展开
评论

IO 同步、异步、 阻塞、非阻塞的区别:
同步or异步:等待返回结果是同步,不等待是异步。
阻塞or非阻塞:等待数据处理完成才返回为阻塞,不管数据是否处理完都返回为非阻塞。

bio(同步阻塞)和nio(同步非阻塞)例子:
bio:排队拿餐,等到制作完成就取餐
nio:取餐号在显示屏(channel通道)上,查看显示屏就能马上看到是否制作完成
异步:直接不管,让他发消息通知我
展开
评论
早期Android还处于萌芽状态,根本没有那么多的开发手册开发资料,也没有什么规范不规范,大家都是盲人摸象似的一点一点摸索,市场整体招聘要求堪称为零,那时说得上“Activity”就可以想想什么时候拎包入职了 #挑战每日一条沸点#
评论
用 Compose 加 scheme 路由的方式来处理界面跳转、曝光,就非常简单了, 每一个新界面就是一个 Composable,加上 @ComposeScheme 就完了

@ComposeScheme(
action = SchemeConst.ACTION_THINK_DETAIL,
alternativeHosts = [HolderActivity::class]
)
@SchemeLongArg(name = SchemeConst.ARG_ID)
@SchemeLongArg(name = SchemeConst.ARG_COMMENT_ID)
@Composable
fun ThinkDetailPage(navBackStackEntry: NavBackStackEntry) {
LogicPage(navBackStackEntry = navBackStackEntry) {
// content
}
}

@Composable
fun LogicPage(
navBackStackEntry: NavBackStackEntry,
saveToLatest: Boolean = false,
content: @Composable () -> Unit
) {
content()
LaunchedEffect(navBackStackEntry) {
val scheme = navBackStackEntry.arguments?.getString(SchemeKeys.KEY_ORIGIN)?.let { Uri.decode(it) }
if (scheme != null) {
// 上报 scheme,作为曝光
// 保存 scheme,如果用户退出了,直接重入这个界面。
// 这个在调试中很好用。例如某个界面,需要点5层才能进去,每次编译重启就要点5次才能看到这个界面,那就蛋疼了,所以如果每次把它记录起来,启动就进去,那开发就顺很多了
}
}
} #挑战每日一条沸点#
展开
评论
分类并非唯一,可以有不同角度,但都需遵从 MECE 原则(相互独立、完全穷尽) ,即做到不重不漏。

按页面加载链路分类:容器启动、资源加载、代码执行、数据获取、绘制渲染。

按资源性能分类:CPU、内存、本地 I/O、网络。该分类方法又被叫做 USE 方法(Utilization Saturation and Errors Method)。

按协作方分类:前端、客户端、数据后台、图片服务、浏览器引擎等。

按流程优化分类:前置、简化、拆分。

前置即调整流程,效果上可能是高优模块前置或并行,低优模块后置;

简化即缩减或取消流程,体积优化是简化,执行加速也是简化;

拆分即细粒度拆解流程,本身没有优化效果,是为了更好的进行前置和简

#挑战每日一条沸点#
展开
评论
低码影响的主要是内部页面开发(ToB),前端ToB仅仅是小部分。

chatGPT 不能替代程序员。AI长期乐观,短期悲观,目前资源门槛过高。

大环境问题,是所有行业的问题,“降本增效” 是企业成为主旋律。我们应该保持技术热忱

没有目标“向钱看”,有目标“向前看”。 #挑战每日一条沸点#
展开
评论
vue-tour 是一个轻量级、简单且可自定义的 Tour 插件,配置也算比较简单清晰,但只适用于 Vue2 的项目,具体效果可以直接参考对应的前面链接对应的内容。
driver.js 是一个强大而轻量级的普通 JavaScript 引擎,可在整个页面上驱动用户的注意力,只有 4kb 左右的体积,并且没有外部依赖,不仅高度可定制,还可以支持所有主流浏览器。 #挑战每日一条沸点#
展开
评论
个人成就
文章被阅读 364
掘力值 81
收藏集
0
关注标签
0
加入于