首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NodeJS学习之路5(路由设计)

欢迎Star、Fork:https://github.com/gefangshuai/ANodeBlog NodeJS路由规范遵循RESTful 规范,更多有关RESTful相关知识请参考RESTful...所以我们路由要针对这两部分用户分别进行设计,遵循原则是:普通用户:路由尽量简短明了(可参考简书);管理员用户:直观表达功能 普通用户路由 这里普通用户路由是指:普通用户就能操作功能模块...同样,对于管理者路由,在原来基础上,都以/dashboard/前缀表示。...dashboard/p/up/:id: 文章置顶 /dashboard/p/recommend/:id: 文章推荐 dashboard-u.js: /dashboard/u: 后台用户信息页 至此,所有路由已设计完毕...对于路由设计,尽量遵循标准规范,这样对于我们程序,可很好维护控制。

65920

2024 年疯狂学习几个框架。。

对于每个被介绍框架,我们都强调了它们最大优点,以便你了解它们在哪些方面表现出色,以及哪些方面可能会你自己尝试一下!...另一个重要事情是,它还有一个名为 Solid Start 元框架(目前处于测试版),它允许用户根据自己偏好以不同方式渲染应用程序,具有基于文件路由、actions、API 路由和中间件等功能。...它提供了路由器、构建优化、不同渲染和预渲染方式、图像优化等。...简而言之,可恢复性基于在服务器上暂停执行并在客户端上恢复执行,而无需重放和下载所有应用程序逻辑。...结论 我们提到所有框架和库之间最大共同点是熟悉度。每个人都寻求以一种建立在他们当前知识基础上方式来吸引潜在新开发者,而不是做完全新事情,这是一个非常酷概念。

22110
您找到你想要的搜索结果了吗?
是的
没有找到

虚拟DOMdiff算法过程动起来了

去年写了一篇文章手写一个虚拟DOM库,彻底你理解diff算法介绍虚拟DOMpatch过程和diff算法过程,当时使用是双端diff算法,今年看到了Vue3使用已经是快速diff算法,所以也写一篇来记录一下...需要说明是这个动画只包含diff算法过程,不包含patch过程。...我们这个diff过程动起来,首先要找到动画对象都有哪些,从函数参数开始看,首先oldChildren和 newChildren两个VNode列表是必不可少,可以通过两个水平列表表示,然后是四个指针...() => { resolve() }, t || 3000 ) }) } 然后我们使用async/await语法,就可以轻松在循环中实现等待了...newStartVNode = newChildren[++newStartIdx] } 我们表现出头尾比较过程,其实就在这些if条件中,也就是要在每个if条件中停留一段时间,那么可以直接这样吗

88820

使用 Go 过程中犯过低级错误

循环中引用迭代器变量 循环迭代器变量是一个在每次循环迭代中采用不同值单个变量。如果我们一直使用一个变量,可能会导致不可预知行为。...如果您真的需要在循环内使用 defer,您可能需要委托另一个函数来完成这项工作。...不使用 -race 选项 经常见到一个错误是在测试 go 应用时候没有带 -race 选项。...显然,Go 竞争检查 (race detector) 无法解决每一个并发问题,然而它依然是一个有价值工具,我们应当确保在做测试时候(go test) 始终使用它。...timeout_test.go:618 +0x298 testing.tRunner() src/testing/testing.go:301 +0xe8 总结 如上是初学golang过程中经常出现一些低级错误

2K10

AIoT应用创新大赛--项目做主,使用GN+Ninja来完成构建系统(VSCode开发)

而本次比赛中,如果不考虑使用官方IDE的话,又不想用makefile(主要是不会写),所以还是尝试着用GN+Ninja完成了rt1062构建系统。...(项目做主,折腾不嫌事儿多)。...2、编译构建命令: ninja -C out/${BOARD} 3、建议使用方式: 比较懒,喜欢直接在~/.bashrc中配置好BOARD环境变量,并设置命令别名: alias gbuild='gn...}.hex 5、添加源码 完成功能不可避免需要修改源码,添加c源文件和.h头文件。...从组件解耦来说,真正能做到所有的组件都能通过健康依赖完成整个项目构建(没有循环依赖和恶性依赖),功能解耦就做不错了。

1.4K10

今天绑匪背诵linux所有命令,告诉他今天只能背基础命令,明天再背高级命令

