ToB企服应用市场:ToB评测及商务社交产业平台

标题: TypeScript实战——ChatGPT前端自顺应手机端,PC端 [打印本页]

作者: 西河刘卡车医    时间: 2024-7-23 17:36
标题: TypeScript实战——ChatGPT前端自顺应手机端,PC端
前言


前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,忍不住分享一下给各人:https://www.captainbed.cn/z

可以在线体验哦:体验地址


  
弁言

ChatGPT是由OpenAI开发的一种基于语言模型的对话系统。它是GPT(Generative Pre-trained Transformer)模型的一个变种,通过在大规模的互联网文本数据上进行预练习,学习到了丰富的语言知识和语义理解本领。
ChatGPT可以用于多种对话任务,包括复兴问题、提供信息、进行闲聊等。它可以理解和生成自然语言,并且可以大概根据上下文进行连贯的对话。ChatGPT还具备肯定的知识推理本领,可以复兴一些常见问题,并提供公道的解释。
先看结果

可以在线体验哦:体验地址
PC端



手机端



实现原理

焦点css
  1. @mixin container {
  2.   background-color: var(--white);
  3.   border: var(--border-in-light);
  4.   border-radius: 10px;
  5.   box-shadow: var(--shadow);
  6.   color: var(--black);
  7.   background-color: var(--white);
  8.   min-width: 200px;
  9.   min-height: 480px;
  10.   max-width: 1200px;
  11.   display: flex;
  12.   overflow: hidden;
  13.   box-sizing: border-box;
  14.   width: var(--window-width);
  15.   height: var(--window-height);
  16. }
  17. .container {
  18.   @include container();
  19. }
  20. @media only screen and (min-width: 200px) {
  21.   .tight-container {
  22.     --window-width: 100vw;
  23.     --window-height: var(--full-height);
  24.     --window-content-width: calc(100% - var(--sidebar-width));
  25.     @include container();
  26.     max-width: 100vw;
  27.     max-height: var(--full-height);
  28.     border-radius: 0;
  29.     border: 0;
  30.   }
  31. }
  32. .window-content {
  33.   width: var(--window-content-width);
  34.   height: 100%;
  35.   display: flex;
  36.   flex-direction: column;
  37. }
复制代码
解释

这段代码是一个CSS样式表,定义了一个名为"container"的混淆器(mixin),以及一些相干的样式规则。
混淆器"container"定义了一个容器的样式,包括配景颜色、边框、圆角、阴影、文字颜色、最小宽度和高度、最大宽度等。它还设置了容器的体现方式为flex,并且设置了溢出隐藏和盒模型为border-box。末了,它使用了自定义的CSS变量来设置容器的宽度和高度。
在样式表中,使用".container"选择器来应用"container"混淆器定义的样式。
接下来,使用@media查询来根据装备屏幕尺寸应用差别的样式。在这个例子中,当屏幕宽度大于即是200px时,会应用".tight-container"选择器定义的样式。这些样式重新定义了容器的宽度和高度,以及一些其他属性,使容器顺应屏幕的宽度和高度。
末了,定义了".window-content"选择器的样式,设置了窗口内容的宽度为变量"–window-content-width",高度为100%,并且设置了flex布局的垂直方向为列。
包的架构

