目录
简介
本文翻译自 Should I useState or useReducer?,原文作者为 Kent C. Dodds。
本文通过两个个示例讲解了useState和useReducer的适用场景,同时介绍了一个useReducer的简单用法。
另外文末将会附上作者原文中讲解代码的视频。
本文翻译自 Should I useState or useReducer?,原文作者为 Kent C. Dodds。
本文通过两个个示例讲解了useState和useReducer的适用场景,同时介绍了一个useReducer的简单用法。
另外文末将会附上作者原文中讲解代码的视频。
本文翻译自作者 Mark Brown 的 Using ES Modules in the Browser Today
本文将向您展示如何在浏览器中使用ES Modules。
本文翻译自作者 Rich Harris 的 Why I don’t use web components
该文章引起了许多讨论,建议阅后前往原文评论区观摩 :)
本文翻译自 REST vs GraphQL APIs, the Good, the Bad, the Ugly
自从Facebook发布GraphQL以来,在API世界中引起了一股 “用GraphQL替换REST” 的潮流。GraphQL确实解决了RESTful结构在开发中出现的诸多问题,但与之相对的,也带来了一揽子需要我们提前评估的风险。
GraphQL不只是 RESTful API 的简单的发展式迭代式的替换,所以本篇文章将详细阐述GraphQl的优缺点,以及什么样的项目适合使用GraphQL。
Rails 把模型的类名转换成复数,然后查找对应的数据表。例如,模型类名为 Book,数据表就是 books。如果类名由多个单词组成,应该按照 Ruby 的约定,使用驼峰式命名法,这时对应的数据库表将使用下划线分隔各单词。因此:
模型/类 | 表/模式 |
---|---|
Article | articles |
LineItem | line_items |
Deer | deers |
Mouse | mice |
Person | people |
根据字段的作用不同,Active Record 对数据库表中的字段命名也做了相应的约定:
外键:使用 singularized_table_name_id
形式命名,例如 item_id
,order_id
。创建模型关联后,Active Record 会查找这个字段;
主键:默认情况下,Active Record 使用整数字段 id 作为表的主键。使用 Active Record 迁移创建数据库表时,会自动创建这个字段;
还有一些可选的字段,能为 Active Record 实例添加更多的功能:
created_at
:创建记录时,自动设为当前的日期和时间;updated_at
:更新记录时,自动设为当前的日期和时间;lock_version
:在模型中添加乐观锁;type
:让模型使用单表继承;(association_name)_type
:存储多态关联的类型;(table_name)_count
:缓存所关联对象的数量。比如说,一个 Article 有多个 Comment,那么 comments_count 列存储各篇文章现有的评论数量;浏览器(用户)向服务器提出请求时,首先经过route对链接进行解析后并导向相应的controller,并根据以下表格,自动查找并执行定义在controller内的action:
Rails Path | Url Path | Http Type | Controller action |
---|---|---|---|
missions_path | /missions | GET | index |
missions_path | /missions | POST | create |
new_team_mission_path | /missions/new | POST | new |
edit_mission_path | /missions/id/edit | GET | edit |
missions_path | /missions/id | GET | show |
missions_path | /missions/id | PATCH | update |
missions_path | /missions/id | DELETE | destroy |
controller同时肩负向用户反馈数据的任务,包括如html.erb,js.erb,json等数据,状态码等;
在controller中,同时与负责管理数据的model相关联,执行包括数据的增删改查等操作,以将数据放入模板文件传递回给用户;
model可包含对数据的处理方法,如校验等操作;
浏览器(用户)接收到来自controller的模板或数据,或渲染,或通过js操作dom,等,以达到改变view的目的;
至此,形成一个响应循环。