查看目录命令 1、查看目录命令使用 命令 说明 ls 查看当前目录信息 tree 以树状方式显示目录信息 2、切换目录命令使用 命令 说明 cd 目录 切换到指定目录 cd ~ 切换到当前用户主目录...切换到当前目录 cd - 切换到上一次目录 3、创建、删除文件及目录命令使用 命令 说明 touch 文件名 创建指定文件 mkdir 目录名 创建目录(文件夹) rm 文件名或者目录名 删除指定文件或者目录...rmdir 目录名 删除空目录 4、查看命令帮助方式 —help 使用说明:命令 --help man 使用说明:man 命令 查看命令帮助目的说明: 查看命令帮助目的是查看命令选项信息 5、ls...命令选项使用 命令选项 说明 -l 以列表方式显示 -h 以大小为单位显示,默认是字节 -a 显示隐藏文件和隐藏目录 6、mkdir和rm命令选项 1、mkdir命令选项 命令选项 说明 -p 创建所依赖文件夹...8、重定向命令 1、重定向命令介绍:重定向也称为输出重定向,把在终端执行命令结果保存到目标文件 2、重定向命令使用 命令 说明 > 如果文件存在会覆盖原有文件内容,相当于文件操作中“w”模式 >

26910

是什么节省了60%编码时间?使用MBG

工欲善其事,必先利其器,是时候祭出神器了:MyBatis Generator(简称:MBG),它是一个用于所有版本MyBatis代码自动生成器。...它可以根据数据库表自动为项目生产对应实体类、Mapper、DAO,包括简单CRUD数据库操作(创建、查询、更新、删除)。解放了我们双手,不必做重复性机械工作。...datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 创建一个SpringBoot项目 以使用...--defaultModelType用于指定生成对象样式,flat表示每一张表只生成一个实体类,这个实体类包含表中所有字段。...="JDBC"/> 以上就是最基础简介配置了,在实际开发过程中就够用。

35130

女朋友居然使用Android Studio和夜神模拟器来帮她浏览各位大佬文章!

Hello,你好呀,是灰小猿!一个超会写bug程序猿!...最近某学妹在众多大佬栽培下学到了不少东西, 虽然学妹没等到,但是等到可爱女朋友来找我帮忙了,她居然说Android Studio自带真机不好用,还想帮她在安卓虚拟机上浏览各位大佬文章,看来女朋友已经不限于使用自己电脑或手机来学习文章中知识了...然后上来就是一个左正蹬一个右边腿一个左刺拳,“啪”电脑就打开了! 上来就打开了Android Studio就要手写代码,女友说:“这不行,真机调试老出问题,不能用自带真机!”...她打开cmd命令行找到到“夜神模拟器”安装目录,她居然要手动输入路径,这在一个程序员男友面前怎么行, 先是找到“夜神模拟器”安装路径“\Nox\bin”,一个CTRL+L,再输入一个“cmd”...紧接着,在命令行输入了: nox_adb.exe connect 127.0.0.1:62001 她重新运行Android Studio,可是还是不显示模拟器设备,这好办,程序员通用道路,

50820

使用了这个神器,代码bug少了一半

最近一段时间,我们团队在生产环境出现了几次线上问题,有部分比较严重,直接影响用户功能使用,惹得领导不高兴了,想办法提升代码质量,这时候项目工程代码质量检测神器——SonarQube,出现在我们视线当中...总览: 在典型开发过程中: 开发人员在IDE中开发和合并代码(最好使用SonarLint在编辑器中接收即时反馈),然后将其代码签入ALM。...SonarQube实例包含三个组件: SonarQube服务器运行以下过程: 提供SonarQube用户界面的Web服务器。 基于Elasticsearch搜索服务器。...,在这里就不过多介绍了,网上有很多教程。...此外,还有mybatis插件 gitee地址:https://gitee.com/mirrors/sonar-mybatis 个人用过,觉得作用不大,不过可以基于这个代码扩展自己需要功能。

1.1K10

使用了这个神器,代码bug少了一半

最近一段时间,我们团队在生产环境出现了几次线上问题,有部分比较严重,直接影响用户功能使用,惹得领导不高兴了,想办法提升代码质量,这时候项目工程代码质量检测神器——SonarQube,出现在我们视线当中...在典型开发过程中: 开发人员在IDE中开发和合并代码(最好使用SonarLint在编辑器中接收即时反馈),然后将其代码签入ALM。...SonarQube服务器运行以下过程: 提供SonarQube用户界面的Web服务器。 基于Elasticsearch搜索服务器。...,在这里就不过多介绍了,网上有很多教程。...此外,还有mybatis插件 gitee地址:https://gitee.com/mirrors/sonar-mybatis 个人用过,觉得作用不大,不过可以基于这个代码扩展自己需要功能。