目录

  1. 第Ⅰ部分 精通TypeScript语法
  2. 第1章 熟悉TypeScript 3
  3. 1.1 使用TypeScript编程的理由 3
  4. 1.2 典型的TypeScript工作流 7
  5. 1.3 使用TypeScript编译器 8
  6. 1.4 了解Visual Studio Code 12
  7. 1.5 本章小结 14
  8. 第2章 基本类型与自定义类型 15
  9. 2.1 声明变量类型 15
  10. 2.1.1 基本类型标注 16
  11. 2.1.2 函数声明中的类型 20
  12. 2.1.3 union类型 21
  13. 2.2 定义自定义类型 23
  14. 2.2.1 使用type关键字 24
  15. 2.2.2 将类用作自定义类型 25
  16. 2.2.3 将接口用作自定义类型 27
  17. 2.2.4 结构化还是名义类型系统 29
  18. 2.2.5 自定义类型的unions 31
  19. 2.3 any和unknown类型,以及用户定义的类型保护 33
  20. 2.4 微型项目 35
  21. 2.5 本章小结 36
  22. 第3章 面向对象编程的类和接口 37
  23. 3.1 类 37
  24. 3.1.1 开始了解类继承 38
  25. 3.1.2 访问修饰符public、private、protected 39
  26. 3.1.3 静态变量及singleton(单例)设计模式示例 41
  27. 3.1.4 super()方法与super关键字 43
  28. 3.1.5 抽象类 45
  29. 3.1.6 方法重载 48
  30. 3.2 使用interface 53
  31. 3.2.1 执行合同 53
  32. 3.2.2 扩展接口 55
  33. 3.2.3 接口编程 57
  34. 3.3 本章小结 60
  35. 第4章 使用枚举和泛型 61
  36. 4.1 使用枚举 61
  37. 4.1.1 数字型枚举 61
  38. 4.1.2 字符串枚举 64
  39. 4.1.3 使用常量枚举 66
  40. 4.2 使用泛型 67
  41. 4.2.1 理解泛型 67
  42. 4.2.2 创建自己的泛型类型 72
  43. 4.2.3 创建泛型函数 76
  44. 4.2.4 强制执行高阶函数的返回类型 80
  45. 4.3 本章小结 81
  46. 第5章 装饰器与高级类型 83
  47. 5.1 装饰器 84
  48. 5.1.1 创建类装饰器 85
  49. 5.1.2 创建函数装饰器 90
  50. 5.2 映射类型 92
  51. 5.2.1 只读映射类型 92
  52. 5.2.2 声明自己的映射类型 96
  53. 5.2.3 其他内置的映射类型 97
  54. 5.3 条件类型 99
  55. 5.4 本章小结 104
  56. 第6章 开发工具集 105
  57. 6.1 源映射 106
  58. 6.2 TSLint linter 108
  59. 6.3 使用Webpack绑定代码 111
  60. 6.3.1 使用Webpack绑定JavaScript 112
  61. 6.3.2 使用Webpack绑定TypeScript 116
  62. 6.4 使用Babel编译器 119
  63. 6.4.1 在JavaScript中使用Babel 122
  64. 6.4.2 在TypeScript中使用Babel 124
  65. 6.4.3 在TypeScript与Webpack中使用Babel 126
  66. 6.5 工具介绍 128
  67. 6.5.1 Deno介绍 128
  68. 6.5.2 ncc介绍 129
  69. 6.6 本章小结 132
  70. 第7章 在项目中同时使用TypeScript和JavaScript 133
  71. 7.1 类型定义文件 133
  72. 7.1.1 了解类型定义文件 134
  73. 7.1.2 类型定义文件与IDE 135
  74. 7.1.3 shim与类型定义 138
  75. 7.1.4 创建自己的类型定义文件 139
  76. 7.2 使用JavaScript库的TypeScript应用程序示例 140
  77. 7.3 在JavaScript项目中使用TypeScript 148
  78. 7.4 本章小结 151
  79. 第Ⅱ部分 基于TypeScript的区块链应用
  80. 第8章 开发区块链应用 155
  81. 8.1 区块链简介 156
  82. 8.1.1 加密哈希函数 157
  83. 8.1.2 区块由什么组成 159
  84. 8.1.3 什么是区块挖掘 160
  85. 8.1.4 哈希和随机数的迷你项目 162
  86. 8.2 开发第一个区块链 164
  87. 8.2.1 项目结构 164
  88. 8.2.2 创建一个原始区块链 167
  89. 8.2.3 使用工作证明创建区块链 170
  90. 8.3 本章小结 173
  91. 第9章 开发基于浏览器的区块链节点 175
  92. 9.1 运行区块链Web应用 176
  93. 9.1.1 项目结构 176
  94. 9.1.2 使用npm脚本部署应用 178
  95. 9.1.3 使用区块链Web应用 179
  96. 9.2 Web客户端 182
  97. 9.3 挖掘区块 187
  98. 9.4 使用crypto API生成哈希 191
  99. 9.5 独立的区块链客户端 194
  100. 9.6 在浏览器中调试TypeScript 196
  101. 9.7 本章小结 198
  102. 第10章 使用Node.js、TypeScript和WebSocket进行客户端-服务器通信 199
  103. 10.1 使用最长链规则解决冲突 200
  104. 10.2 为区块链添加服务器 202
  105. 10.3 项目结构 203
  106. 10.4 项目的配置文件 204
  107. 10.4.1 配置TypeScript编译环境 204
  108. 10.4.2 package.json包含什么 206
  109. 10.4.3 配置nodemon 207
  110. 10.4.4 运行区块链App 208
  111. 10.5 WebSocket简介 213
  112. 10.5.1 HTTP和WebSocket协议的对比 214
  113. 10.5.2 将数据从节点服务器推送到普通客户端 215
  114. 10.6 回顾通知工作流 219
  115. 10.6.1 回顾服务器代码 221
  116. 10.6.2 回顾客户端代码 231
  117. 10.7 本章小结 240
  118. 第11章 使用TypeScript开发Angular应用程序 241
  119. 11.1 使用Angular CLI生成并运行一个新的应用程序 242
  120. 11.2 查看生成的App 244
  121. 11.3 Angular服务和依赖注入 250
  122. 11.4 使用ProductService注入的应用 253
  123. 11.5 使用TypeScript进行抽象编程 255
  124. 11.6 开始处理HTTP请求 257
  125. 11.7 表单入门 261
  126. 11.8 Router基础 265
  127. 11.9 本章小结 269
  128. 第12章 使用Angular开发区块链客户端 271
  129. 12.1 启动Angular区块链应用程序 271
  130. 12.2 回顾AppComponent 273
  131. 12.3 回顾TransactionFormComponent 277
  132. 12.4 回顾BlockComponent 278
  133. 12.5 回顾服务 281
  134. 12.6 本章小结 283
  135. 第13章 使用TypeScript开发React.js应用程序 285
  136. 13.1 使用React开发最简单的网页 286
  137. 13.2 使用Create React App生成并运行一个新应用 288
  138. 13.3 管理组件的状态 293
  139. 13.3.1 向基于类的组件添加状态 293
  140. 13.3.2 使用钩子管理函数组件的状态 294
  141. 13.4 开发一个天气应用程序 297
  142. 13.4.1 向App组件添加状态钩子 298
  143. 13.4.2 在App组件中使用useEffect钩子获取数据 300
  144. 13.4.3 使用props 306
  145. 13.4.4 子组件如何将数据传递给其父组件 311
  146. 13.5 Virtual DOM 313
  147. 13.6 本章小结 314
  148. 第14章 使用React.js开发区块链客户端 315
  149. 14.1 启动客户端和消息服务器 315
  150. 14.2 lib目录中发生的变化 318
  151. 14.3 smart App组件 320
  152. 14.3.1 添加事务 322
  153. 14.3.2 生成一个新区块 324
  154. 14.3.3 解释useEffect()钩子函数 325
  155. 14.3.4 使用useCallback()钩子的记忆化缓存(Memoization) 327
  156. 14.4 presentation组件——TransactionForm 330
  157. 14.5 presentation组件——PendingTransactionsPanel 333
  158. 14.6 presentation组件——BlocksPanel和BlockComponent 335
  159. 14.7 本章小结 337
  160. 第15章 使用TypeScript开发Vue.js应用程序 339
  161. 15.1 使用Vue开发最简单的Web页面 340
  162. 15.2 使用Vue CLI生成和运行新应用程序 343
  163. 15.3 开发有路由支持的单页应用程序 349
  164. 15.3.1 使用Vue Router生成一个新应用程序 350
  165. 15.3.2 在主视图中显示products列表 353
  166. 15.3.3 使用Vue Router传递数据 358
  167. 15.4 本章小结 362
  168. 第16章 用Vue.js开发区块链客户端 365
  169. 16.1 启动客户端和消息服务器 366
  170. 16.2 App组件 369
  171. 16.3 presentation组件——TransactionForm 372
  172. 16.4 presentation组件——PendingTransactionsPanel 376
  173. 16.5 presentation组件——BlocksPanel和Block 378
  174. 16.6 本章小结 382
  175. 后记 382
  176. 附录A JavaScript基础知识 383
  177. A.1 如何运行代码示例 383
  178. A.2 关键字let和const 383
  179. A.2.1 var关键字和hoisting(提升) 384
  180. A.2.2 使用let和const的块级作用域 385
  181. A.3 字面量模板 386
  182. A.4 可选参数和默认值 388
  183. A.5 箭头函数表达式 389
  184. A.6 rest运算符 391
  185. A.7 spread运算符 393
  186. A.8 解构 394
  187. A.8.1 解构对象 394
  188. A.8.2 解构数组 397
  189. A.9 类和继承 398
  190. A.9.1 构造函数 400
  191. A.9.2 super关键字和super函数 401
  192. A.9.3 静态类成员 402
  193. A.10 异步处理 403
  194. A.10.1 回调地狱 404
  195. A.10.2 promise 404
  196. A.10.3 同时执行多个promise 407
  197. A.10.4 async-await 408
  198. A.11 模块 410
  199. A.12 转换器 413
复制代码
前 言
   《TypeScript入门与区块链项目实战》是一本有关编程语言TypeScript的册本。据开发者在Stack
Overflow上的调查,TypeScript是最受欢迎的编程语言之一。
  若每天使用TypeScript,就会更加喜好它。对TypeScript的喜好源于它允许我们将关注点放在要解决的紧张问题上,而不必将精力放在诸如对象属性名的输入错误等问题上。与用JavaScript编写的代码相比,在TypeScript程序中,在运行时堕落的可能性更低。同时,许多IDE都能提供很棒的TypeScript支持,并且可以从我们的项目使用的第三方库中引导我们穿过API的“迷宫”。