2K40

推荐几个常用Chrome插件 —— 使用Github效率翻倍

以下文章来源于code秘密花园 ,作者ConardLi 推荐几个常用Chrome插件 —— 使用Github效率翻倍 Chrome 可以说是全世界最受欢迎浏览器了,其快速、稳定性能...个人安装了非常多 Chrome 插件,这些插件可以在使用浏览器各个方面帮助我提升效率,今天就推荐一些 Github 相关 Chrome 插件。...点击按钮跳转到更清晰 git 历史页面,展示该文件历史变更情况。相比直接使用 git log ,这种方式更友好。...下载方式:Chrome 商店搜索 Enhanced GitHub OctoLinker 你看代码时候,可以进行更高效代码连接跳转。...是用下面这个网站下载 crx ,只需要输入插件在 chrome 商店 url 即可:https://chrome-extension-downloader.com/

1.1K10

推荐几个常用Chrome插件 —— 使用Github效率翻倍

推荐几个常用Chrome插件 —— 使用Github效率翻倍 Chrome 可以说是全世界最受欢迎浏览器了,其快速、稳定性能,简洁设计以及多平台同步功能都深受用户推崇,然而很多人成为他忠粉还是因为它强大拓展性...个人安装了非常多 Chrome 插件,这些插件可以在使用浏览器各个方面帮助我提升效率,今天就推荐一些 Github 相关 Chrome 插件。...点击按钮跳转到更清晰 git 历史页面,展示该文件历史变更情况。相比直接使用 git log ,这种方式更友好。...下载方式:Chrome 商店搜索 Enhanced GitHub OctoLinker 你看代码时候,可以进行更高效代码连接跳转。...是用下面这个网站下载 crx ,只需要输入插件在 chrome 商店 url 即可:https://chrome-extension-downloader.com/

74220

硬核 | 使用spring cache接口性能瞬间提升了100倍

笔者之前做商城项目时,做过商城首页商品分类功能。当时考虑分类是放在商城首页,以后流量大,而且不经常变动,为了提升首页访问速度,考虑使用缓存。对于java开发而言,首先缓存当然是redis。...日志打印在这里就不多说了,不是本文重点,我们重点说一下redis cache。 优化后系统流程图: ?...基本用法 项目中如何使用 工作原理 一、基本用法 SpringCache缓存功能实现是依靠下面的这几个注解完成。...或者关注一下公众账号,后面会有专门AOP专题)。...:苏三说技术,或者帮忙点赞或转发,坚持原创不易,您支持是坚持最大动力。

2.4K33

硬核 | 使用spring cache接口性能瞬间提升了100倍

笔者之前做商城项目时,做过商城首页商品分类功能。当时考虑分类是放在商城首页,以后流量大,而且不经常变动,为了提升首页访问速度,考虑使用缓存。对于java开发而言,首先缓存当然是redis。...日志打印在这里就不多说了,不是本文重点,我们重点说一下redis cache。...基本用法 项目中如何使用 工作原理 一、基本用法 SpringCache缓存功能实现是依靠下面的这几个注解完成。...说明缓存生效了,下面介绍一下spring cache工作原理 三、工作原理 通过上面的例子,相当朋友们对spring cache在项目中用法有了一定认识。那么它工作原理是什么呢?...或者关注一下公众账号,后面会有专门AOP专题)。

32820

很开心,在使用mybatis过程踩到一个坑。

在实际开发过程踩到了mybatis一个坑,觉得值得记录、分享一下。 先说说这个坑是什么吧。如果你踩过这个坑,并且知道具体原因,那这篇文章可以加深你印象。...常规方法是加断点进行追踪,但是分享一个当时排查"骚"操作,定位问题非常快。那就是逆向排查。 逆向排查法 现在我们确定了是sql拼接问题,通过日志,也拿到了完整sql。...但是,你再回过头想一最开始改造mapper.xml是怎么操作: 改造点很简单,在xml文件里面ctrl+c一下原来if标签,再ctrl+v出来改改里面的名字就好了。...是的,无脑使用了CV大法。导致在欢声笑语中写出了bug。orderStatus传入类型是一个Byte,和""做判断有任何意义吗?...但是也感谢这次无脑CV,踩到了这个坑,并且研究清楚了。get到了新知识点。 同时,也感谢自己做了单元测试,不然测试同学测试时候抛出这样问题,我会觉得他不会用,他会觉得是弱鸡。

1K10

很开心,在使用mybatis过程踩到一个坑。

这是why技术第14篇原创文章 在实际开发过程踩到了mybatis一个坑,觉得值得记录、分享一下。 先说说这个坑是什么吧。...常规方法是加断点进行追踪,但是分享一个当时排查"骚"操作,定位问题非常快。那就是逆向排查。 逆向排查法 现在我们确定了是sql拼接问题,通过日志,也拿到了完整sql。...但是,你再回过头想一最开始改造mapper.xml是怎么操作: 改造点很简单,在xml文件里面ctrl+c一下原来if标签,再ctrl+v出来改改里面的名字就好了。...是的,无脑使用了CV大法。导致在欢声笑语中写出了bug。orderStatus传入类型是一个Byte,和""做判断有任何意义吗?...但是也感谢这次无脑CV,踩到了这个坑,并且研究清楚了。get到了新知识点。 同时,也感谢自己做了单元测试,不然测试同学测试时候抛出这样问题,我会觉得他不会用,他会觉得是弱鸡。

1.6K10

不管你信不信,面试官使用 JS 计算 LocalStorage 容量!

LocalStorage 是浏览器提供一种本地会话存储方式,最大支持 5M 存储空间。 虽说它存储空间是有上限,但是相信很多同学都和我一样,在日常开发中其实并没有关注过这个问题。...此时,我们统计所有累积数据,这就是总存储量! 在 JavaScript 中,字符串使用 UTF-16 编码存储。这意味着每个字符通常占用 2 个字节内存空间。...但是,对于某些特殊字符(例如表情符号或某些不太常见语言字符),它们可能最多使用 4 个字节。...因此,官网中所说 5MB,其单位就是字符串长度。 03:如何计算已使用容量 要计算已使用容量,我们需要做就是迭代 LocalStorage 上存储属性并计算每个存储属性长度。...const computedUse = () => { let cache = 0; // 循环访问LocalStore中所有 key for(let key in localStorage

9810

一款直击痛点优秀http框架,超高效率完成了和第三方接口对接

当然知道有很多优秀大名鼎鼎http开源框架可以实现任何形式http调用,在多年开发经验中都有使用过。...于是,发现了一款优秀开源http框架,能屏蔽不同细节http api所带来所有差异。能通过简单配置像调用rpc框架一样完成极为复杂http调用。...用Forest最终完成了和多个服务商api对接项目,这些风格迥异API,仅用了1个小时时间就把他们转化为了本地方法。然后项目顺利上线。...4.两个很棒功能 这里不对使用方式和配置方式一一描述,有兴趣可以去阅读详细文档: https://dt_flys.gitee.io/forest 这里只想分析这个框架2个认为比较好功能 4.1...然后根据别人经验来修改自己代码。 Forest对于这方面也很周到,底层完美封装了对https单双向证书支持。也是只要通过简单配置就能迅速完成

1.1K20

用 Python 实现每秒处理 120 万次 HTTP 请求

要感谢 asyncio,可以同时编写同步和异步代码。...当 Japronto 收到数据并成功解析出请求序列时,它会尝试尽可能快把这些请求执行完成,并以正确顺序合并所有结果,然后只执行一次系统调用发送数据给客户端。...然而事情并不总是那么完美,有时候请求需要耗费很长时间去处理,等待完成过程增加了不必要延迟。 当我们做优化时,有必要考虑系统调用成本和请求预期完成时间。...开源贡献者们,需要你们帮助 已经连续不断开发 Japronto 超过三个月,不光在每一个工作日,周末也无休。除了每天工作外,所有时间精力都投入到这个项目上了。...是时候和社区分享劳动果实了。

81660

用 Python 实现每秒处理 120 万次 HTTP 请求

要感谢 asyncio,可以同时编写同步和异步代码。 ?...当 Japronto 收到数据并成功解析出请求序列时,它会尝试尽可能快把这些请求执行完成,并以正确顺序合并所有结果,然后只执行一次系统调用发送数据给客户端。...然而事情并不总是那么完美,有时候请求需要耗费很长时间去处理,等待完成过程增加了不必要延迟。 当我们做优化时,有必要考虑系统调用成本和请求预期完成时间。 ?...比如,在处理路由时,先做 URL 解码再进行路由匹配。 开源贡献者们,需要你们帮助 已经连续不断开发 Japronto 超过三个月,不光在每一个工作日,周末也无休。...除了每天工作外,所有时间精力都投入到这个项目上了。 是时候和社区分享劳动果实了。

97530
领券